我有一个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;
}
}
答案 0 :(得分:3)
如果希望Edit控件与标准控件不同,则应使用“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>
答案 1 :(得分:1)
我猜你可以循环遍历GridView的所有行,并启用如下所示的复选框:
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;
}
}
}
希望这会有所帮助!!