Member 12361495 Ответов: 1

C# gridview cellformatting error “столбец не принадлежит таблице”


Я пытаюсь установить изображение в столбце GridViewImageColumn. Все в порядке, но когда я добавляю новую строку, я получаю ошибку: столбец "IsMetadata" не принадлежит таблице.

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

Я добавляю новую строку по кнопке:

private void bt_AddNew_Click(object sender, EventArgs e)
{
     GridViewName.ReadOnly = false;
     GridViewName.AllowAddNewRow = false;
     GridViewName.Rows.AddNew();
}


затем я хочу отобразить в столбце "column1" изображение:

private void GridViewName_CellFormatting(object sender, CellFormattingEventArgs e)
{
      if (e.Column.Name == "column1")
      {
          if (e.CellElement.RowInfo.Cells["IsMetadata"].Value != DBNull.Value)
          {
              if (Convert.ToBoolean(e.CellElement.RowInfo.Cells["IsMetadata"].Value))
              { 
                  e.CellElement.Image = Accountant.Properties.Resources.WasashleliPapka;
                  e.CellElement.ImageAlignment = ContentAlignment.MiddleLeft;
                  e.CellElement.TextImageRelation = TextImageRelation.ImageBeforeText;
               }
           }
      }
 }


Пожалуйста, помогите, как избежать этой ошибки: "столбец не принадлежит таблице"

1 Ответов

Рейтинг:
1

OriginalGriff

Мы не можем вам в этом помочь: у нас нет доступа ни к вашему GridView, пока он работает, ни к вашему источнику данных вообще - а это именно то, что вам нужно.

Ошибка очевидна: в источнике данных, из которого была заполнена ваша таблица, нет столбца под названием "IsMetadata".
А почему бы и нет? Мы же не знаем!

Так что все будет зависеть от тебя.
К счастью, у вас есть инструмент, который поможет вам выяснить, что происходит: отладчик. Как вы его используете, зависит от вашей системы компилятора, но быстрый поиск в Google имени вашей IDE и "отладчика" должен дать вам необходимую информацию.

Поместите точку останова в первую строку функции и запустите код через отладчик. Затем посмотрите на свой код и на свои данные и определите, что должно произойти вручную. Затем по одному шагу в каждой строке проверяйте, что то, что вы ожидали, произойдет именно так, как и произошло. Когда это не так, тогда у вас есть проблема, и вы можете вернуться назад (или запустить ее снова и посмотреть более внимательно), чтобы выяснить, почему.

Извините, но мы не можем сделать это за вас - пришло время вам освоить новый (и очень, очень полезный) навык: отладку!


Member 12361495

Я отлаживаю всю строку, столбец "IsMetadata" находится в gridview, если я использую другой столбец, например "column555", я получу ту же ошибку, даже если столбец существует. в CellFormatting void я не могу получить dgview.SelectedRows[0].Ячейки["IsMetadata"].Value.ToString(), столбец существует, но я получаю ошибку.

Member 12361495

Может быть, когда я добавляю строку в gridview неправильно???