禁用QueryableFilterRepeater中的过滤器控制
本文关键字:过滤器 控制 QueryableFilterRepeater 禁用 | 更新日期: 2023-09-27 18:08:49
如果满足某些条件,我想在QueryableFilterRepeater中使一个或多个过滤器控件只读。
foreach (Control c in FilterRepeater.Controls)
{
//c is of type FilterRepeaterItem
}
我可以访问它的控制,但我不知道如何禁用一个。它们的类型是FilterRepeaterItem
,这是QueryableFilterRepeater
的内部类,所以我不能将它们转换为该类型,以便获得过滤器的包装控制(例如DropDownList
)并将其启用属性设置为false;
有解决这个问题的方法吗?我怀疑是否有一个适用于所有类型的过滤器(假设底层控件不同,而不是所有的下拉列表),但至少有一个我知道它是下拉列表。
我已经找到了一个解决方案,我将把它留在这里,以防别人偶然发现。
foreach (Control c in FilterRepeater.Controls)
{
var dynamicFilter = c.Controls.OfType<DynamicFilter>().FirstOrDefault();
if (dynamicFilter == null)
continue;
QueryableFilterUserControl filterTemplate = dynamicFilter.FilterTemplate as QueryableFilterUserControl;
if (filterTemplate == null)
continue;
WebControl filterControl = filterTemplate.FilterControl as WebControl;
if (filterControl == null)
continue;
//now we have access to the filter control
filterControl.Enabled = false;
}