Gridview的动态排序

本文关键字:排序 动态 Gridview | 更新日期: 2023-09-27 18:09:25

我正在进行数据网格排序。但GridViewStudents。数据源在排序函数中返回null。我尝试使用session &视图状态。但是行不通。

感谢您的帮助。

My asp code for datagrid:

<asp:GridView ID="GridViewStudents" runat="server" AllowSorting="True"
                            onsorting="GridViewStudents_Sorting" ></asp:GridView>

排序功能:

protected void GridViewStudents_Sorting(object sender, GridViewSortEventArgs e)
{
    DataTable dataTable = GridViewStudents.DataSource as DataTable;
    if (dataTable != null)
    {
        DataView dataView = new DataView(dataTable);
        GridViewStudents.Sort = e.SortExpression + " " + ConvertSortDirectionToSql(e.SortDirection);
        GridViewStudents.DataSource = dataView;
        GridViewStudents.DataBind();
    }
}

排序辅助函数:

private string ConvertSortDirectionToSql(SortDirection sortDirection)
{
    string newSortDirection = String.Empty;
    switch (sortDirection)
    {
        case SortDirection.Ascending:
            newSortDirection = "ASC";
            break;
        case SortDirection.Descending:
            newSortDirection = "DESC";
            break;
    }
    return newSortDirection;
}

Gridview的动态排序

应用自动排序模式

dataGridView1.Columns["ColName"].SortMode = DataGridViewColumnSortMode.Automatic;

试试这个…

DataGridView控件使用SortMode属性值为Automatic的列进行排序,排序符号将自动显示在列标题中。

确保在每次往返时重新绑定Gridview。gridview的数据源不会自动存储在gridview或viewstate中。如果需要访问数据源,则需要首先传播数据源。

我找到了解决方案。希望对大家有所帮助。

对于任何遇到DataGridView排序问题的人。记住4个步骤

  1. 声明全局数据集对象

    static DataSet ds = null;
    
  2. 将数据加载到网格

    if (!IsPostBack)
    {
        loadData();  
    }
    
  3. 写排序函数

    protected void GridViewStudents_Sorting(object sender, GridViewSortEventArgs e)
    {
        DataTable dataTable = new DataTable();        
        dataTable = ds.Tables[0];
        if (dataTable != null)
        {
         DataView dataView = new DataView(dataTable);
         dataView.Sort = e.SortExpression + " " + ConvertSortDirectionToSql(e.SortDirection);
         GridViewStudents.DataSource = dataView;
         GridViewStudents.DataBind();
        }
    }
    
  4. 排序辅助函数

    private string ConvertSortDirectionToSql(SortDirection sortDirection)
    {
        string newSortDirection = String.Empty;
        switch (sortDirection)
        {
            case SortDirection.Ascending:
                newSortDirection = "ASC";
                break;
            case SortDirection.Descending:
                newSortDirection = "DESC";
                break;
        }
        return newSortDirection;
    }