nar86 Ответов: 2

Как проверить нулевое значение в gridview с помощью подкачки gridview


Мой код выглядит следующим образом
private void SaveCheckedValues()
      {
          System.Collections.ArrayList userdetails = new System.Collections.ArrayList();
          int index = -1;
          foreach (GridViewRow gvrow in grdRpt.Rows)
          {
              int.Parse((string)grdRpt.DataKeys[gvrow.RowIndex].Value);

              bool result = ((CheckBox)gvrow.FindControl("chkselecdata")).Checked;

              // Check in the Session
              if (Session["CHECKED_ITEMS"] != null)
                  userdetails = (System.Collections.ArrayList)Session["CHECKED_ITEMS"];
              if (result)
              {
                  if (!userdetails.Contains(index))
                      userdetails.Add(index);
              }
              else
                  userdetails.Remove(index);
          }
          if (userdetails != null && userdetails.Count > 0)
              Session["CHECKED_ITEMS"] = userdetails;
      }

В сетке следующим образом

selectdata  transacteeid  totalprice   Qty   Isactive

 checkbox                    25         1        1
 checkbox      2355          10         2        1
 checkbox      1234           8         1        1



в приведенном выше gridview первом ряду transacteeid значение пусто.

когда я запускаю приведенный выше код показывает ошибку следующим образом

unable to caste object of type system.DBNull to type System.String.

Ошибка отображается в следующей строке следующим образом


как проверить пустое значение в строке gridview.

int.Parse((string)grdRpt.DataKeys[gvrow.RowIndex].Value);

как решить эту ошибку.

Что я уже пробовал:

Мой код выглядит следующим образом

private void SaveCheckedValues()
      {
          System.Collections.ArrayList userdetails = new System.Collections.ArrayList();
          int index = -1;
          foreach (GridViewRow gvrow in grdRpt.Rows)
          {
              int.Parse((string)grdRpt.DataKeys[gvrow.RowIndex].Value);

              bool result = ((CheckBox)gvrow.FindControl("chkselecdata")).Checked;

              // Check in the Session
              if (Session["CHECKED_ITEMS"] != null)
                  userdetails = (System.Collections.ArrayList)Session["CHECKED_ITEMS"];
              if (result)
              {
                  if (!userdetails.Contains(index))
                      userdetails.Add(index);
              }
              else
                  userdetails.Remove(index);
          }
          if (userdetails != null && userdetails.Count > 0)
              Session["CHECKED_ITEMS"] = userdetails;
      }

В сетке следующим образом

selectdata  transacteeid  totalprice   Qty   Isactive

 checkbox                    25         1        1
 checkbox      2355          10         2        1
 checkbox      1234           8         1        1



в приведенном выше gridview первом ряду transacteeid значение пусто.

когда я запускаю приведенный выше код показывает ошибку следующим образом

unable to caste object of type system.DBNull to type System.String.

Ошибка отображается в следующей строке следующим образом


как проверить пустое значение в строке gridview.

int.Parse((string)grdRpt.DataKeys[gvrow.RowIndex].Value);

как решить эту ошибку.

Richard MacCutchan

Почему вы передаете значение в строку; эти два параметра несовместимы. Вы, кажется, просто пишете случайные строки кода в надежде, что что-то волшебным образом сделает то, что вы хотите.

2 Ответов

Рейтинг:
2

TSharma0407

int.Parse() используется для присвоения значения другой переменной после разбора значения.

Не используйте нижнюю строку, поэтому удалите ее из своего кода: -

int.Parse((string)grdRpt.DataKeys[gvrow.RowIndex].Value);

Ваша проблема будет решена после удаления этой строки.
проверьте также эту ссылку: Int32.Метод Синтаксического Анализа (String) (System)[^]


Рейтинг:
1

TarunShrivastav

Я думаю, что вы могли бы хранить

int.Parse((string)grdRpt.DataKeys[gvrow.RowIndex].Value)


в пользовательский объект. Если нет, то вы можете удалить эту строку.

и если вы хотите использовать его в качестве чека то

if (available.Where(x => x.id == gvForCheckBox.DataKeys[gvrow.RowIndex].Value.ToString()).Any())