2011-05-19 142 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") %>'