.net - CheckBox Gridview Aktivieren und Deaktivieren



asp.net (2)

Ich habe eine Gridview, bei der die Kontrollkästchen deaktiviert sind. Ich möchte sie aktivieren, wenn ich auf die Bearbeitungsschaltfläche klicke, die sich ebenfalls in der Rasteransicht befindet. Hier ist das Markup

<asp:GridView ID="grd_Bookcode" runat="server" DataSourceID="sqldatasource1" 
autogeneratecolumns="False" onrowcommand="grd_Bookcode_RowCommand1" 
onrowdatabound="grd_Bookcode_RowDataBound">
<Columns>
    <asp:BoundField DataField="BookCode" HeaderText="Book Code"/>
    <asp:BoundField DataField="mag_name" HeaderText="Name"/>
    <asp:BoundField DataField="display_date" HeaderText="Display Date"/>
   <asp:TemplateField HeaderText = "PC">
        <ItemTemplate>
            <asp:CheckBox ID="CheckBox1" runat="server" Checked='<%# Eval("82_PC").ToString() == "1" ? true:false %>' Enabled="false" />
        </ItemTemplate>
     </asp:TemplateField>
     <asp:TemplateField HeaderText="eReader">
        <ItemTemplate>
            <asp:CheckBox ID="CheckBox2" runat="server" Checked='<%# Eval("83_eReader").ToString() == "1" ? true:false %>' Enabled="false" />
        </ItemTemplate>
    </asp:TemplateField>
     <asp:TemplateField HeaderText="Tablet">
        <ItemTemplate>
            <asp:CheckBox ID="CheckBox3" runat="server" Checked='<%# Eval("84_Tablet").ToString() == "1" ? true:false %>' Enabled="false"/>
        </ItemTemplate>
    </asp:TemplateField>
     <asp:TemplateField HeaderText="Mobile">
        <ItemTemplate>
            <asp:CheckBox ID="CheckBox4" runat="server" Checked='<%# Eval("85_Mobile").ToString() == "1" ? true:false %>' Enabled="false" />
        </ItemTemplate>
    </asp:TemplateField>
     <asp:TemplateField HeaderText="None">
        <ItemTemplate>
            <asp:CheckBox ID="CheckBox5" runat="server" Checked='<%# Eval("86_None").ToString() == "1" ? true:false %>' Enabled="false" />
        </ItemTemplate>
   </asp:TemplateField>
    <asp:CommandField ShowEditButton="True" />
</Columns>

Und dann ist hier der Code, den ich versuche zu verwenden. Grundsätzlich möchte ich, wenn ich die Bearbeitungsschaltfläche drücke, die Kontrollkästchen selbst aktivieren. Aus irgendeinem Grund ist das Kontrollkästchen beim Laden der Seite nicht aktiviert. Ich habe gerade damit begonnen, "Checkbox1" zu aktivieren, nachdem die Bearbeitungsschaltfläche angeklickt wurde, möchte aber eventuell alle 5 Checkboxen aktivieren.

 protected void grd_Bookcode_RowCommand1(object sender, GridViewCommandEventArgs e)
    {
        if (e.CommandName == "Edit")
        {
            int index = Convert.ToInt32(e.CommandArgument);

            GridViewRow row = grd_Bookcode.Rows[index];

            CheckBox chk = (CheckBox)row.FindControl("CheckBox1");
            chk.Enabled = true;


        }
    }

https://ffff65535.com


Ich denke, Sie könnten alle Zeilen der GridView durchlaufen und die Checkboxen wie folgt aktivieren:

    protected void grd_Bookcode_RowCommand(object sender, GridViewCommandEventArgs e)
    {
        if (e.CommandName == "Edit")
        {
            for (int index = 0; index < GridView1.Rows.Count; index++)
            {
                CheckBox chk = grd_Bookcode.Rows[index].FindControl("CheckBox" + index + 1) as CheckBox;
                chk.Enabled = true;
            }
        }
    }

Hoffe das hilft!!


Wenn Sie möchten, dass das Bearbeitungssteuerelement von dem Standardsteuerelement abweicht, sollten Sie das "EditItemTemplate" verwenden. Dadurch kann die Bearbeitungszeile verschiedene Steuerelemente, Werte usw. haben, wenn sich der Modus der Zeile ändert.

Beispiel:

        <Columns>
            <asp:TemplateField HeaderText="PC">
                <ItemTemplate>
                    <asp:CheckBox ID="CheckBox1" runat="server" Checked='<%# Eval("82_PC").ToString() == "1" ? true:false %>' Enabled="false" />
                </ItemTemplate>
                <EditItemTemplate>
                    <asp:CheckBox ID="CheckBox1" runat="server" Checked="true" Enabled="false" />
                </EditItemTemplate>
            </asp:TemplateField>
        </Columns>




checkbox