2013-04-10 83 views
2

我有以下几点:如何根据子串对Telerik GridBoundColumn的内容进行排序?

<telerik:GridBoundColumn HeaderText="Name(s)" UniqueName="colNames" DataField="NameList" 
        AllowSorting="false"> 

数据被绑定到这是从我不能在不影响其他一些网页的修改SQL存储过程的到来。我需要用子字符串对这些项目进行排序;要显示的字段是'名字姓氏',我需要排序姓氏。有没有办法修改上面的''后的子串排序?我知道这是找到姓氏的不完美解决方案(F. Murray Abraham =='M'),但这是我负责实施的方法。

我想使用Telerik SortExpression,但无法获得语法(假设它甚至可用于此目的)。

如果有帮助,网站代码隐藏内置在VB.NET中。

回答

3

最好的方法是通过向包含姓氏的返回数据集添加新列来修改存储过程,前提是姓氏列与名字分开定义。这不会影响已经使用存储过程的其他页面,除非在这些页面上为RadGrid使用AutoGeneratedColumn。

如果从存储过程返回的名称列是完整格式(即“John Smith”),并且/或者您无法从存储过程向返回的数据集添加字段,则必须执行此操作在后台代码:

  1. 与返回的数据集执行存储过程和填充的DataTable
  2. 添加新的列中的DataTable String类型“LASTNAME”到DataTable对象
  3. 对于每一行,提取物“NameList”列中的姓氏
  4. 将其分配给t他“姓氏”列
  5. 修改后的DataTable对象设置为您RadGrid.DataSource

记住的SortExpression =“姓氏”添加到您的GridBoundColumn标签上方AllowSorting =“真”。

要提取的名字:

If Not IsDBNull(row!NameList) Then 
     Dim nameparts() As String = Cstr(row!NameList).Split(New Char() {" "c}, StringSplitOptions.RemoveEmptyEntries) 
     If nameparts.Count > 0 Then 
      row!lastname = nameparts.GetUpperBound(0) 
     End If 
    End If 
+0

我来到今天早上发现的要求已被撤回(现在)。感谢你的回答;我正在为它添加书签,因为我怀疑客户很快就会收到类似的请求。 – 2013-04-11 13:56:06

相关问题