// Загрузка/Обновление данных из БД void LoadAllData() { DataList_CarBrand.exFill("CarBrand"); DataList_CarModel.exFill("CarModel", Base.CustomQueries["CarModelFill"]); DataList_Cars.exFill("Cars", Base.CustomQueries["CarsFill"]); DataList_CarType.exFill("CarType"); DataList_Drivers.exFill("Drivers"); DataList_Organizations.exFill("Organizations"); DataList_Staff.exFill("Staff", Base.CustomQueries["StaffFill"]); DataList_StaffPosition.exFill("StaffPosition"); SetColumnHeaders(); void SetColumnHeaders() { // [STEP: 1] - Перебирает каждую вкладку в TabControl foreach (TabPage p in TabMain.TabPages) { // [STEP: 2] - Перебирает каждый DataGridView в текущей вкладке(но он всего один) foreach (DataGridView grid in p.Controls.OfType <DataGridView>()) { // [STEP: 3] - Получение списка заголовков по ключу(наименование DataGrid) grid.CellDoubleClick += Grid_CellDoubleClick;; grid.CellClick += Grid_CellClick;; List <string> lst = Base.ColumnHeaders[grid.Name]; for (int i = 0; i < grid.ColumnCount; i++) { grid.Columns[i].HeaderText = lst[i]; } } } } }
// Обновление конкретной таблицы void UpdateData(int rowIndex = -1, bool delete = false, bool multirow = false) { DataGridView grid = (DataGridView)TabMain.SelectedTab.Controls[0]; // Выбираем DataGridView в TabPage. NOTE: Controls[0], потому, что DataGridView единственный контрол в TabPage switch (TabMain.SelectedTab.Name) { case "FPage_CarBrand": DataList_CarBrand.exFill("CarBrand"); break; case "FPage_CarModel": DataList_CarModel.exFill("CarModel", Base.CustomQueries["CarModelFill"]); break; case "FPage_Cars": DataList_Cars.exFill("Cars", Base.CustomQueries["CarsFill"]); break; case "FPage_CarType": DataList_CarType.exFill("CarType"); break; case "FPage_Drivers": DataList_Drivers.exFill("Drivers"); break; case "FPage_Organizations": DataList_Organizations.exFill("Organizations"); break; case "FPage_Staff": DataList_Staff.exFill("Staff", Base.CustomQueries["StaffFill"]); break; case "FPage_StaffPosition": DataList_StaffPosition.exFill("StaffPosition"); break; } #region Выделение последней выделенной строки if (rowIndex != -1 && delete == false && multirow == false) { grid.ClearSelection(); grid.CurrentCell = grid[1, rowIndex]; grid.ClearSelection(); grid[1, rowIndex].Selected = true; } else if (delete == true && multirow == false) { if (grid.RowCount > 0) { int lastRow = grid.Rows.Count; if (rowIndex == lastRow) { grid.ClearSelection(); grid.CurrentCell = grid[1, grid.Rows.Count - 1]; grid.ClearSelection(); grid[1, grid.Rows.Count - 1].Selected = true; } else { grid.ClearSelection(); grid.CurrentCell = grid[1, rowIndex]; grid.ClearSelection(); grid[1, rowIndex].Selected = true; } } } else if (delete == true && multirow == true) { if (grid.RowCount > 0) { grid.ClearSelection(); grid.CurrentCell = grid[1, 0]; grid.ClearSelection(); grid[1, 0].Selected = true; } } else { grid.ClearSelection(); grid.CurrentCell = grid[1, grid.Rows.Count - 1]; grid.ClearSelection(); grid[1, grid.Rows.Count - 1].Selected = true; } #endregion }