У меня есть gridview, в котором поле шаблона содержит флажок в качестве одного из полей
<asp:TemplateField HeaderText="Confirm Driver Details" FooterText="Confirm Driver Details">
<ItemTemplate>
<asp:CheckBox ID="chkConfirmDetails" runat="server" MaxLength="100" Width="50px" Enabled="false" Checked="true"></asp:CheckBox>
</ItemTemplate>
</asp:TemplateField>
Первоначально это проверено и не включено.
Пользователь загружает файл, который загружается в объект и затем привязывается к сетке. Для события RowDataBound выполняется некоторая проверка данных. В некоторых случаях, если некоторые проверки не пройдены, я хочу установить флажок и снять его.
CheckBox chkConfirmDetails = (CheckBox)e.Row.Cells[e.Row.Cells.Count - 2].FindControl("chkConfirmDetails");
//If this is enabled then we just need to check whether it is ticked or not
if (!chkConfirmDetails.Enabled)
{
if (!ValidateDriver(_uploadData.DriverData[e.Row.DataItemIndex], out driverValidationMessage))
{
Label label = new Label();
label.Text = "Details of this Driver cannot be found<br />Please double-check to see if the Driver Number, Date of Birth and PPSN are entered correctly<br />If you are sure you have the correct details entered tick this box to confirm";
e.Row.Cells[e.Row.Cells.Count - 2].Controls.Add(label);
e.Row.Cells[e.Row.Cells.Count - 2].BackColor = System.Drawing.Color.Yellow;
((TableRow)e.Row.Cells[e.Row.Cells.Count - 2].Parent).BackColor = System.Drawing.Color.Red;
chkConfirmDetails.Enabled = true;
chkConfirmDetails.Checked = false;
_numberOfInvalidCells++;
}
}
Это все работает нормально, флажок становится активным и не отмечен.
Затем пользователь может установить флажок, чтобы подтвердить, что данные верны, и повторно подтвердить строку. В каждой строке сетки данных есть кнопка, которую пользователь может нажать, чтобы выполнить эту функцию. Поэтому, когда пользователь нажимает кнопку подтверждения строки, вышеупомянутый код вызывается снова. На этот раз флажок включен и может быть или не может быть отмечен в зависимости от того, что сделал пользователь.
Однако, когда я получаю ссылку на флажок с помощью метода FindControl, он все равно отображается как Не включено и не отмечено (даже если оно включено и не отмечено в форме)
Может кто-нибудь объяснить, почему это происходит, и способ получить фактическое состояние флажка?
EDIT
Глядя на данные Request.Form.AllKeys, в нем есть ключи для большинства других элементов шаблона в виде сетки (текстовые поля и dropDownLists), но нет флажка или кнопки подтверждения