在QueryableFilterRepeater中禁用过滤器控件

时间:2015-08-20 10:22:59

标签: c# asp.net

如果满足某些条件,我想在我的QueryableFilterRepeater中只读取一个或多个过滤器控件。

foreach (Control c in FilterRepeater.Controls)
{
    //c is of type FilterRepeaterItem
}

我可以访问它的控件,但我不知道如何禁用它。它们的类型为FilterRepeaterItem,它是QueryableFilterRepeater的内部类,因此我无法将它们转换为过滤器(例如DropDownList)的包裹控件并设置它的Enabled属性为false;

对此有何解决方法?我怀疑有一个适用于所有类型的过滤器(如果底层控件是不同的而不是所有DropDownLists),但至少有一个我知道它是DropDownList。

1 个答案:

答案 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; 
}