如果满足某些条件,我想在我的QueryableFilterRepeater中只读取一个或多个过滤器控件。
foreach (Control c in FilterRepeater.Controls)
{
//c is of type FilterRepeaterItem
}
我可以访问它的控件,但我不知道如何禁用它。它们的类型为FilterRepeaterItem
,它是QueryableFilterRepeater
的内部类,因此我无法将它们转换为过滤器(例如DropDownList
)的包裹控件并设置它的Enabled属性为false;
对此有何解决方法?我怀疑有一个适用于所有类型的过滤器(如果底层控件是不同的而不是所有DropDownLists),但至少有一个我知道它是DropDownList。
答案 0 :(得分:0)
我找到了一个解决方案,我将把它留在这里以防万一其他人偶然发现这个问题。
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;
}