使用生成的datareader对Gridview进行排序和分页

时间:2011-08-31 03:48:09

标签: c# asp.net

我一直在寻找一些关于如何使用自定义生成的datareader对gridview进行排序的示例。

以下是我如何使用datareader绑定gridview。

        sqlConn.Open();
        SqlDataReader reader = cmd.ExecuteReader();
        gridBookings.DataSource = reader;
        gridBookings.DataBind();
        sqlConn.Close();

这是gridview的排序事件处理程序

protected void gridBookings_Sorted(object sender, EventArgs e)
{
    gridBookings.DataBind();
}

这是gridview标记。

<asp:GridView ID="gridBookings" runat="server"  CssClass="zebra-striped" 
        EmptyDataText="No data available, sir" ShowHeaderWhenEmpty="True" 
        ClientIDMode="Static" AutoGenerateColumns="False" AllowSorting="True" 
        onsorted="gridBookings_Sorted">
<columns>
<asp:BoundField HeaderText="BookingID" DataField="booking_id" SortExpression="booking_id"/><asp:BoundField HeaderText="CustomerID" DataField="cus_id" SortExpression="cus_id" />
<!--More bound fields-->
</columns>
</asp:GridView>

这是我点击标题栏中的链接按钮时出现的错误。

  

GridView'gridBookings'触发了未处理的事件排序。

有什么想法吗?

PS。在侧面问题上,当任何数据没有与它绑定时,如何用空行显示空白网格视图?

3 个答案:

答案 0 :(得分:1)

您正在订阅“已排序”活动...但您还需要订阅“排序”事件。你应该真的升级到更新版本的ASP.NET:)

答案 1 :(得分:1)

单击对列进行排序的超链接时会发生Gridview的排序事件,但之前 GridView控件会处理排序操作。单击排序列的超链接时会发生排序事件,但 后,GridView控件会处理排序操作。通常我们使用gridviews排序事件来排序gridview中的项目。查看this链接,了解在gridview

中对项目进行排序的详细示例

答案 2 :(得分:0)

<asp:GridView ID="gridBookings" runat="server"  CssClass="zebra-striped" 
    EmptyDataText="No data available, sir" ShowHeaderWhenEmpty="True" 
    ClientIDMode="Static" AutoGenerateColumns="False" AllowSorting="True" 
    onsorted="gridBookings_Sorted"
    onsorting="gridBookings_Sorting">

protected void gridBookings_Sorting(object sender, GridViewSortEventArgs e)
{
    //handled onsorting
}