默认情况下,要检查详细信息视图的复选框以插入新记录吗?

时间:2012-10-28 20:08:46

标签: asp.net checkbox detailsview

我正在使用其DetailsView:插入的DefaultMode,我希望默认情况下复选框 选中,用户也可以将其更改为未选中,但要绑定复选框我们应该使用

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

这样就可以取消选中复选框的默认状态,那么我该如何解决这个问题呢?

3 个答案:

答案 0 :(得分:2)

当使用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;
            }
        }
}

当支持数据库值是非空位字段

时,这显然是最佳的

答案 1 :(得分:1)

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

<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);

答案 2 :(得分:0)

使用TemplateField:

<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;
}