Отображение столбца кнопки в DataGridView

1

В приложении Win forms у меня проблема с привязкой данных и отображение столбца командной строки в DataGridView в качестве последнего столбца, позволяющего пользователям сохранять каждую запись после редактирования содержимого.

Это обязательная часть, выполняемая в классе презентатора

private void ShowEarnings()
{
    BindingSource BS = new BindingSource();
    var wageInfo = _WageManager.PrepareEarnings(_Model); // wageInfo contains a list of earnings objects.
    BS.DataSource = wageInfo.GetEarnigsList(); //Earnings List contained in WageInfo object is returned.           
    _View.EarningDetails = BS;
}

В событии form_load я добавляю столбец командной кнопки в DGV следующим образом

private void ShowSaveEarningsButton()
{
    DataGridViewButtonColumn col = new DataGridViewButtonColumn();
    col.UseColumnTextForButtonValue = true;
    col.Text = "SAVE";
    col.Name = "ACTION";
    dgEmployeeEarnings.Columns.Add(col);
}

Когда форма загружается, последний столбец отображается с заголовком ACTION а пустая кнопка отображается в ячейке (первый снимок экрана). Когда ShowEarnings() метод ShowEarnings(), DGV заполняется, и теперь столбец кнопок отображается как третий столбец (второй снимок экрана). Но он должен быть показан как последний столбец всегда !.

Как разобраться с этим, пожалуйста?

Смотрите снимки экрана.

Изображение 174551

EDIT: если я добавлю столбец после привязки, он будет показан правильно. Но я хочу это первым!

  • 1
    Попробуйте установить column.DisplayIndex = lastIndex
  • 0
    @Sriram Sakthivel, не работает !. Проблема в том, что хотя он отображается как последний столбец изначально, он идет в 3-й столбец после привязки?
Теги:
data-binding
datagridview
mvp

1 ответ

1
Лучший ответ

Подпишите событие DataBindingComplete и сбросьте свойство DisplayIndex.

void dataGridView1_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
{
    dgEmployeeEarnings.Columns["ACTION"].DisplayIndex = dgEmployeeEarnings.Columns.Count - 1;
}
  • 0
    Это решило проблему :) Большое спасибо!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню