gloomkolomna
@gloomkolomna
c#, WPF

Как упростить работу с datagridview?

Здравствуйте.
У меня есть, допустим, 10 объектов DGV. Для каждого из этого объекта используется событие CellValueChanged, где применяется однотипная процедура, в которой разное только имена объектов DGV.
Вот, что примерно выходит:
private void dgv_cat_CellValueChanged(object sender, DataGridViewCellEventArgs e)
        {
            NewLineAndUpdate_DB(dgv_cat, " ;cat_name;", "tbl_spr_category");
        }

private void dgv_otdel_CellValueChanged(object sender, DataGridViewCellEventArgs e)
        {
            NewLineAndUpdate_DB(dgv_otdel, " ;dep_name;", "tbl_spr_department");
        }
...

и так 10 раз.
Далее использую событие KeyDown и CellEnter, что аналогично по 10 раз пишется...

Можно ли как-то упростить?
  • Вопрос задан
  • 2821 просмотр
Решения вопроса 1
newross
@newross
Product owner
В данном случае можно сделать метод обертку:
public static void SubscribeToCellValueChanged(this DataGridView dataGridView, string p1, string p2) 
        {
            dataGridView.CellValueChanged += (sender,e) => NewLineAndUpdate_DB((DataGridView)sender, p1, p2);
        }

Затем в методе инициализации контролов с помощью этой обертки подписать каждый DataGridView:
dgv_otdel.SubscribeToCellValueChanged(" ;dep_name;", "tbl_spr_department");


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

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы