Bregth Ventanilla Ответов: 2

Изменение цвета строки datagridview в зависимости от значения C#


У меня есть datagridview,который заполнен 6 столбцами идентификатор продукта, название продукта,функции,цена,количество и общая цена. Весь продукт с количеством 0 автоматически удаляется из datagridview. Мои вопросы заключаются в том, как я могу изменить цвет ячейки в "количестве", если:

1. Если количество меньше 20 цветов оранжевого цвета
2. Если количество меньше 10 Цвет Красный

Пожалуйста, потерпите меня, поскольку я новичок в программировании. Я обязан сделать это для системы инвентаризации, которую мы сделали для нашего проекта capstone.

Большое спасибо!

Что я уже пробовал:

Я понятия не имею с чего начать но это код который мы использовали для datagrdiview1:

public void GetData()
 {
     try
     {
         con = new SqlConnection(cs.DBConn);
         con.Open();
         String sql = "SELECT Product.ProductID,ProductName,Features,Price,sum(Quantity),sum(Price*Quantity) from Temp_Stock,Product where Temp_Stock.ProductID=Product.ProductID group by Product.productID,productname,Price,Features,Quantity having(Quantity>0)  order by ProductName";
         cmd = new SqlCommand(sql, con);
         rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
         dataGridView1.Rows.Clear();
         while (rdr.Read() == true)
         {
             dataGridView1.Rows.Add(rdr[0], rdr[1], rdr[2], rdr[3], rdr[4], rdr[5]);
         }
         con.Close();
     }
     catch (Exception ex)
     {
         MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
     }
 }

2 Ответов

Рейтинг:
6

RaviRanjanKr

Вы можете использовать GridView.Событие RowDataBound (System.Web.UI.WebControls)[^]

protected void OnRowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        TableCell cell = e.Row.Cells[4];
        int quantity = int.Parse(cell.Text);
        if (quantity < 20)
        {
            cell.BackColor = Color.Orange;
        }
        if (quantity < 10)
        {
            cell.BackColor = Color.Red;
        }       
    }
}


Bregth Ventanilla

Сработало отлично! Большое спасибо :)

RaviRanjanKr

рад, что это тебе помогло

Рейтинг:
17

Karthik_Mahalingam

пробовать

int columnIndex = 4; // quantity column , zero based index
          foreach (DataGridViewRow row in dataGridView1.Rows)
          {
              int quantity;
              if (int.TryParse(row.Cells[columnIndex].Value.ToString(), out quantity))
              {
                  if (quantity < 20)
                      row.Cells[columnIndex].Style.BackColor = System.Drawing.Color.Red;
                  if (quantity < 10)
                      row.Cells[columnIndex].Style.BackColor = System.Drawing.Color.Orange;
              }
          }


Bregth Ventanilla

Сработало отлично! Большое спасибо :)

Karthik_Mahalingam

добро пожаловать :)