Исключение NullReference: при попытке проверить поле флажка в gridview - PullRequest
0 голосов
/ 28 февраля 2012

У меня есть вид сетки с некоторыми флажками.Поэтому после обновления вида сетки я пытаюсь увидеть, установлен ли один конкретный флажок или нет.Тем не менее я получаю сообщение об ошибке:

Исключение Null Reference было исключено из-за кода пользователя

Мой код:

<asp:TemplateField HeaderText="FollowUp" SortExpression="FollowUp">
   <EditItemTemplate>
      <asp:CheckBox ID="CheckBox1" runat="server" 
           Checked='<%# Bind("FollowUp") %>' />
   </EditItemTemplate>
   <ItemTemplate>
      <asp:CheckBox ID="chkFollowup" runat="server" 
           Checked='<%# Bind("FollowUp") %>' Enabled="false" />
   </ItemTemplate>
</asp:TemplateField>

Файл с выделенным кодом:

protected void GViewSrvcCheck_RowUpdated(object sender, GridViewUpdatedEventArgs e)
{
    foreach (GridViewRow gRow in GViewSrvcCheck.Rows)
    {
        CheckBox fllwup = gRow.FindControl("chkFollowup") as CheckBox;

        if (fllwup.Checked)//this is the one causes the error
        { 
        }
    }
}

Что здесь не так?и как я могу решить эту проблему?

1 Ответ

2 голосов
/ 28 февраля 2012

Возможны две проблемы:

  • Элемент управления не найден
  • Это не CheckBox

Если выВместо этого вы использовали бы приведение, вы бы знали, что это было:

CheckBox followUp = (CheckBox) gRow.FindControl("chkFollowup");

Почти всегда неправильно использовать as без проверки на ничтожность впоследствии.

Я подозреваю, что проблема в том, что ID на самом деле также имеет что-то, что идентифицирует строку внутри него ... но с указанным выше изменением вы по крайней мере сможете определить, какой путь ошибки вы выбрали.

Вам, вероятно, придется изменить способ нахождения элемента управления, но до тех пор, пока "не найден элемент управления" является ошибкой , я думаю, что разумно оставить его, выдав исключение,Если отсутствующий элемент управления является допустимой ситуацией, вы должны явно обработать его, но в противном случае показывается страница с ошибкой пользователю и регистрируется исключение (например, с помощью ELMAH).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...