Возможно, мне не хватает чего-то очень простого, но я не могу заставить его работать должным образом.
Я заполняю Datagridview. Затем у меня есть событие Databindingcomplete, которое проходит по строкам и дает им цвета и шрифты в зависимости от определенных критериев.
Это делается с помощью следующего кода:
foreach (DataGridViewRow r in dataGridView1.Rows)
{
if ((r.Cells["referrer"].Value.ToString().Contains("DBS")) & (r.Cells["priority"].Value.ToString().Equals("1")))
{
r.DefaultCellStyle = DBS;
r.DefaultCellStyle.Font = new Font("Arial", 9, FontStyle.Bold);
}
else if ((r.Cells["referrer"].Value.ToString().Contains("DBS")) & (r.Cells["priority"].Value.ToString().Equals("0")))
{
r.DefaultCellStyle = DBS;
r.DefaultCellStyle.Font = new Font("Arial", 9, FontStyle.Regular);
}
else if ((r.Cells["referrer"].Value.ToString().Contains("agenda")) & (r.Cells["priority"].Value.ToString().Equals("0")))
{
r.DefaultCellStyle = agenda;
r.DefaultCellStyle.Font = new Font("Arial", 9, FontStyle.Regular);
}
else if ((r.Cells["referrer"].Value.ToString().Contains("agenda")) & (r.Cells["priority"].Value.ToString().Equals("1")))
{
r.DefaultCellStyle = agenda;
r.DefaultCellStyle.Font = new Font("Arial", 9, FontStyle.Bold);
}
else if ((r.Cells["referrer"].Value.ToString().Contains("sms")) & (r.Cells["priority"].Value.ToString().Equals("1")))
{
r.DefaultCellStyle = sms;
r.DefaultCellStyle.Font = new Font("Arial", 9, FontStyle.Bold);
}
else if ((r.Cells["referrer"].Value.ToString().Contains("sms")) & (r.Cells["priority"].Value.ToString().Equals("0")))
{
r.DefaultCellStyle = sms;
r.DefaultCellStyle.Font = new Font("Arial", 9, FontStyle.Regular);
}
else if ((r.Cells["referrer"].Value.ToString().Contains("remoteLogin")) & (r.Cells["priority"].Value.ToString().Equals("1")))
{
r.DefaultCellStyle = remoteLogin;
r.DefaultCellStyle.Font = new Font("Arial", 9, FontStyle.Bold);
}
else if ((r.Cells["referrer"].Value.ToString().Contains("remoteLogin")) & (r.Cells["priority"].Value.ToString().Equals("0")))
{
r.DefaultCellStyle = remoteLogin;
r.DefaultCellStyle.Font = new Font("Arial", 9, FontStyle.Regular);
}
}
Теперь это работает. первая строка DefaultCellStyle предназначена для цветов строки, затем вторая строка - шрифт.
Все работает хорошо, цвета хорошие, смелые работы, обычные работы, кроме одной вещи.
Если у меня есть 2 строки:
А) повестка дня с приоритетом 1
B) повестка дня с приоритетом 0
Он пройдет первый, корректирует цвет, делает его жирным. Но тогда и второй тоже будет жирным. Если я изменю их так, что первый будет иметь приоритет 0, оба будут обычными.
У меня могут быть все типы событий, все будут жирными или обычными, все будут иметь правильные настройки цвета. Но когда у меня есть секунда того же типа (DBS, повестка дня, remoteLogin или SMS), второй и т. Д. Будет иметь тот же шрифт, что и первый.
Так что эта партия будет делать следующее:
[DBS - 1] -> Правильный цвет и жирный (правильный)
[повестка дня - 0] -> Правильный цвет и регулярный (правильный)
[смс - 1] -> Правильный цвет и жирный (правильный)
[remoteLogin - 0] -> Правильный цвет и обычный (правильный)
[DBS - 0] -> Правильный цвет и полужирный (неправильный шрифт!)
[повестка дня - 1] -> правильный цвет и обычный (неправильный шрифт!)
Надеюсь, у меня есть смысл объяснять. Может быть, я не вижу чего-то или я хочу что-то глупое. Может быть, кто-то может сказать мне, что не так.
код может быть не лучшим сейчас, так как я внес много изменений, пытаясь заставить его работать.
Edit:
Я только что заметил, что он делает foreach правильно, но когда он встречает второй тип того же типа, он также изменит шрифт предыдущего. Может быть, я могу обойти это.
Спасибо заранее!
Mike