我有一个用数据表填充的gridview,并且有一个带有复选框的项目模板。即使选中该复选框,cs代码也会显示checked = false。
天冬氨酸:
<asp:GridView ID="gvListOfPages" runat="server" AutoGenerateColumns="false" ShowHeader="false">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:CheckBox ID="chkPages" runat="server" />
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="PageName" />
</Columns>
</asp:GridView>
C#:
foreach (GridViewRow row in gvListOfPages.Rows)
{
System.Web.UI.WebControls.CheckBox chk = (System.Web.UI.WebControls.CheckBox)row.Cells[0].FindControl("chkPages");
if (chk != null && chk.Checked)
{
int arrayIndex = Convert.ToInt32(chk.ID.Substring(chk.ID.Length - 1, chk.ID.Length));
}
}
答案 0 :(得分:1)
只需更改
(System.Web.UI.WebControls.CheckBox)row.Cells[0].FindControl("chkPages")
击> <击> 撞击>到
(System.Web.UI.WebControls.CheckBox)row.FindControl("chkPages")
使用FindControl
时无需指定单元格。您可能可能会遇到chk != null
条件
如果情况并非如此,那么请确保您GridView
Page_Load
!IsPostBack
内protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
//Bind your grid here
}
}
绑定{。}}。
insert
希望这有帮助。