我有代码,
<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.
代码有什么问题?
答案 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
只会将其灰显。