【问题标题】:Sorting gridview排序网格视图
【发布时间】:2010-10-19 09:11:30
【问题描述】:

我有一个绑定数据源的网格视图,我必须为此网格视图添加排序;我在其中添加了下面的代码,但效果不佳。

private string ConvertSortDirectionToSql(SortDirection sortDireciton)
{
    string m_SortDirection = String.Empty;

    switch (sortDireciton)
    {
        case SortDirection.Ascending:
            m_SortDirection = "ASC";
            break;

        case SortDirection.Descending:
            m_SortDirection = "DESC";
            break;
    }

    return m_SortDirection;
}

protected void GridView1_Sorting(object sender, GridViewSortEventArgs e)
{
    DataTable m_DataTable = GridView1.DataSource as DataTable;

    if (m_DataTable != null)
    {
        DataView m_DataView = new DataView(m_DataTable);
        m_DataView.Sort = e.SortExpression + " " + ConvertSortDirectionToSql(e.SortDirection);

        GridView1.DataSource = m_DataView;
        GridView1.DataBind();
    }
}

【问题讨论】:

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


【解决方案1】:

你可以用这个,因为我有同样的问题,我是这样解决的。

public string SortingExpression
{
    get
    {
        if (this.ViewState["SortExpression"] == null)
            return "";
        else
            return (string)this.ViewState["SortExpression"];
    }

    set
    {
        this.ViewState["SortExpression"] = value;
    }
}

protected void GridView1_Sorting(object sender, GridViewSortEventArgs e)
{
    DataTable m_DataTable = GridView1.DataSource as DataTable;

    if (m_DataTable != null)
    {
        DataView m_DataView = new DataView(m_DataTable);
        SortingExpression = e.SortExpression + " " + (SortingExpression.Contains("ASC") ? "DESC" : "ASC");
        m_DataView.Sort =SortingExpression;

        GridView1.DataSource = m_DataView;
        GridView1.DataBind();
    }
}

【讨论】:

  • 它不起作用但是当我在 GridView1_Sorting 上设置断点时。我在表中有空数据。当我散列 if (m_DataTable != null) 时出现此错误(必须在使用 DataView 之前设置 DataTable)
【解决方案2】:

如果您的排序方向始终为升序,this 可能会有所帮助。

【讨论】:

    【解决方案3】:

    试试这个。这种方法对我有用。

    dt 是包含值的数据表。

     protected void onSorting_Gridview1(object sender, GridViewSortEventArgs e)
                {
                    string _sortDirection = dir.ToString();
                    if(_sortDirection.Equals("Ascending"))
                    {
                    _sortDirection = "ASC";
                    dir = SortDirection.Descending;
    
                }
                else
                {
                    _sortDirection="DESC";
                    dir = SortDirection.Ascending;
    
                }
    
                if (dt != null)
                {
                    //Sort the data.
                    dt.DefaultView.Sort = e.SortExpression + " " + _sortDirection;
                    gridView1.DataSource = dt;
                    gridView1.DataBind();
                }
    
            }
    
    
     public SortDirection dir
        {
            get
            {
                if (ViewState["DIR"] == null)
                {
                   ViewState["DIR"] = SortDirection.Ascending;
                }
                return (SortDirection)ViewState["DIR"];
            }
            set
            {
               ViewState["DIR"] = value;
            }
        }
    

    【讨论】:

      猜你喜欢
      • 2013-02-17
      • 1970-01-01
      • 1970-01-01
      • 2012-08-26
      • 1970-01-01
      • 2011-08-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多