【问题标题】:How do I sort an ASP.NET DataGrid by the length of a field?如何按字段长度对 ASP.NET DataGrid 进行排序?
【发布时间】:2010-09-10 15:26:54
【问题描述】:

我有一个 DataGrid,其中每一列都有一个 SortExpression。我希望排序表达式相当于“ORDER BY LEN(myField)”。

我试过了

SortExpression="LEN(myField)" 

但这会引发异常,因为它不是有效的语法。有什么想法吗?

【问题讨论】:

    标签: asp.net datagrid


    【解决方案1】:

    如果已经通过查询返回 len,但不显示该列,仅将其用作原始列的排序表达式,该怎么办?

    我认为默认情况下不支持您的想法。

    【讨论】:

      【解决方案2】:

      根据您的 SQL 风格,以下可能有效:

      SELECT
       ColumnA as FieldA
       , ColumnB as FieldB
       , LEN(ColumnA) as FieldL
      FROM TableName
      ORDER BY L
      

      然后做

      SortExpression="FieldL"
      

      【讨论】:

        【解决方案3】:

        SortExpression 参数指定要排序的列名,后跟“ASC”或“DESC”来控制顺序。

        您可以更改列的DataType 属性以指定用户定义的类型,其比较器函数比较字符串长度。这不会是一项微不足道的任务。

        【讨论】:

          【解决方案4】:

          使用 Linq,您可以编写如下查询:

          query.OrderBy(column => column.MyField.Length);
          

          【讨论】:

            【解决方案5】:

            嗯。有时间测试一下。我能够让 SortExpression="Description.Length" 工作。这是 1.1、2.0 还是 3.5?

            【讨论】:

            • 嗨杰森。它是 Visual Studio 2008,在 .NET 2.0 上运行。我已经再次对其进行了测试,但无法按照您的描述使其正常工作。使用 DataAdapter 从存储过程返回数据。谢谢,RB。
            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2011-06-26
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2020-10-20
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多