2010-01-15 55 views
1

我創建了一個RadGrid,有幾個字段用於過濾,我似乎無法使過濾工作。在過濾器框中輸入內容後,我可以清楚地看到它回傳(ajax spinny circle事物),但是我的結果始終是相同的。我使用下面的定義在aspx文件:在RadGrid上過濾不起作用

<telerik:RadGrid PageSize="4" ID="RadGrid1" runat="server" AllowPaging="True" AllowSorting="True" 
        AutoGenerateColumns="False" OnNeedDataSource="RadGrid1_NeedDataSource" 
        OnSelectedIndexChanged="RadGrid1_SelectedIndexChanged" Skin="Black" ShowFooter="True" 
        ShowStatusBar="True" AllowFilteringByColumn="True" 
        EnableLinqExpressions="False"> 
        <MasterTableView AllowFilteringByColumn="true" Caption="Select a Customer"> 
         <Columns> 
          <telerik:GridTemplateColumn CurrentFilterFunction="StartsWith" HeaderText="First Name" AllowFiltering="true" AutoPostBackOnFilter="true"> 
           <ItemTemplate> 
            <%#GetFirstName(DataBinder.Eval(Container, "DataItem"))%> 
           </ItemTemplate> 
          </telerik:GridTemplateColumn> 
          <telerik:GridTemplateColumn HeaderText="Last Name" AllowFiltering="true" AutoPostBackOnFilter="true"> 
           <ItemTemplate> 
            <%#GetLastName(DataBinder.Eval(Container, "DataItem"))%> 
           </ItemTemplate> 
          </telerik:GridTemplateColumn> 
          <telerik:GridTemplateColumn HeaderText="Address"> 
           <ItemTemplate> 
            <%#GetAddress(DataBinder.Eval(Container, "DataItem"))%> 
           </ItemTemplate> 
          </telerik:GridTemplateColumn> 
          <telerik:GridTemplateColumn HeaderText="Shop"> 
           <ItemTemplate> 
            <%#GetShopName(DataBinder.Eval(Container, "DataItem"))%> 
           </ItemTemplate> 
          </telerik:GridTemplateColumn> 
         </Columns> 
         <RowIndicatorColumn> 
          <HeaderStyle Width="20px"></HeaderStyle> 
         </RowIndicatorColumn> 
         <ExpandCollapseColumn> 
          <HeaderStyle Width="20px"></HeaderStyle> 
         </ExpandCollapseColumn> 
        </MasterTableView> 
        <ClientSettings EnableRowHoverStyle="true" EnablePostBackOnRowClick="True"> 
         <Selecting AllowRowSelect="true" /> 
        </ClientSettings> 
        <PagerStyle Mode="NumericPages" /> 
       </telerik:RadGrid> 

而且我得到了在背後我的代碼如下:

protected void RadGrid1_NeedDataSource(object source, Telerik.Web.UI.GridNeedDataSourceEventArgs e) 
{ 
    BusinessLayer.Customers Customers = new BusinessLayer.Customers(); 

    Customers.GetBySQLStatement(GetCustomerSQL()); 

    this.RadGrid1.DataSource = Customers; 
} 

任何想法?

+0

這個的其他結果?我看到一個類似的問題,但具有定義了DataField的所有GridBoundColumns。 Iny我的NeedDataSource事件處理程序,CurrentFilterFunction和CurrentFilterValues被設置爲正確的過濾列。兩年後還有一個相關的答案 – brentlightsey 2010-05-21 17:36:22

回答

4

添加數據字段爲每列或使用GridBoundColumns而非GridTemplateColumns。

4

您的網格定義對我來說看起來不錯 - 不知道問題出在哪裏。我從一段時間開始使用Telerik網格,如果您的鞋子會調試我的代碼,請參閱WhatDataSource中的MasterTableView.FilterExpression值以及返回的記錄是否使用該表達式過濾並傳遞到網格。

迪克

+0

。謝謝 – hardba11 2012-06-20 02:50:39

+0

謝謝!投了這個答案..可能不是直接回答這個問題,但肯定有助於調試radgrid過濾問題,並幫助我。 – Jack0fshad0ws 2013-08-07 04:18:56

0
Public Sub RadGrid_NeedDataSource(ByVal source As RadGrid, ByVal e As GridNeedDataSourceEventArgs) 'Handles RadGrid.NeedDataSource 
    Dim RadGrid As RadGrid = CType(source, RadGrid) 
    'Dim nestedItem As GridNestedViewItem = CType(source.NamingContainer, GridNestedViewItem) 
    'Dim CustomerID = CType(nestedItem.ParentItem, GridDataItem).GetDataKeyValue(source.Attributes("TableID")) 

    Dim gridSortString As String = RadGrid.MasterTableView.SortExpressions.GetSortString() 

    Dim args As New DataSourceSelectArguments(gridSortString) 

    If gridSortString Is Nothing Then 
     RadGrid.DataSource = GetDataTable("SELECT * FROM [" + source.Attributes("TableName") + "] ") 'Where CustomerID = N'" + CustomerID + "' 
    Else 
     RadGrid.DataSource = GetDataTable("SELECT * FROM [" + source.Attributes("TableName") + "] ORDER BY " & gridSortString) 'Where CustomerID = N'" + CustomerID + "' 
    End If 

End Sub 
+1

請編輯您的答案並描述您的代碼。只有代碼答案不是最好的選擇。 – KittMedia 2016-02-21 13:23:59