У меня есть простой GridViewгалочкой состояние внутри GridView
<asp:GridView ID="GridView1" runat="server" DataKeyNames="OriginatorID" AutoGenerateColumns="False"
AllowPaging="True" OnPageIndexChanging="GridView1_PageIndexChanging" PageSize="5"
OnPreRender="GridView1_PreRender">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:CheckBox ID="CheckBox1" runat="server" />
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="Originator" HeaderText="Originator" />
</Columns>
</asp:GridView>
Я звоню следующий код внутри GridView1_PageIndexChanging
события
foreach (GridViewRow item in GridView1.Rows)
{
try
{
if (item.RowType == DataControlRowType.DataRow)
{
CheckBox chk = (CheckBox)(item.Cells[0].FindControl("CheckBox1"));
// chk.checked will access the checkbox state on button click event
if (chk.Checked)
{
//code if checked
}
else
{
}
}
}
catch (Exception ex)
{
throw ex;
}
}
проблема, если выбрать флажок и выбрать следующую страницу на GridView это никогда не выполняйте код внутри
if (chk.Checked)
, хотя я проверил chekBoxe s оно не получает их состояние как проверено.
Почему это могло случиться?
вы отлажены должны видеть получает 'ли chk' назначен контроль? «FindControl» возвращает «CheckBox»? Я не проверял, но, возможно, сгенерированное имя для 'CheckBox1' может не быть * CheckBox1 *. Попробуйте 'FindControl' с' CheckBox1.ClientID' –