изменить цвет определенной строки из GridView в Windows-приложения, разработанные в C#
Я застрял в странной проблеме... У меня есть girdview для отображения биржевых данных. В этих биржевых данных я должен выделить отрицательные биржевые записи желтым цветом.
Я сделал некоторый поиск в google для этого и нашел решение, которое отлично работало, когда я установил эту форму в качестве формы приложения по умолчанию через файл program.cs. Но всякий раз, когда я вызываю форму через Главную форму (т. е. MDI Parent), код для изменения цвета строки не работает. Я отладил код и обнаружил, что программа проходит логику правильно, но не меняет цвет строки.
Ниже приведен код, который я написал...
private void LoadData() { getLotID_frmLotReport.LotID__frmLotReport = 0; //Table unique ID to fetch records string sql = "Select LotID, LotNumber as 'Lot Number', LotName as 'Lot Name', Size_ as Size, convert(varchar(10),LotCreateDate,105) as 'Create Date', round(TotalLotPurchased,2) as 'Lot Purchased', round(TotalLotSold,2) as 'Lot Sold', isnull(round(TotalLotPurchased,2),0)-isnull(round(TotalLotSold,2),0) as 'Total Stock' from dbo.Stock_Lot"; clsPurchase obj = new clsPurchase(); // Class to execute select query DataSet ds = obj.GetData(sql); // function in above class to execute query & get data in dataset try { if (ds.Tables[0].Rows.Count > 0) { BindingSource bsource = new BindingSource(); DataGridViewLinkColumn dl = new DataGridViewLinkColumn(); dl.DataPropertyName = "Lot Number"; dl.Name = "Lot Number"; dataGridView1.Columns.Add(dl); //this.dataGridView1.Columns["Lot Number"].SortMode = DataGridViewColumnSortMode.Automatic; //this.dataGridView1.Columns["Lot Name"].SortMode=DataGridViewColumnSortMode.NotSortable; bsource.DataSource = ds.Tables[0]; dataGridView1.DataSource = bsource; this.dataGridView1.Columns["LotID"].Visible = false; this.dataGridView1.DefaultCellStyle.Font = new Font("Tahoma", 9); this.dataGridView1.ColumnHeadersDefaultCellStyle.Font = new Font("Tahoma", 9); //***************** NOW BELOW IS THE CODE TO CHANGE COLOR OF SPECIFIC ROWS TO YELLOW ********// //***************** THIS CODE WORKS IF THIS FORM IS DEFAULT FORM AND NOT INVOKED THROUGH master page **************** // string RowIndex = ""; string[] RowIndex_arr; clsConnection objConn = new clsConnection(); string conn = objConn.ConnDB(); string sql1 = "Select isnull(round(TotalLotPurchased,1),0)-isnull(round(TotalLotSold,1),0) as 'Total Stock' from dbo.Stock_Lot"; SqlConnection connection = new SqlConnection(conn); connection.Open(); SqlCommand cmd = new SqlCommand(sql1, connection); SqlDataReader rd = cmd.ExecuteReader(); int i = 0; if (rd.HasRows) { while (rd.Read()) { if (Convert.ToDouble(rd["Total Stock"]) <= 0) { RowIndex = RowIndex + i.ToString() + ","; } i = i + 1; } } connection.Close(); connection.Dispose(); RowIndex = RowIndex.Remove(RowIndex.Length - 1); RowIndex_arr = RowIndex.Split(','); foreach (string s in RowIndex_arr) { if (s != "") { this.dataGridView1.Rows[Convert.ToInt32(s)].DefaultCellStyle.BackColor = Color.Yellow; } } } else { MessageBox.Show("No Data found!"); this.Close(); } } catch (Exception ex) { MessageBox.Show(ex.ToString()); } }
Если возможно, попробуйте запустить этот код с вашей стороны, сделав эту форму формой по умолчанию, а также вызвать через Главную страницу, или предоставьте мне другую альтернативу, если вы уже разработали что-то подобное. Пожалуйста, дайте мне знать, если вы ничего не понимаете из моего кода...
Эта задача крайне важна для завершения проекта,и я уже пересек крайний срок. Это функция show Stopper приложения.
Любая помощь будет очень признательна!
Спасибо и с уважением,
СЭМ Д