【问题标题】:Easy way to set Enable=True or False based on a property根据属性设置 Enable=True 或 False 的简单方法
【发布时间】:2011-03-29 16:03:34
【问题描述】:

我有一个带有 asp:LinkBut​​ton 的 <ItemTemplate>,我想根据属性 I Eval() 将属性 Enabled 设置为 true 或 false,类似于这样

    <asp:LinkButton ID="btnEdit" runat="server" Text="Edit" CommandName="Edit" 
Enabled='<%# (int?)Eval("KittenFriendlyStatus") == (int)KittenEnum.Awwwww %>' />

但是我的语法完全错误,任何人都可以为我解决这个问题,或者提出更好的方法吗?我以前从来没有用 C# 做过,只有 Javascript。

【问题讨论】:

    标签: asp.net


    【解决方案1】:

    您不能在服务器控件上使用数据绑定语法。要解决这个问题,需要找到模板控件绑定时发生的事件。这将取决于控制。所以,假设模板控件有一个ItemDataBound 事件,它传递了被绑定的对象。添加这样的事件处理程序:

    public void Control1_ItemDataBound(Control sender, Object data, EventArgs args) {
        sender.FindControl("btnEdit").Enabled = (int?)DataBinder.Eval(data, "KittenFriendlyStatus") == (int)KittenEnum.Awwwww;
    }
    

    【讨论】:

      【解决方案2】:

      应该是……

      Enabled='<%# (int?)Eval("KittenFriendlyStatus") == (int)KittenEnum.Awwwww ? true : false %>'
      

      【讨论】:

        【解决方案3】:

        在您的实例中,@Chiwee 使用 ItemDataBound 事件的建议可能是您所需要的。

        如果您需要提供在多个地方进行管理的能力,您可以像这样使用属性来干净地管理事物:

        protected bool EnableEdit 
        {
            get { return btnEdit.Enabled; }
            set { btnEdit.Enabled = value; }
        }
        

        或者如果您需要同时管理多个按钮:

        protected bool EnableEdit 
        {
            set 
            {
                btn1.Enabled = value;
                btn2.Enabled = value;
                //...
            }
        }
        

        【讨论】:

          【解决方案4】:

          我经常使用的一种方法是代码隐藏中的函数来设置属性,例如:

          Enabled=='<%# DoEnable(Eval("KittenFriendlyStatus"))%>' 
          
          //in code-behind add this function:
          
          public bool DoEnable(object status) 
          
          { 
             bool enable = //decide here 
             return enable; 
          }
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2020-03-23
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2023-03-31
            • 1970-01-01
            • 2019-11-21
            相关资源
            最近更新 更多