Я не знаю, какой компонент диаграммы вы используете, но, очевидно, точки можно настроить после привязки к данным, вызвав обработчик событий. Похоже, вы должны сделать что-то вроде этого:
private void CustomizeBarColours(object sender, System.EventArgs e)
{
for (int i = 0; i < dt.Rows.Count;i++)
{
string qty = dt.Rows[i]["PID"].ToString();
if (Convert.ToInt32(qty) > 45)//if it is greater than the minimum, the column must be red
{
chart1.Series["Series1"].Points[i].Color = Color.Red;
}
else //otherwise it must be green
{
chart1.Series["Series1"].Points[i].Color = Color.Green;
}
}
}
Следите за индексами вне диапазона, это не очень элегантно, так как i
используется для индексации как Rows
, так и Points
.
Затем после DataBind вы можете добавить:
chart1.Customize += CustomizeBarColours;
Эти две строки из для l oop вам нужно сделать только один раз:
chart1.Series["Series1"].XValueMember = "MES";
chart1.Series["Series1"].YValueMembers = "PID";
А потом вы можете убрать свой для l oop в целом.