Asp.net 数据绑定上的默认值为空
我正在将一个可为空的布尔列绑定到一个复选框。 如果列为null,我如何将复选框默认为选中,如果存在则保留真/假值Asp.net 数据绑定上的默认值为空,asp.net,data-binding,Asp.net,Data Binding,我正在将一个可为空的布尔列绑定到一个复选框。 如果列为null,我如何将复选框默认为选中,如果存在则保留真/假值 <asp:CheckBox ID="boolCheckBox" runat="server" Checked='<%# Bind("MyBoolColumn") %>' 不确定这是否可行,但试一试: <%# If(Bind("MyBoolColumn") Is Nothing, True, Bind("MyBoolColumn")) %> 您可以在
<asp:CheckBox ID="boolCheckBox" runat="server" Checked='<%# Bind("MyBoolColumn") %>'
不确定这是否可行,但试一试:
<%# If(Bind("MyBoolColumn") Is Nothing, True, Bind("MyBoolColumn")) %>
您可以在数据库级别执行。大概是这样的:
SELECT
MyBooleanColumn =
Case
When MyBooleanColumn Is Null Then 1
Else MyBooleanColumn End
FROM YourTable
试试这个:
<asp:CheckBox ID="boolCheckBox" runat="server" "<%# (Bind("MyBoolColumn") == null? "Checked='checked'" : null %>">
您可以在模型中添加一个只有getter的属性:
public class SomeClass
{
public bool? MyBoolColumn { get; set; }
public bool MyBoolColumnChecked
{
get { return MyBoolColumn ?? true; }
}
}
然后绑定到新属性
Checked='<%# Bind("MyBoolColumnChecked") %>'
Checked=''
与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;
}
}
没错,但通常在db级别执行类似操作以影响UI问题会产生其他问题。最好是更接近其使用情况进行评估。