2011-01-17 4 views
0

Я использую RadGrid, для которого я хочу разрешить фильтрацию. Я разрешаю фильтрацию на каждом отдельном столбце, но я добавил кнопку, которую я намереваюсь запрограммировать для ОТМЕНЫ ВСЕХ ФИЛЬТРОВ.RadGrid потеряет значение фильтра

Однако после применения фильтра я теряю значения фильтра в фильтрах, а затем снова восстанавливается снова и RadGrid сбрасывается. Это происходит, когда я нажимаю фильтр Apply, созданный в шаблоне элемента.

вот какой код я использую.

protected void RadGrid1_ItemCommand(object sender, GridCommandEventArgs e) 
{ 


if (e.CommandName == "FilterRadGrid" || e.CommandName == "Filter") 
    { 
     string expression = ""; 
     GridFilteringItem item = RadGrid1.MasterTableView.GetItems(GridItemType.FilteringItem)[0] as GridFilteringItem; 
     string col1 = (item["col1 "].Controls[0] as TextBox).Text; 
     string col2 = (item["col2"].Controls[0] as TextBox).Text; 
     string col3= (item["col3"].Controls[0] as TextBox).Text; 

      if (col1!= "") 
       expression += "([col1] LIKE \'%" + col1+ "%\')"; 
      if (col2!= "") 
      { 
       if (expression != "") 
        expression += " AND "; 
       expression += "([col2] LIKE \'%" + col2+ "%\')"; 
      } 
      if (col3!= "") 
      { 
       if (expression != "") 
        expression += " AND "; 
       expression += "([col3] LIKE \'%" + col3+ "%\')"; 
      } 


     RadGrid1.MasterTableView.FilterExpression = expression; 
     RadGrid1.MasterTableView.Rebind(); 
    } 
} 

Он делает все, что он должен делать, кроме как после фильтра коробки фильтра очищаются и сетки не связывает снова по какой-то странной причине и сетки больше не фильтруется. Как сохранить значение полей фильтра (col1, col2, col3)?

Заранее благодарим за любую помощь по этому вопросу.

ответ

2

Вы должны установить FilterValue каждого столбца отдельно. Не ссылаясь на элементы управления, но используя свойство GridColumn. Вы можете получить столбцы с помощью:

GridBoundColumn clmn = myGrid.Columns.FindByUniqueName("theUniqueNameOfTheColumn"); 

После этого вы можете установленное значение фильтра столбца:

clmn.CurrentFilterValue = "myFilterValue"; 

Это должно работать нормально, если вы не используете FilterTemplate. Если вы используете FilterTemplate, есть дополнительные шаги.

+0

Как бы вы могли справиться с этим с помощью шаблонов фильтров? У меня есть проблемы с этим. – Derek

+0

@Derek В настоящее время я покинул компанию, где работал, когда делаю это, и у меня нет никакого исходного кода ... извините. Прошло некоторое время, так как я немного развился с Telerik, поэтому, боюсь, я не могу вам помочь. – thomasvdb

Смежные вопросы