我正在使用DetailsView
它的DefaultMode
:插入,我想让它的复选框默认被选中,用户也可以将它更改为未选中,但绑定复选框我们应该使用
Checked='<%# Bind("Cit_Visible") %>'
这使得复选框的默认状态未被选中,那么我该如何解决呢?
我正在使用DetailsView
它的DefaultMode
:插入,我想让它的复选框默认被选中,用户也可以将它更改为未选中,但绑定复选框我们应该使用
Checked='<%# Bind("Cit_Visible") %>'
这使得复选框的默认状态未被选中,那么我该如何解决呢?
如果您希望在数据绑定时选中您的复选框,您可以为复选框的文本属性赋值。
<asp:CheckBox ID="chl" runat="Server" Checked="true" Text="<%# Bind('Cit_Visible') %>" />
在后面的代码上,您可以访问文本值以将其保存到 DB
CheckBox MyCheckbox = new CheckBox();
MyCheckbox = (CheckBox)DetailsView1.FindControl("chl");
Response.Write(MyCheckbox.Checked);
当使用 DetailsView 数据控件并且您有复选框值时,您可能会从处理所有显示模式的 asp:CheckBoxField 开始。如果您想保留复选框绑定,但也将默认设置为选中,您可以执行以下操作。
将字段转换为 TemplateField,可以通过 Visual Studio 的设计视图完成,也可以通过替换这种类型的块手动完成。
<asp:CheckBoxField DataField="Information" HeaderText="Information" SortExpression="Information" />
用这样的代码块
<asp:TemplateField HeaderText="Information" SortExpression="Information">
<EditItemTemplate>
<asp:CheckBox ID="chkInformation" runat="server" Checked='<%# Bind("Information") %>' />
</EditItemTemplate>
<InsertItemTemplate>
<asp:CheckBox ID="chkInformation" runat="server" Checked='<%# Bind("Information") %>' />
</InsertItemTemplate>
<ItemTemplate>
<asp:CheckBox ID="chkInformation" runat="server" Checked='<%# Bind("Information") %>' Enabled="false" />
</ItemTemplate>
</asp:TemplateField>
然后设置要检查的复选框默认值,您可以在代码隐藏中执行此操作
Protected Sub dvInformation_PreRender(sender As Object, e As EventArgs) Handles dvInformation.PreRender
If CType(sender, DetailsView).CurrentMode = DetailsViewMode.Insert Then
Dim chk As Object = CType(sender, DetailsView).FindControl("chkInformation")
If chk IsNot Nothing AndAlso chk.GetType Is GetType(CheckBox) Then
CType(chk, CheckBox).Checked = True
End If
End If
End Sub
C#(从 VB 转换而来
protected void dvInformation_PreRender(object sender, EventArgs e)
{
if (((DetailsView)sender).CurrentMode == DetailsViewMode.Insert) {
object chk = ((DetailsView)sender).FindControl("chkInformation");
if (chk != null && object.ReferenceEquals(chk.GetType(), typeof(CheckBox))) {
((CheckBox)chk).Checked = true;
}
}
}
当支持的数据库值是非空位字段时,这显然是最好的
使用模板字段:
<asp:TemplateField>
<ItemTemplate>
<asp:CheckBox ID="chk1" runat="server" OnInit="chk1_Init" Checked='<%# Bind("Cit_Visible") %>' />
</ItemTemplate>
</asp:TemplateField>
在 Init 方法中设置复选框默认值:
protected void chk1_Init(object sender, EventArgs e)
{
((CheckBox)sender).Checked = true;
}