.net - 复选框 Gridview 启用和禁用

标签 .net asp.net gridview checkbox

我有一个 GridView ,其中复选框开始被禁用。我想在单击 GridView 中的编辑按钮时启用它们。这是标记

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

然后这是我尝试使用的代码。基本上,当我点击编辑按钮时,我希望启用复选框本身。无论出于何种原因,当页面重新加载时,该复选框根本不会启用。我刚开始尝试在单击编辑按钮后启用“Checkbox1”,但最终希望启用所有 5 个复选框。

 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;


        }
    }

最佳答案

如果您希望编辑控件与标准控件不同,则应使用“EditItemTemplate”。这将允许编辑行在行模式更改时具有不同的控件、值等。

示例:

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

关于.net - 复选框 Gridview 启用和禁用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7364201/

相关文章:

.net - 为什么 App.config 是一个比源代码更安全的存储连接字符串的位置?

c# - ASP.NET 单文本框多关键词搜索

c# - 创建缩略图会产生质量很差的图像

java - 在 ArrayAdapter 内启动 fragment

c# - Dispose() 方法中 GC.SuppressFinalize(this) 的目的是什么?

c# - 从 WPF 引用 .NET Core 1.0 库

c# - 用于 .net 开发的签名板

.net - 有人可以解释 MustOverride 吗?

android - 如何将项目从 gridview 拖放到另一个布局中

java - 如何将viewpager中的全屏图像显示为gridview中的小图像?