2011-11-09 3 views
0

내 저장소 및 내 눈금 패널, 필터 상자를 추가해야합니다. 그래서 필터링 할 수있는 필드 상자가있는 톱 바 태그를 추가하고 .. 그래서 그것에 리스너를 추가하고 싶습니다. , 2 개 기능을 쓰는 동안 저장소가 뒤에 코드와 바인더 제본되는 것을 알고, filtergrid하는 표시()와 clearFilter이() ... 그 두 기능이 있어야 할 무엇으로 나는 ... 그래서그리드에 ext.net 필터

<ext:Store ID="Store1" runat="server"> 
      <Reader> 
       <ext:JsonReader> 
        <Fields> 
         <ext:RecordField Name="FULLNAME" /> 
         <ext:RecordField Name="JOBTITLE" /> 
         <ext:RecordField Name="PHONENUMBER1" /> 
        </Fields> 
       </ext:JsonReader> 
      </Reader> 
     </ext:Store> 



<ext:Panel ID="Panel1" runat="server" Width="520" Height="300" Collapsible="true" Title="Add Attendies" Collapsed="true"> 
     <TopBar> 
       <ext:Toolbar ID="Toolbar2" runat="server"> 
        <Items> 
         <ext:ToolbarTextItem ID="ToolbarTextItem1" runat="server" Text="Filter:" /> 
         <ext:ToolbarSpacer /> 
         <ext:TriggerField ID="TriggerField1" runat="server" EnableKeyEvents="true"> 
          <Triggers> 
           <ext:FieldTrigger Icon="Clear" /> 
          </Triggers> 
          <Listeners> 
          **<KeyUp Fn="filtergrid()" Buffer="250" /> 
          <TriggerClick Handler="clearFilter();" />** 
          </Listeners> 
         </ext:TriggerField> 
        </Items> 
       </ext:Toolbar> 
      </TopBar> 
      <Items> 
       <ext:BorderLayout ID="BorderLayout1" runat="server"> 
        <West MarginsSummary="5 5 5 5"> 
         <ext:GridPanel 
          ID="GridPanel1" 
          runat="server" 
          StoreID="Store1" 
          DDGroup="GridDDGroup" 
          EnableDragDrop="true" 
          StripeRows="true" 
          AutoExpandColumn="FULLNAME" 
          Width="250" 
          Title="All Contacts"> 
          <ColumnModel> 
           <Columns> 
            <ext:Column Header="Contact Name" ColumnID="FULLNAME" Width="140" DataIndex="FULLNAME" /> 
            <ext:Column Header="Title"  ColumnID="JOBTITLE" Width="75" DataIndex="JOBTITLE" /> 
            <ext:Column Header="Phone"  ColumnID="PHONENUMBER1" Width="75" DataIndex="PHONENUMBER1" /> 
           </Columns> 
          </ColumnModel> 
          <SelectionModel> 
           <ext:RowSelectionModel ID="RowSelectionModel1" runat="server" /> 
          </SelectionModel> 
          <GetDragDropText Fn="getDragDropText" /> 
          <Listeners> 
           <Render Fn="setDD" /> 
          </Listeners> 
         </ext:GridPanel> 
        </West> 

        <Center MarginsSummary="5 5 5 0"> 
         <ext:GridPanel 
          ID="GridPanel2" 
          runat="server" 
          StoreID="Store2" 
          DDGroup="GridDDGroup" 
          EnableDragDrop="true" 
          StripeRows="true" 
          AutoExpandColumn="FULLNAME" 
          Width="250" 
          Title="Meeting Attendies"> 
          <ColumnModel> 
           <Columns> 
            <ext:Column ColumnID="Contact Name" Header="Contact Name" Width="140" DataIndex="FULLNAME" /> 
            <ext:Column Header="Title" Width="75" DataIndex="JOBTITLE" /> 
            <ext:Column Header="Phone Number" Width="75" DataIndex="PHONENUMBER1" /> 

           </Columns> 
          </ColumnModel> 
          <SelectionModel> 
           <ext:RowSelectionModel ID="RowSelectionModel2" runat="server" /> 
          </SelectionModel> 
          <GetDragDropText Fn="getDragDropText" /> 
          <Listeners> 
           <Render Fn="setDD" /> 
          </Listeners> 
         </ext:GridPanel> 
        </Center> 
       </ext:BorderLayout> 
      </Items> 

      <BottomBar> 
       <ext:Toolbar ID="Toolbar1" runat="server"> 
        <Items> 
         <ext:ToolbarFill ID="ToolbarFill1" runat="server" /> 
         <ext:Button ID="Button1" runat="server" Text="Reset both grids"> 
          <Listeners> 
           <Click Handler="Store1.loadData(Store1.proxy.data);Store2.removeAll();" /> 
          </Listeners> 
         </ext:Button> 
        </Items> 
       </ext:Toolbar> 
      </BottomBar> 
     </ext:Panel> 

filterer 것 작성해야 할 2 개의 함수가 있습니다. 하나는 필터 결과를 패널에 기록하고 다른 하나는 데이터 소스를 다시 지우고 복원하는 것입니다.

답변

0

당신은 필터 filterBy 방법을 사용하여 사용자가 선택한 어떤 논리에 따라 true 또는 false를 반환하고 모드 코디의 측면에서 clearFilter

사용하여 필터를 제거 대리인 기능을 전달을 적용 할 수 있습니다, 이런 식으로 뭔가 :

clearFilter() { 
    theGridPanel.store.clearFilter(false); 
} 

filterGrid() { 
    theGridPanel.store.filterBy(theFilterFunction) 
} 

theFilterFunction(record, id) { 
    if(record.data.aField === 'yellow') { 
     return true; 
    } 
    return false; 
}