2016-04-29 4 views
0

Кто-нибудь знает, как удалить определенные фильтры из radGrid. У меня есть запасы, и они различаются по типу данных, но мне не нужны все из них только 3 или 4 из них. Я использовал gridfiltermenu, но это избавляет от определенного фильтра от каждого столбца. т.е.: мне нужно равное в одном столбце, но не в другом. Я попытался разобраться в этом так много. Вот что я имею - извините за беспорядок. У меня есть привязка к базе данных на бэкэнд, поэтому у меня нет их как отдельных столбцов на передней панели. Я попытался получить столбец по имени столбца, но gridfilteringitem среди других методов не принимает имена в качестве аргументов.RadGrid Filtering

<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