默认值为DataBind上的Null值

时间:2011-05-19 17:02:16

标签: asp.net data-binding

我将一个可以为空的布尔列绑定到CheckBox。 如果列为空,我如何默认选中复选框,但如果存在,则保留true / false值?

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

5 个答案:

答案 0 :(得分:3)

与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;
        }
    }

答案 1 :(得分:2)

试试这个:

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

答案 2 :(得分:1)

不确定这是否有效,但请试一试:

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

答案 3 :(得分:0)

您可以在数据库级别执行此操作。像这样:

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

答案 4 :(得分:0)

您可以在模型中添加仅包含getter的属性:

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

然后绑定到新属性

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