2010-01-15 5 views
1

필터링을 위해 두 개의 필드를 사용하여 RadGrid를 만들었으므로 필터링 기능이 작동하지 않는 것 같습니다. 필자의 결과는 항상 같지만 필터 상자에 내용을 입력 한 후 명확하게 다시 게시 (Ajax Spinny Circle)하는 것을 볼 수 있습니다. 나는 영문 파일에 다음과 같은 정의를 사용하고 있습니다 :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가 정의 된 모든 GridBoundColumn을 보유하고 있습니다. Iny 내 NeedDataSource 이벤트 처리기, CurrentFilterFunction 및 CurrentFilterValues ​​필터링 된 열에 대해 올바르게 설정되어 있습니다. – brentlightsey

답변

4

는 각 열에 대해 을 DataField를 추가 GridBoundColumns보다는 GridTemplateColumns를 사용합니다.

4

그리드 정의가 괜찮은 것 같습니다. 문제가있는 곳을 잘 모릅니다. 지금 당장 Telerik 그리드를 사용하고, 코드를 디버깅하고, NeedDataSource 안에 MasterTableView.FilterExpression 값이 무엇인지, 그리고 반환 된 레코드가 해당 식으로 필터링되고 그리드로 전달되는지 여부를 확인해야합니다. . 딕

+0

아직 2 년 후 관련 답변. 감사합니다 – hardba11

+0

고마워요! 이 답변에 투표했습니다. 질문에 대한 직접적인 답변이 아닐 수도 있지만, radgrid 필터링 문제를 디버깅하는 데 도움이되고 도움이되었습니다. – 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

답변을 편집하고 코드를 설명하십시오. 코드 만 대답하는 것이 최선의 방법은 아닙니다. – KittMedia

관련 문제