【问题标题】:Default a Null Value on DataBind在 DataBind 上默认 Null 值
【发布时间】:2011-05-19 17:02:16
【问题描述】:

我将一个可为空的布尔列绑定到一个复选框。 如果该列为空,我如何默认检查复选框,但如果存在则保留真/假值?

<asp:CheckBox ID="boolCheckBox" runat="server" Checked='<%# Bind("MyBoolColumn") %>' 

【问题讨论】:

    标签: asp.net data-binding


    【解决方案1】:

    与 Eval 不同,显然你不能用 Bind 做很多事情,除了使用字符串格式:

    Bind("MyColumn", "{0:c}"))

    我找到的解决方案是使用 ItemCreated 事件

            protected void myListView_OnItemCreated(object sender, ListViewItemEventArgs e)
        {
            if (e.Item.ItemType == ListViewItemType.InsertItem)
            {
                ((CheckBox)((ListView)sender).InsertItem.FindControl("MyCheckBox")).Checked = true;
            }
        }
    

    【讨论】:

      【解决方案2】:

      试试这个:

      <asp:CheckBox ID="boolCheckBox" runat="server" "<%# (Bind("MyBoolColumn") == null? "Checked='checked'" : null %>">
      

      【讨论】:

        【解决方案3】:

        不确定这是否可行,但试一试:

        <%# If(Bind("MyBoolColumn") Is Nothing, True, Bind("MyBoolColumn")) %>
        

        【讨论】:

          【解决方案4】:

          您可以在数据库级别进行。像这样的:

          SELECT 
          MyBooleanColumn = 
          Case 
          When MyBooleanColumn Is Null Then 1 
          Else MyBooleanColumn End
          FROM YourTable
          

          【讨论】:

          • 是的,但通常在数据库级别执行此类操作以影响 UI 问题会产生其他问题。最好在更接近其使用情况的情况下对其进行评估。
          【解决方案5】:

          你可以在你的模型中添加一个只有 getter 的属性:

          public class SomeClass
          {
              public bool? MyBoolColumn { get; set; }
              public bool MyBoolColumnChecked
              {
                  get { return MyBoolColumn ?? true; }
              }
          }
          

          然后绑定到新属性

          Checked='<%# Bind("MyBoolColumnChecked") %>'
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2012-01-18
            • 2020-12-25
            • 2018-11-17
            • 2014-09-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多