2016-04-29 7 views
0

radGridから特定のフィルタを削除する方法を知っている人はいませんか。私は株式のものを持っていると彼らはデータの種類によって異なりますが、私はそれらのすべての3つまたは4つの必要はありません。私はgridfiltermenuを使用しましたが、それはすべての列から特定のフィルターを取り除きます。すなわち、私は1つの列に等しいが、別の列には等しいが必要です。私はこれを非常に多くの方法で分類しようとしました。ここに私が持っているものがあります - 混乱を許してください。私はバックエンドでデータバインドされているので、前面に個別の列として持っていません。列名で列を取得しようとしましたが、他のメソッドの中でgridfilteringitemは名前を引数として受け入れません。ここでRadGridフィルタリング

<telerik:RadGrid ID="gvPIOList" runat="server" 
     Class="display table table-bordered table-hover table-responsive text-center" 
     CellPadding="2" HorizontalAlign="Center" AllowPaging="True" 
     AllowSorting="True" GroupPanelPosition="Top" Skin="Outlook" 
     ShowFooter="True" OnNeedDataSource="gvPIOList_NeedDataSource" 
     MasterTableView-RowIndicatorColumn-Visible="false" 
     HeaderStyle-HorizontalAlign="Center" ItemStyle-HorizontalAlign="Center" 
     AlternatingItemStyle-HorizontalAlign="Center" AllowFilteringByColumn="true" 
     MasterTableView-EditFormSettings-EditColumn-FilterListOptions="VaryByDataTypeAllowCustom" 
     MasterTableView-EditFormSettings-EditColumn-ShowFilterIcon="false" 
     MasterTableView-EditFormSettings-EditColumn-AndCurrentFilterFunction="Contains" 
     OnColumnCreated="gvPIOList_ColumnCreated" OnInit="gvPIOList_Init" 
     OnItemCreated="gvPIOList_ItemCreated"> 
      <MasterTableView GroupLoadMode="Server" 
       EditFormSettings-EditColumn-AutoPostBackOnFilter="true" 
       EditFormSettings-EditColumn-FilterDelay="1000" 
       AllowFilteringByColumn="true" 
       EditFormSettings-EditColumn-FilterListOptions="VaryByDataTypeAllowCustom" 
       EditFormSettings-EditColumn-ShowFilterIcon="false"> 
      </MasterTableView> 
</telerik:RadGrid> 

コードは次のとおりです。

protected void gvPIOList_Init(object sender, EventArgs e) 
{ 
    GridFilterMenu menu = gvPIOList.FilterMenu; 
    int i = 0; 
    while (i < menu.Items.Count) 
    { 
     if (menu.Items[i].Text == "NoFilter" || menu.Items[i].Text == "Contains" || menu.Items[i].Text == "Equals" || menu.Items[i].Text == "StartsWith") 
     { 
      i++; 
     } 
     else 
     { 
      menu.Items.RemoveAt(i); 
     } 
    } 
} 

答えて

0

これは私が使用するコードです:

これは、異なるデータ型のために働く、あなたは列の名前でcolumn.get_dataType() == "Sytem.Int64" を置き換えることができます。

保存する値をin { 'NoFilter': '', 'Contains': '' }セクションに書き込みます。

あなたがRadGridのクライアント設定]セクションで、この関数を呼び出す:

ASPX:

<ClientSettings EnableRowHoverStyle="true"> 
    <ClientEvents OnFilterMenuShowing="filterMenuShowing" /> 
</ClientSettings> 
<FilterMenu OnClientShowing="MenuShowing" /> 

の.js(ASPXに直接配置することができます):

var column = null; 
function MenuShowing(sender, args) 
{ 
if (column == null) return; 
var menu = sender; var items = menu.get_items(); 
if (column.get_dataType() == "System.String") 
{ 
    var i = 0; 
    while (i < items.get_count()) 
    { 
     if (!(items.getItem(i).get_value() in { 'NoFilter': '', 'Contains': '' })) 
     { 
      var item = items.getItem(i); 
      if (item != null) 
      { 
       item.set_visible(false); 
      } 
     } 
     else 
     { 
      var item = items.getItem(i); 
      if (item != null) 
      { 
       item.set_visible(true); 
      } 
     } 
     i++; 
    } 
} 
if (column.get_dataType() == "System.Int64") 
{ 
    var j = 0; while (j < items.get_count()) 
    { 
     if (!(items.getItem(j).get_value() in { 'NoFilter': '', 'EqualTo': '' })) 
     { 
      var item = items.getItem(j); if (item != null) 
       item.set_visible(false); 
     } 
     else 
     { 
      var item = items.getItem(j); if (item != null) item.set_visible(true); 
     } 
     j++; 
    } 
} 
column = null; 
menu.repaint(); 
} 
function filterMenuShowing(sender, eventArgs) 
{ 
    column = eventArgs.get_column(); 
} 

これをTelerikのウェブサイトから入手した:Filter Menu Showing

関連する問題