Заполнить DataGridView 2 столбцами из списка

#c# #winforms #datagridview

#c# #winforms — формы #просмотр сетки данных #winforms #datagridview

Вопрос:

Я пытаюсь привязать список элементов к a DataGridView . Проблема в том, что он показывает все столбцы в списке, и я хочу показать только 2 из них, а остальные оставить (возможно, чтобы сделать их невидимыми), потому что они содержат некоторые идентификаторы, важные для логики. Это то, что у меня есть до сих пор:

 private void BindFormData(object sender, EventArgs e)
{
    //returns a list of items
    var extraParamters = context.getExtraParameters(scheduleId, exportId);

    if (extraParamters.Count > 0)
    {
            dataGridView1.DataSource = extraParamters;
    }
}
  

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

 Id | accId | Name | Value | custId | 
 1    150    Name    15      10
 2    200    Name    25      10
  

И так далее..

Как мне показать только Name Value столбцы и? Моя идея заключается в том, что я сделаю их доступными для редактирования в DataGridView , и что я также смогу вставлять новые записи.

Ответ №1:

Пусть ваш просмотр сетки автоматически генерирует столбцы, а затем просто удаляет их.

  • вы также можете создать все это в коде, хотя это может быть проще для вас, пока вы не привыкнете к этому.

Итак, что-то вроде этого:

  dataGridView1.AutoGenerateColumns = true;
 dataGridView1.DataSource = extraParamters;
 dataGridView1.Columns.Remove("accId");
 dataGridView1.Columns.Remove("custId");
 dataGridView1.Columns["Id"].Visible = false;
  

Обратите внимание, что я не удалял id столбец — просто скрыл его. Он понадобится вам для обновления в будущем.

Или просто скройте те, которые вам не нужны

  dataGridView1.AutoGenerateColumns = true;
 dataGridView1.DataSource = extraParamters;
 dataGridView1.Columns["accId"].Visible = false;
 dataGridView1.Columns["custId"].Visible = false;
 dataGridView1.Columns["Id"].Visible = false;
  

Комментарии:

1. я использую winforms, и это для asp.net .

2. Извините — только что заметил. Повторите это сейчас

3. Спасибо, он должен работать, но когда он попадает в то место, где я задаю имя столбца (независимо от того, скрываю я его или удаляю), он напрямую загружает форму, как будто не может найти имя столбца в списке. Например. здесь dataGridView1.Columns["accId"].Visible = false; и затем DataGridView пуст.

4. установите точку останова и проверьте свой источник данных, чтобы убедиться, что имена полностью совпадают. Вы также можете ссылаться на столбец по индексу (основанному на нуле) — так dataGridView1.Columns[0].Visible = false; вы скроете первый столбец.

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