我正在使用我想允许过滤的RadGrid。我允许对每个列进行过滤,但我添加了一个按钮,我打算编程以应用所有过滤器。
但是,在应用过滤器之后,我会在过滤器框中丢失过滤器值,然后它会自行重新绑定并重置RadGrid。当我单击我在命令项模板中创建的应用过滤器时,会发生这一切。
这是我正在使用的一些代码。
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)??
提前感谢您对此主题的任何帮助。
答案 0 :(得分:2)
您应单独设置每列的FilterValue
。
不是通过引用控件而是使用GridColumn
的属性。
您可以使用以下方法检索列:
GridBoundColumn clmn = myGrid.Columns.FindByUniqueName( "theUniqueNameOfTheColumn" );
之后您可以设置列的过滤值:
clmn.CurrentFilterValue = "myFilterValue";
如果您不使用FilterTemplate
,这应该可以正常工作。
如果您使用的是FilterTemplate
,则会有一些额外的步骤。