2010-01-15 5 views
1

J'ai créé un RadGrid avec un couple de champs pour le filtrage et je n'arrive pas à faire fonctionner le filtrage. Je peux le voir clairement poster (la chose ajax spinny circle) après avoir tapé quelque chose dans la boîte de filtre, mais mes résultats sont toujours les mêmes. J'utilise la définition suivante dans le fichier ASPX:Filtrage sur RadGrid ne fonctionnant pas

<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> 

Et je suis arrivé ce qui suit dans mon code derrière:

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

    Customers.GetBySQLStatement(GetCustomerSQL()); 

    this.RadGrid1.DataSource = Customers; 
} 

Toutes les idées?

+0

Tout autre résultat de celui-ci? Je vois un problème similaire, mais tous GridBoundColumns avec le DataField ont défini. Dans mon gestionnaire d'événements NeedDataSource, CurrentFilterFunction et CurrentFilterValues ​​sont correctement définis pour les colonnes filtrées. – brentlightsey

Répondre

4

Ajouter DataField pour chaque colonne ou utilisez GridBoundColumns plutôt que GridTemplateColumns.

4

Votre définition de grille me semble correcte - je ne sais pas où le problème est. J'utilise la grille Telerik depuis un certain temps et ce que je ferais si vous deviez déboguer mon code, voir quelle est la valeur de MasterTableView.FilterExpression dans NeedDataSource et si les enregistrements retournés sont filtrés avec cette expression et transmis à la grille .

Dick

+0

toujours une réponse pertinente deux ans plus tard. Merci – hardba11

+0

Merci! J'ai voté pour cette réponse .. peut-être pas une réponse directe à la question, mais certainement utile pour le débogage des problèmes de filtrage radgrid et m'a aidé. – Jack0fshad0ws

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

S'il vous plaît modifier votre réponse et décrire votre code. Les réponses au code seulement ne sont pas la meilleure option. – KittMedia

Questions connexes