检查datagrid是否已经排序

本文关键字:排序 是否 datagrid 检查 | 更新日期: 2023-09-27 18:07:01

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

PS:我看了这篇文章,它建议检查Request.Form["__EVENTTARGET"]Request.Form["__EVENTARGUMENT"]。假设我在网格和表单上的其他服务器控件中有'x'列,我觉得拥有'x' If条件并检查请求是否来自这些众多控件之一不是正确的方式。

检查datagrid是否已经排序

如果DataGridView是排序的,它的SortedColumn属性将被设置。

下面是一个验证DataGridView控件列排序顺序或检查属性sortorder状态的示例。

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

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

我建议你读一下这个,这是一个非常直接的例子。它使用DataView对数据进行排序。如果出于某种原因想要"记住"用于对网格进行排序的最后一个排序表达式,您可以简单地将其存储在ViewState中,如下所示:

ViewState["LastSortExpression"]=e.SortExpression;  

并根据需要在PostBack中检索。