Asp.net 是否选中默认情况下要选中的detailsview复选框以插入新记录?

Asp.net 是否选中默认情况下要选中的detailsview复选框以插入新记录?,asp.net,checkbox,detailsview,Asp.net,Checkbox,Detailsview,我使用的是DetailsView,它的DefaultMode:insert,我想让它的复选框在默认情况下处于选中状态,用户也可以将其更改为未选中状态,但要绑定复选框,我们应该使用 Checked='<%# Bind("Cit_Visible") %>' Checked='' 这允许复选框的默认状态被取消选中,那么我如何解决这个问题呢 如果希望在数据绑定时选中复选框,则可以为复选框的文本属性赋值 <asp:CheckBox ID="chl" runat="Server" C

我使用的是
DetailsView
,它的
DefaultMode
:insert,我想让它的复选框在默认情况下处于选中状态,用户也可以将其更改为未选中状态,但要绑定复选框,我们应该使用

Checked='<%# Bind("Cit_Visible") %>' 
Checked=''

这允许复选框的默认状态被取消选中,那么我如何解决这个问题呢

如果希望在数据绑定时选中复选框,则可以为复选框的文本属性赋值

<asp:CheckBox ID="chl" runat="Server" Checked="true" Text="<%# Bind('Cit_Visible') %>" />

当使用DetailsView数据控件并且您有复选框值时,您可以从asp:CheckBoxField开始,该字段为您处理所有显示模式。如果要保留复选框绑定,但同时将默认值设置为选中,则可以执行以下操作

将字段转换为TemplateField,可以通过visual studio的“设计”视图或通过替换此类块手动完成

<asp:CheckBoxField DataField="Information" HeaderText="Information" SortExpression="Information" />
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>
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
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>
protected void chk1_Init(object sender, EventArgs e)
{
    ((CheckBox)sender).Checked = true;
}