禁用动态数据列表视图上的过滤

时间:2010-08-18 16:34:24

标签: asp.net dynamic-data

我有一个 NotificationTemplates 的实体集,其中每个都有一个零多个 SmsTemplate 实体的集合。编辑或查看 NotificationTemplate 时,我有一个指向View SMS Templates的链接。该链接将我带到 SmsTemplates 实体集的List视图,针对我正在查看的 NotificationTemplate 进行过滤。

如何阻止用户更改此过滤器以向其他 NotificationTemplate 显示 SmsTemplates ?也就是说,我想要过滤器,但它必须是只读的。下拉列表不能下拉,它必须只显示这些SmsTemplates所属的 NotificationTemplate 的名称。要查看另一个 NotificationTemplate 的SmsTemplates,用户必须点击其他模板中的View SMS Templates

1 个答案:

答案 0 :(得分:1)

filter template的代码隐藏是告诉过滤器从查询字符串中获取其值的原因。它检查DefaultValue属性,如果设置为值,则将其分配给过滤器。您要做的是添加逻辑,当 DefaultValue 具有值时,该过滤器使过滤器为只读。使其成为只读的最简单方法是禁用控件。以下是如何为默认的 ForeignKey.ascx.cs 实现它:

protected void Page_Init(object sender, EventArgs e)
{
    if (!Page.IsPostBack)
    {
        if (!Column.IsRequired)
        {
            DropDownList1.Items.Add(new ListItem("[Not Set]", NullValueString));
        }
        PopulateListControl(DropDownList1);
        // Set the initial value if there is one
        string initialValue = DefaultValue;
        if (!String.IsNullOrEmpty(initialValue))
        {
            DropDownList1.SelectedValue = initialValue;
            DropDownList1.Enabled = false;
        }
    }
}