private void PaintComputersForShedulerGrid(DataGridView sender) { DataGridViewRow[] rows = sender.Rows.OfType <DataGridViewRow>().ToArray(); foreach (DataGridViewRow dr in rows) { if (LastAgentVersionChecker.CompareVersions(Convert.ToString(dr.Cells["MagicUpdaterVersion"].Value)) == VersionCompareResult.Before) { dr.Cells["MagicUpdaterVersion"].Style.BackColor = Color.Pink; } if (LastAgentVersionChecker.CompareVersions(Convert.ToString(dr.Cells["MagicUpdaterVersion"].Value)) == VersionCompareResult.Equal) { dr.Cells["MagicUpdaterVersion"].Style.BackColor = Color.LightGreen; } if (LastAgentVersionChecker.CompareVersions(Convert.ToString(dr.Cells["MagicUpdaterVersion"].Value)) == VersionCompareResult.Subsequent) { dr.Cells["MagicUpdaterVersion"].Style.BackColor = Color.DeepSkyBlue; } if (Convert.ToInt32(dr.Cells["ComputerId"].Value) < 0) { dr.Cells["Selected"].ReadOnly = true; foreach (DataGridViewCell cell in dr.Cells) { cell.Style.BackColor = Color.LightGray; } } //Включен или нет if (Convert.ToInt32(dr.Cells["IsOn"].Value) == 1) { dr.Cells["IsOn"].Style.BackColor = Color.Green; } else { dr.Cells["IsOn"].Style.BackColor = Color.Red; } //Ошибка обмена if (Convert.ToBoolean(dr.Cells["ExchangeError"].Value) && string.IsNullOrEmpty(Convert.ToString(dr.Cells["OperState"].Value)) && Convert.ToInt32(dr.Cells["ComputerId"].Value) > 0) { dr.Cells["ShopName"].Style.BackColor = dr.Cells["LastSuccessfulReceive"].Style.BackColor = dr.Cells["LastSuccessfulUpload"].Style.BackColor = dr.Cells["OperationTypeRu"].Style.BackColor = dr.Cells["OperationCreationDate"].Style.BackColor = dr.Cells["OperState"].Style.BackColor = Color.PaleVioletRed; } //Статусы операций #region OperStates if (Convert.ToString(dr.Cells["OperState"].Value) == "Завершена с ошибкой" && Convert.ToInt32(dr.Cells["ComputerId"].Value) > 0) { dr.Cells["ShopName"].Style.BackColor = dr.Cells["LastSuccessfulReceive"].Style.BackColor = dr.Cells["LastSuccessfulUpload"].Style.BackColor = dr.Cells["OperationTypeRu"].Style.BackColor = dr.Cells["OperationCreationDate"].Style.BackColor = dr.Cells["OperState"].Style.BackColor = Color.PaleVioletRed; } else if (Convert.ToString(dr.Cells["OperState"].Value) == "Выполняется" && Convert.ToInt32(dr.Cells["ComputerId"].Value) > 0) { dr.Cells["ShopName"].Style.BackColor = dr.Cells["LastSuccessfulReceive"].Style.BackColor = dr.Cells["LastSuccessfulUpload"].Style.BackColor = dr.Cells["OperationTypeRu"].Style.BackColor = dr.Cells["OperationCreationDate"].Style.BackColor = dr.Cells["OperState"].Style.BackColor = Color.LightYellow; } else if (Convert.ToString(dr.Cells["OperState"].Value) == "Завершена успешно" && Convert.ToInt32(dr.Cells["ComputerId"].Value) > 0) { dr.Cells["ShopName"].Style.BackColor = dr.Cells["LastSuccessfulReceive"].Style.BackColor = dr.Cells["LastSuccessfulUpload"].Style.BackColor = dr.Cells["OperationTypeRu"].Style.BackColor = dr.Cells["OperationCreationDate"].Style.BackColor = dr.Cells["OperState"].Style.BackColor = Color.FromArgb(215, 255, 220); } #endregion OperStates //Заливаем белым if (!Convert.ToBoolean(dr.Cells["ExchangeError"].Value) && string.IsNullOrEmpty(Convert.ToString(dr.Cells["OperState"].Value)) && Convert.ToInt32(dr.Cells["ComputerId"].Value) > 0) { dr.Cells["ShopName"].Style.BackColor = dr.Cells["LastSuccessfulReceive"].Style.BackColor = dr.Cells["LastSuccessfulUpload"].Style.BackColor = dr.Cells["OperationTypeRu"].Style.BackColor = dr.Cells["OperationCreationDate"].Style.BackColor = dr.Cells["OperState"].Style.BackColor = Color.White; } } }
private async Task InitComputersListGridAsync() { rgvComputersList.KeyField = "ComputerId"; rgvComputersList.PaintCells += (sender) => { #region PaintCells DataGridViewRow[] rows = sender.Rows.OfType <DataGridViewRow>().ToArray(); foreach (DataGridViewRow dr in rows) { if (LastAgentVersionChecker.CompareVersions(Convert.ToString(dr.Cells["MagicUpdaterVersion"].Value)) == VersionCompareResult.Before) { dr.Cells["MagicUpdaterVersion"].Style.BackColor = Color.Pink; } if (LastAgentVersionChecker.CompareVersions(Convert.ToString(dr.Cells["MagicUpdaterVersion"].Value)) == VersionCompareResult.Equal) { dr.Cells["MagicUpdaterVersion"].Style.BackColor = Color.LightGreen; } if (LastAgentVersionChecker.CompareVersions(Convert.ToString(dr.Cells["MagicUpdaterVersion"].Value)) == VersionCompareResult.Subsequent) { dr.Cells["MagicUpdaterVersion"].Style.BackColor = Color.DeepSkyBlue; } if (Convert.ToInt32(dr.Cells["ComputerId"].Value) < 0) { dr.Cells["Selected"].ReadOnly = true; foreach (DataGridViewCell cell in dr.Cells) { cell.Style.BackColor = Color.LightGray; } } //Включен или нет if (Convert.ToInt32(dr.Cells["IsOn"].Value) == 1) { dr.Cells["IsOn"].Style.BackColor = Color.Green; } else { dr.Cells["IsOn"].Style.BackColor = Color.Red; } //Ошибка обмена if (Convert.ToBoolean(dr.Cells["ExchangeError"].Value) && string.IsNullOrEmpty(Convert.ToString(dr.Cells["OperState"].Value)) && Convert.ToInt32(dr.Cells["ComputerId"].Value) > 0) { dr.Cells["ShopName"].Style.BackColor = dr.Cells["LastSuccessfulReceive"].Style.BackColor = dr.Cells["LastSuccessfulUpload"].Style.BackColor = dr.Cells["OperationTypeRu"].Style.BackColor = dr.Cells["OperationCreationDate"].Style.BackColor = dr.Cells["OperState"].Style.BackColor = Color.PaleVioletRed; } //Статусы операций #region OperStates if (Convert.ToString(dr.Cells["OperState"].Value) == "Завершена с ошибкой" && Convert.ToInt32(dr.Cells["ComputerId"].Value) > 0) { dr.Cells["ShopName"].Style.BackColor = dr.Cells["LastSuccessfulReceive"].Style.BackColor = dr.Cells["LastSuccessfulUpload"].Style.BackColor = dr.Cells["OperationTypeRu"].Style.BackColor = dr.Cells["OperationCreationDate"].Style.BackColor = dr.Cells["OperState"].Style.BackColor = Color.PaleVioletRed; } else if (Convert.ToString(dr.Cells["OperState"].Value) == "Выполняется" && Convert.ToInt32(dr.Cells["ComputerId"].Value) > 0) { dr.Cells["ShopName"].Style.BackColor = dr.Cells["LastSuccessfulReceive"].Style.BackColor = dr.Cells["LastSuccessfulUpload"].Style.BackColor = dr.Cells["OperationTypeRu"].Style.BackColor = dr.Cells["OperationCreationDate"].Style.BackColor = dr.Cells["OperState"].Style.BackColor = Color.LightYellow; } else if (Convert.ToString(dr.Cells["OperState"].Value) == "Завершена успешно" && Convert.ToInt32(dr.Cells["ComputerId"].Value) > 0) { dr.Cells["ShopName"].Style.BackColor = dr.Cells["LastSuccessfulReceive"].Style.BackColor = dr.Cells["LastSuccessfulUpload"].Style.BackColor = dr.Cells["OperationTypeRu"].Style.BackColor = dr.Cells["OperationCreationDate"].Style.BackColor = dr.Cells["OperState"].Style.BackColor = Color.FromArgb(215, 255, 220); } #endregion OperStates //Заливаем белым if (!Convert.ToBoolean(dr.Cells["ExchangeError"].Value) && string.IsNullOrEmpty(Convert.ToString(dr.Cells["OperState"].Value)) && Convert.ToInt32(dr.Cells["ComputerId"].Value) > 0) { dr.Cells["ShopName"].Style.BackColor = dr.Cells["LastSuccessfulReceive"].Style.BackColor = dr.Cells["LastSuccessfulUpload"].Style.BackColor = dr.Cells["OperationTypeRu"].Style.BackColor = dr.Cells["OperationCreationDate"].Style.BackColor = dr.Cells["OperState"].Style.BackColor = Color.White; } } #endregion }; rgvComputersList.dataGridView.CellPainting += (sender, e) => { #region CellPainting DataGridView dgv = sender as DataGridView; if (dgv == null) { return; } if (e.ColumnIndex == 0 && e.RowIndex > -1) { if (Convert.ToInt32(dgv.Rows[e.RowIndex].Cells[e.ColumnIndex].Value) == 1) { foreach (DataGridViewCell cell in dgv.Rows[e.RowIndex].Cells) { cell.Style.Font = new Font(SystemFonts.DefaultFont, FontStyle.Bold); } } else { foreach (DataGridViewCell cell in dgv.Rows[e.RowIndex].Cells) { cell.Style.Font = new Font(SystemFonts.DefaultFont, FontStyle.Regular); } } } #endregion }; rgvComputersList.MappingColumns = Mapping.ComputersGridColMap; rgvComputersList.DataSource = await MQueryCommand.SelectShopComputersServerViewGridAsync(); rgvComputersList.BaseFilter = "IsClosed = false"; rgvComputersList.dataGridView.RowHeadersVisible = false; //rgvComputersList.HideColumns("Is1CServer", "IsMainCashbox", "IsClosed"); rgvComputersList.HideColumns("Is1CServer" , "IsMainCashbox" , "IsClosed" , "External_IP" , "LastSuccessfulUpload" , "LastSuccessfulReceive" , "OperationTypeRu" , "OperState" , "LastErrorString" , "MagicUpdaterVersion" , "OperationCreationDate"); rgvComputersList.dataGridView.Columns["Selected"].Width = 50; rgvComputersList.dataGridView.Columns["IsOnBitmap"].Width = 50; #region rgvComputersListContextMenuAdd //Показать/скрыть дополнительные поля const string SHOW_ADDITIONAL_COLUMNS = "Показать дополнительные столбцы"; const string HIDE_ADDITIONAL_COLUMNS = "Скрыть дополнительные столбцы"; string[] additionalColumns = new string[] { "ComputerId", "LastError", "External_IP", "ComputerName" }; rgvComputersList.HideColumns(additionalColumns); var miShowHideColumns = new ToolStripMenuItem(); miShowHideColumns.Name = "miShowHideColumns"; miShowHideColumns.Text = SHOW_ADDITIONAL_COLUMNS; miShowHideColumns.Image = Images.plus; miShowHideColumns.Click += (sender, e) => { if (miShowHideColumns.Text == SHOW_ADDITIONAL_COLUMNS) { miShowHideColumns.Text = HIDE_ADDITIONAL_COLUMNS; rgvComputersList.ShowColumns(additionalColumns); miShowHideColumns.Image = Images.minus; } else { miShowHideColumns.Text = SHOW_ADDITIONAL_COLUMNS; rgvComputersList.HideColumns(additionalColumns); miShowHideColumns.Image = Images.plus; } }; rgvComputersList.AddMenuItem(miShowHideColumns); #endregion rgvComputersListContextMenuAdd rgvComputersList.CbSelectAllVisible = true; if (_taskId > 0) { List <int> computersId = _shedulerTask.ShedulerTasksComputersLists.Select(s => s.ComputerId).ToList(); if (rgvComputersList.dataGridView.Columns["Selected"].Visible) { foreach (DataGridViewRow row in rgvComputersList.dataGridView.Rows) { if (computersId.Contains(Convert.ToInt32(row.Cells[rgvComputersList.KeyField].Value))) { row.Cells["Selected"].Value = true; } } } } }