在c#asp.net中启用DropdownList的List项

时间:2017-03-15 14:43:42

标签: c# asp.net

我有代码,

<asp:ListItem Value="Above 50" Text="Above 50"  Enabled='<%# (((string)(Eval("Gender"))).Contains("Male"))? true:false%>'></asp:ListItem>

条件是,如果用户是男性,那么项目&#39;高于50&#39;应该在dropdownList中启用,否则不启用。在这里,&#39;性别&#39;只不过是一个束缚的领域。

显示的错误是,

Databinding expressions are only supported on objects that have a DataBinding event. System.Web.UI.WebControls.ListItem does not have a DataBinding event.

代码有什么问题?

2 个答案:

答案 0 :(得分:0)

我相信你会以一种错误的方式接近这个问题。这个问题和答案似乎正是您所寻找的:How do I data bind Control.Enabled to !(field)?

在您的情况下,您将绑定到检查Gender值的函数或值。

答案 1 :(得分:0)

ListItem没有任何数据绑定事件。因此,Eval()不能在这里使用。

您需要在下拉列表中调用 DataBound 事件并在那里执行检查。

这样的事情 -

protected void MyDropDownList_DataBound(object sender, EventArgs e)
        {
            var ddl = sender as DropDownList;
            foreach (ListItem item in ddl.Items)
            {
                if (Gender == "Male")
                {
                    item.Attributes.Add("disabled", "disabled");
                }
            }
        }

请注意,enabled = false会删除列表项,而disabled = disabled只会将其灰显。