2011-05-19 139 views
4

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

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

回答

3

与Eval appar不同ently你不能做与绑定,除了使用字符串格式:

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

不知道这是否会工作,但给它一个镜头:

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

您可以在数据库级别做。事情是这样的:

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

真实的,但通常做这样的事情在数据库级别影响用户界面关注会产生其他问题。更好地评估它接近它的使用。 – CRice 2011-05-20 01:40:16

2

试试这个:

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

你可以只用一个getter到模型中添加属性:

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

然后绑定到新的物业

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