点网格排序问题

时间:2010-06-30 08:45:40

标签: c# .net asp.net gridview sorting

我有一个Web应用程序(使用C#)。我有一个GridView,并希望能够对其内容进行排序。我添加了标签

...

AllowSorting="True"
onsorting="MyGridView_Sorting">

asp:BoundField DataField="NAME" HeaderText="Name" SortExpression="NAME" 

在GridView内部。我已经实现了MyGridView_Sorting方法。事情是:它不起作用。什么也没做。标题文本“名称”看起来像一个活动链接,但点击不会产生任何效果。在里面设一个断点

MyGridView_Sorting

表明它实际上永远不会进入函数内部。怎么了?我错过了什么?

感谢!!!

< asp:GridView ID="MyGridView"
runat="server"                               
CssClass="pvgrid" 
Width="90%" 
AutoGenerateColumns="false"
OnRowCommand="MyGridView_RowCommand"
AllowPaging="True" 
PageSize="10" 
AllowSorting="True"
onsorting="MyGridView_Sorting" 
onpageindexchanging="MyGridView_PageIndexChanging" >

< Columns >
< asp:BoundField DataField="NAME" HeaderText="Name" SortExpression="NAME"  />
< /Columns >
< /asp:GridView >


protected void MyGridView_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
    MyGridView.PageIndex = e.NewPageIndex;
    MyGridView.DataBind();
}

protected void MyGridView_Sorting(object sender, GridViewSortEventArgs e)
{
    DataTable dataTable = MyGridView.DataSource as DataTable;

    if (dataTable != null)
    {
        DataView dataView = new DataView(dataTable);
        dataView.Sort = e.SortExpression + " "+ ConvertSortDirectionToSql(e.SortDirection);
        MyGridView.DataSource = dataView;
        MyGridView.DataBind();
    }
}

1 个答案:

答案 0 :(得分:3)

GridView将排序委托给基础DataSource。 GridView不会自行执行排序,只是委托。因此,您需要查看您的DataSource以进行排序。什么是DataSource?它显示什么样的数据?这些自定义对象来自ObjectDataSource,还是您正在使用SqlDataSourceLinqDataSource