Asp.net 基于属性设置Enable=True或False的简单方法
我有一个带有asp:LinkButton的Asp.net 基于属性设置Enable=True或False的简单方法,asp.net,Asp.net,我有一个带有asp:LinkButton的,我想根据属性I Eval()将属性设置为true或false,类似这样 <asp:LinkButton ID="btnEdit" runat="server" Text="Edit" CommandName="Edit" Enabled='<%# (int?)Eval("KittenFriendlyStatus") == (int)KittenEnum.Awwwww %>' /> 然而,我的语法是完全错误的,谁能
,我想根据属性I Eval()将属性设置为true或false,类似这样
<asp:LinkButton ID="btnEdit" runat="server" Text="Edit" CommandName="Edit"
Enabled='<%# (int?)Eval("KittenFriendlyStatus") == (int)KittenEnum.Awwwww %>' />
然而,我的语法是完全错误的,谁能为我纠正它,或建议一个更好的方式做这件事?我以前从未使用过C语言,只使用过Javascript。您不能在服务器控件上使用数据绑定语法。要解决此问题,需要找到模板控件绑定时发生的事件。这将取决于控制。因此,假设模板控件有一个传递对象beind-bound的
ItemDataBound
事件。添加如下所示的事件处理程序:
public void Control1_ItemDataBound(Control sender, Object data, EventArgs args) {
sender.FindControl("btnEdit").Enabled = (int?)DataBinder.Eval(data, "KittenFriendlyStatus") == (int)KittenEnum.Awwwww;
}
protected bool EnableEdit
{
get { return btnEdit.Enabled; }
set { btnEdit.Enabled = value; }
}
应该是
Enabled='<%# (int?)Eval("KittenFriendlyStatus") == (int)KittenEnum.Awwwww ? true : false %>'
Enabled=''
在您的实例中,@Chiwee建议使用ItemDataBound事件可能就是您所需要的
如果您需要提供在多个位置进行管理的功能,则可以使用属性以如下方式干净地管理内容:
public void Control1_ItemDataBound(Control sender, Object data, EventArgs args) {
sender.FindControl("btnEdit").Enabled = (int?)DataBinder.Eval(data, "KittenFriendlyStatus") == (int)KittenEnum.Awwwww;
}
protected bool EnableEdit
{
get { return btnEdit.Enabled; }
set { btnEdit.Enabled = value; }
}
或者,如果您需要同时管理多个按钮:
protected bool EnableEdit
{
set
{
btn1.Enabled = value;
btn2.Enabled = value;
//...
}
}
我经常使用的一种方法是代码隐藏中的函数来设置属性,如:
Enabled=='<%# DoEnable(Eval("KittenFriendlyStatus"))%>'
//in code-behind add this function:
public bool DoEnable(object status)
{
bool enable = //decide here
return enable;
}
Enabled==''
//在代码隐藏中添加此函数:
公共bool DoEnable(对象状态)
{
bool enable=//在这里决定
返回使能;
}