RadGrid теряет значение фильтра - PullRequest
0 голосов
/ 17 января 2011

Я использую 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) ??

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

1 Ответ

2 голосов
/ 17 января 2011

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

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

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

clmn.CurrentFilterValue = "myFilterValue";

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

...