如果满足某些条件,我想在我的 QueryableFilterRepeater 中设置一个或多个过滤器控件为只读。
foreach (Control c in FilterRepeater.Controls)
{
//c is of type FilterRepeaterItem
}
我可以访问它的控件,但我不确定如何禁用它。它们属于 FilterRepeaterItem
类型,它是 QueryableFilterRepeater
的内部类,所以我不能将它们强制转换为该类型以获得过滤器的包装控制(比如 DropDownList
) 并将其 Enabled 属性设置为 false;
有什么解决方法吗?我怀疑是否有一个适用于所有类型的过滤器(比如底层控件是否不同而不是所有 DropDownList),但至少有一个我知道它是 DropDownList。
我已经找到了解决方案,我将把它留在这里以防其他人偶然发现。
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;
}
我是一名优秀的程序员,十分优秀!