【问题标题】:check if datagrid has been sorted检查数据网格是否已排序
【发布时间】:2011-11-06 02:59:38
【问题描述】:

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

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

【问题讨论】:

  • 这是一个愚蠢的问题还是我应该再等一段时间?

标签: c# asp.net datagrid


【解决方案1】:

如果 DataGridView 已排序,则将设置其 SortedColumn 属性。

【讨论】:

    【解决方案2】:

    这里是一个验证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
            }
        }
    

    问候

    【讨论】:

      【解决方案3】:

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

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

      ViewState["LastSortExpression"]=e.SortExpression;  
      

      并根据需要在 PostBack 上检索它。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-04-08
        • 2018-04-10
        • 1970-01-01
        • 1970-01-01
        • 2017-11-20
        • 1970-01-01
        • 2013-08-09
        • 2012-02-05
        相关资源
        最近更新 更多