2013-10-30 140 views
2

無論我放入什麼代碼,我的Telerik RadGrid都不會排序。我嘗試了很多東西,每次點擊標題時,箭頭和顏色都會改變,但數據將保持相同的順序。這是我最新的代碼塊。 (我從Telerik網站得到這個)請告訴我我在這裏做錯了什麼。Telerik RadGrid排序ASP.NET C#

<telerik:RadGrid runat="server" ID="radProductsGrid" Skin="Default" AllowSorting="true" 
AllowPaging="true" OnSortCommand="radProductsGrid_SortCommand" 
OnNeedDataSource="radProductsGrid_NeedDataSource" AutoGenerateColumns= "false" 
GridLines="None" ShowGroupPanel="false" PageSize="100"> 
<telerik:GridBoundColumn ReadOnly="true" AllowFiltering="true" SortExpression="ItemNumber" DataField="ItemNumber" HeaderText="Item Number" UniqueName="ItemNumber"> 
</telerik:GridBoundColumn>  
<telerik:GridBoundColumn ReadOnly="true" AllowFiltering="true" SortExpression="ProductName" DataField="ProductName" HeaderText="Product Name" UniqueName="ProductName"> 
</telerik:GridBoundColumn> 
<telerik:GridBoundColumn ReadOnly="true" AllowFiltering="true" SortExpression="CategoryName" DataField="CategoryName" HeaderText="Category Name" UniqueName="CategoryName"> 
</telerik:GridBoundColumn> 

protected void radProductsGrid_SortCommand(object sender, GridSortCommandEventArgs e) 
    { 
     GridTableView tableView = e.Item.OwnerTableView; 
     if (e.SortExpression == "ItemNumber") 
     { 
      e.Canceled = true; 
      GridSortExpression expression = new GridSortExpression(); 
      expression.FieldName = "ItemNumber"; 
      if (tableView.SortExpressions.Count == 0 || tableView.SortExpressions[0].FieldName != "ItemNumber") 
      { 
       expression.SortOrder = GridSortOrder.Descending; 
      } 
      else if (tableView.SortExpressions[0].SortOrder == GridSortOrder.Descending) 
      { 
       expression.SortOrder = GridSortOrder.Ascending; 
      } 
      else if (tableView.SortExpressions[0].SortOrder == GridSortOrder.Ascending) 
      { 
       expression.SortOrder = GridSortOrder.None; 
      } 
      tableView.SortExpressions.AddSortExpression(expression); 
      tableView.Rebind(); 
     } 
    } 

回答

0

而不是做這個的:

tableView.SortExpressions.AddSortExpression(expression); 
tableView.Rebind(); 

這樣做:

radProductsGrid.MasterTableView.SortExpressions.AddSortExpression(expression); 
radProductsGrid.Rebind(); 
-1
Protected Sub RadGrid1_NeedDataSource(ByVal source As Object, ByVal e As GridNeedDataSourceEventArgs) 'Handles RadGrid1.NeedDataSource 
    Dim RadGrid1 As RadGrid = CType(Page.FindControl("RadGrid1"), RadGrid) 
    RadGrid1.DataSource = GetDataTable("SELECT کالا.شناسه, کالا.عنوان, کالا.پوشه, بارگیری, کالا.گروه_شناسه, گروه.عنوان AS گروه FROM کالا LEFT JOIN گروه ON کالا.گروه_شناسه = گروه.شناسه") 
End Sub 

Public Function GetDataTable(ByVal query As String) As DataTable 
    Dim ConnString As String = ConfigurationManager.ConnectionStrings("ConnectionString").ConnectionString 
    Dim conn As SqlConnection = New SqlConnection(ConnString) 
    Dim adapter As SqlDataAdapter = New SqlDataAdapter 
    adapter.SelectCommand = New SqlCommand(query, conn) 
    Dim table1 As New DataTable 
    conn.Open() 
    Try 
     adapter.Fill(table1) 
    Finally 
     conn.Close() 
    End Try 
    Return table1 
End Function 
+1

你能爲你的答案添加一個解釋嗎? –

0

檢查的JavaScript的onclick()事件,其排序丟棄事件

  var hasChanges, inputs, dropdowns, editedRow; 

      function RowClick(sender, eventArgs) { 
       if (editedRow && hasChanges) { 
        hasChanges = false; 
        if (confirm("Update changes?")) { 

         $find("<%= RadGrid1.ClientID %>").get_masterTableView().updateItem(editedRow); 
        } 
       } 
      }