【发布时间】:2011-05-19 17:02:16
【问题描述】:
我将一个可为空的布尔列绑定到一个复选框。 如果该列为空,我如何默认检查复选框,但如果存在则保留真/假值?
<asp:CheckBox ID="boolCheckBox" runat="server" Checked='<%# Bind("MyBoolColumn") %>'
【问题讨论】:
标签: asp.net data-binding
我将一个可为空的布尔列绑定到一个复选框。 如果该列为空,我如何默认检查复选框,但如果存在则保留真/假值?
<asp:CheckBox ID="boolCheckBox" runat="server" Checked='<%# Bind("MyBoolColumn") %>'
【问题讨论】:
标签: asp.net data-binding
与 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;
}
}
【讨论】:
试试这个:
<asp:CheckBox ID="boolCheckBox" runat="server" "<%# (Bind("MyBoolColumn") == null? "Checked='checked'" : null %>">
【讨论】:
不确定这是否可行,但试一试:
<%# If(Bind("MyBoolColumn") Is Nothing, True, Bind("MyBoolColumn")) %>
【讨论】:
您可以在数据库级别进行。像这样的:
SELECT
MyBooleanColumn =
Case
When MyBooleanColumn Is Null Then 1
Else MyBooleanColumn End
FROM YourTable
【讨论】:
你可以在你的模型中添加一个只有 getter 的属性:
public class SomeClass
{
public bool? MyBoolColumn { get; set; }
public bool MyBoolColumnChecked
{
get { return MyBoolColumn ?? true; }
}
}
然后绑定到新属性
Checked='<%# Bind("MyBoolColumnChecked") %>'
【讨论】: