В приложении 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 заполняется, и теперь столбец кнопок отображается как третий столбец (второй снимок экрана). Но он должен быть показан как последний столбец всегда !.
Как разобраться с этим, пожалуйста?
Смотрите снимки экрана.
EDIT: если я добавлю столбец после привязки, он будет показан правильно. Но я хочу это первым!
Подпишите событие DataBindingComplete
и сбросьте свойство DisplayIndex
.
void dataGridView1_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
{
dgEmployeeEarnings.Columns["ACTION"].DisplayIndex = dgEmployeeEarnings.Columns.Count - 1;
}
column.DisplayIndex = lastIndex