Check a CheckBoxField from code behind file

2020-04-27 04:39发布

问题:

It seems CheckBoxField won't accept an ID property, so I can't directly call the component in the code behind file.

<asp:DetailsView ID="dv" runat="server" AutoGenerateRows="False" 
    DataKeyNames="ID" DataSourceID="ds" DefaultMode="Insert" 
    OnItemInserting="dv_ItemInserting" OnItemInserted="dv_ItemInserted"
    OnItemUpdated="dv_ItemUpdated" OnItemCommand="dv_ItemCommand" 
    EnableModelValidation="True">
    <Fields>
        <asp:BoundField DataField="ID" HeaderText="ID" InsertVisible="false" ReadOnly="True" SortExpression="ID" />
        <asp:CheckBoxField ID="chkMidmarket" DataField="Midmarket_Flag" HeaderText="Midmarket" SortExpression="Midmarket_Flag" runat="server" />
        ...
    </Fields>
</asp:DetailsView>

How would I check the checkbox from the code behind file?

回答1:

In syour design view go to gridview edit columns and select the column and click convert to template field

    <asp:TemplateField HeaderText="Midmarket" SortExpression="Midmarket_Flag">
        <ItemTemplate>
            <asp:CheckBox ID="CheckBox1" runat="server" OnCheckedChanged ="CheckBox_CheckedChanged"
                Checked='<%# Bind("Midmarket_Flag") %>' Enabled="false" />
        </ItemTemplate>
    </asp:TemplateField>

Now you can add click event as above and your event something like below

protected void CheckBox_CheckedChanged(object sender, EventArgs e)
{
    try
    {
        CheckBox cb = sender as CheckBox;
        GridViewRow gr = cb.Parent.Parent as GridViewRow;
        string key = GridView1.DataKeys[gr.DataItemIndex].Value.ToString();
    }
    catch (Exception exc)
    {
    }
}


回答2:

use

<asp:CheckBox ID="youid" runat="server" />

this way you can access it from your code behind

youid.Checked = true;


标签: c# asp.net .net