Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 排序网格视图_C#_Asp.net_.net_Sorting_Gridview - Fatal编程技术网

C# 排序网格视图

C# 排序网格视图,c#,asp.net,.net,sorting,gridview,C#,Asp.net,.net,Sorting,Gridview,我有一个gridview,在这里我绑定了一个数据源,我必须为这个gridview添加排序;我添加了下面的代码,但效果不好 private string ConvertSortDirectionToSql(SortDirection sortDireciton) { string m_SortDirection = String.Empty; switch (sortDireciton) { case SortDirection.Ascending:

我有一个gridview,在这里我绑定了一个数据源,我必须为这个gridview添加排序;我添加了下面的代码,但效果不好

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();
    }
}

如果你的排序方向总是上升的,也许会有帮助。

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

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();
    }
}

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

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;
        }
    }

你有什么问题?你怎么能说它工作不好?很抱歉,它没有任何错误,但它不工作。它的可能副本不工作,但当我在GridView1_排序上做断点时。我在表中有空数据。当我散列if(m_DataTable!=null)时,这个错误apear(DataTable必须在使用DataView之前设置)