我将一个可以为空的布尔列绑定到CheckBox。 如果列为空,我如何默认选中复选框,但如果存在,则保留true / false值?
<asp:CheckBox ID="boolCheckBox" runat="server" Checked='<%# Bind("MyBoolColumn") %>'
答案 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") %>'