检查datagrid是否已排序

时间:2011-08-29 15:20:01

标签: c# asp.net datagrid

在datagrid Item Databound事件中,我想知道网格是否已经第一次排序或加载。我知道有一个事件OnSortCommand,我可以在这里设置一些变量来检查网格上是否有排序。但我想知道是否有更好的方法来检查网格是否已经排序。谢谢你。为了你的帮助。

PS:我看了一下post,建议检查Request.Form["__EVENTTARGET"]Request.Form["__EVENTARGUMENT"]。假设我在网格中有'x'个列和表单上的其他服务器控件,我觉得这不是一个正确的方法来获得'x'如果条件并检查请求是否来自其中一个控件。

3 个答案:

答案 0 :(得分:1)

如果对DataGridView进行排序,则将设置其SortedColumn属性。

答案 1 :(得分:0)

以下示例验证DataGridView控件的列的排序顺序或检查属性排序顺序的状态。

 private void button1_Click(object sender, EventArgs e)
    {
        this.dataGridView1.Sorted +=new EventHandler(dataGridView1_Sorted);
    }

    void dataGridView1_Sorted(object sender, EventArgs e)
    {
        if (this.dataGridView1.SortOrder.Equals(SortOrder.Ascending))
        {
            // your code here
        }

        if (this.dataGridView1.SortOrder.Equals(SortOrder.Descending))
        {
            // your code here
        }

        if (this.dataGridView1.SortOrder.Equals(SortOrder.None))
        {
            // your code here
        }
    }

此致

答案 2 :(得分:0)

您链接的帖子的建议相当不优雅;)

I suggest you read this,这是非常直截了当的例子。它使用DataView对数据进行排序。如果你想因为某种原因“记住”,用于排序网格的最后一个排序表达式,你可以简单地将它存储在ViewState中:

ViewState["LastSortExpression"]=e.SortExpression;  

根据需要在PostBack上检索它。