2013-04-10 80 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

相關問題