raigen Ответов: 1

Добавьте столбец с серийным номером в datagridview, чтобы табличная модель была сгенерирована из базы данных


Я создал datagridview PlanningDataView, который связывает значение базы данных, которую я использую ADO.NET модель базы данных
private void MainDashboard_Load(object sender, EventArgs e)
     {
         int numberRow = 0;
         var planningList = _db.Plannings.Select((q) => new {ID = numberRow, Address = q.Address,
           Phone = q.Phone, Date = q.Date
         }).ToList();
         PlanningDataView.DataSource = planningList;
     }

Однако я хочу сделать столбец ID в первой сетке для генерации значения инкремента, точно так же, как серийные номера.
private void PlanningDataView_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
{
    int sno = 1;
    foreach (DataGridViewRow row in PlanningDataView.Rows)
    {
        row.Cells[0].Value = sno++;
    }

    //PlanningDataView.AutoResizeColumns();
}

Выход таков, идентификатор итерации, но только 0 число, то, что я хочу, это 1,2, 3 и т. д

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

Я удалить лямбда-идентификатор запроса, и решили добавить новый столбец после
 var planningList = _db.Plannings.Select((q) => new {Address = q.Address,
  Phone = q.Phone, Date = q.Date
}).ToList();
PlanningDataView.DataSource = planningList;


Это, сломать стиль стола, но работать
private void PlanningDataView_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
{
    int sno = 1;
    string ID = "ID";
    string headerID = "ID";

    if (PlanningDataView.Columns.Contains(ID))
        PlanningDataView.Columns.Remove(ID);
    {
       PlanningDataView.Columns.Add(ID, headerID);
    }


    PlanningDataView.Columns[ID].DisplayIndex = 0;

    foreach (DataGridViewRow row in PlanningDataView.Rows)
    {
        row.Cells[0].Value = sno++;
    }

    //PlanningDataView.AutoResizeColumns();

    //foreach (DataGridViewRow row in PlanningDataView.Rows)
    //{
    //    PlanningDataView.Rows[0].HeaderCell.Value = string.Format("{0}  ", row.Index + 1).ToString();
    //    row.Height = 25;
    //}
}

1 Ответов

Рейтинг:
1

RickZeeland

Поскольку вы используете planningList в качестве источника привязки, вам следует увеличить planningList.Идентификатор