// +------------------------------------+ // | Синхронизация работы DataGrid | // +====================================+ // | LoadAllData---------------[ OK ] | // | UpdateData----------------[ OK ] | // | UpdateAllData-------------[ OK ] | // | AddRow--------------------[ OK ] | // | EditRow-------------------[ OK ] | // | RemoveRow-----------------[ OK ] | // | GetCurrentRowInfo---------[ OK ] | // +------------------------------------+ // Загрузка данных из БД void LoadAllData() { DataList_Estimate.exFill("Estimate", Base.CustomQueries["EstimateFill"]); DataList_Trackinglists.exFill("Trackinglists", Base.CustomQueries["TrackinglistFill"]); 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++) { if (grid.Name.Equals("DataList_Trackinglists")) { break; } else { grid.Columns[i].HeaderText = lst[i]; } } } } // Костыль для заголовков Trackinglist for (int i = 1; i < DataList_Trackinglists.ColumnCount - 1; i++) { List <string> lst = Base.ColumnHeaders[DataList_Trackinglists.Name]; DataList_Trackinglists.Columns[i + 1].HeaderText = lst[i]; } } }
// Обновление всех столбцов void UpdateAllData() { DataList_Estimate.exFill("Estimate", Base.CustomQueries["EstimateFill"]); DataList_Trackinglists.exFill("Trackinglists", Base.CustomQueries["TrackinglistFill"]); }
// Обновление конкретной таблицы 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_Estimate": DataList_Estimate.exFill("Estimate", Base.CustomQueries["EstimateFill"]); break; case "FPage_Trackinglists": DataList_Trackinglists.exFill("Trackinglists", Base.CustomQueries["TrackinglistFill"]); break; } #region Выделение последней выделенной строки if (rowIndex != -1 && delete == false && multirow == false) { grid.ClearSelection(); grid.CurrentCell = grid[2, rowIndex]; grid.ClearSelection(); grid[2, 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[2, grid.Rows.Count - 1]; grid.ClearSelection(); grid[2, grid.Rows.Count - 1].Selected = true; } else { grid.ClearSelection(); grid.CurrentCell = grid[2, rowIndex]; grid.ClearSelection(); grid[2, 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 { if (grid.RowCount > 1) { grid.ClearSelection(); grid.CurrentCell = grid[2, grid.Rows.Count - 1]; grid.ClearSelection(); grid[2, grid.Rows.Count - 1].Selected = true; } } #endregion }