Ах, это моя ошибка. Увидел после того, как открыл проект. После вызова конструктора класса, в данном случае MainForm, где идет первоначальная зарисовка строк, идет вызов события Show (если не ошибаюсь), а он в свою очередь вызывает перерисовку всех элементов управления формы, в том числе и грида. Естественно, после перерисовки строки будут не закрашены.
Так что, чтобы строки были закрашены всегда в зависимости от даты, надо добавить закраску в обработчик события Paint грида.
| Код | using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using MySql.Data.MySqlClient; using System.Globalization; namespace OrderReporter { public partial class MainForm : Form { private DataSet _dataSet; public MainForm() { InitializeComponent();
MySqlConnection connection = new MySqlConnection("Database=orders; Data Source=localhost; User ID = root; Password="); MySqlCommand command = connection.CreateCommand();
command.CommandText = "select contract.number, contract.name, domain.name, DATEDIFF(domain.end_registration_date,CURDATE()), DATE_FORMAT(payment.payment_date, \"%d.%c.%Y\"), DATE_FORMAT(payment.end_contract_date, \"%d.%c.%Y\") from contract, domain, payment where contract.number=domain.contract_number and contract.number=payment.contract_number"; MySqlDataAdapter filler = new MySqlDataAdapter(command); _dataSet = new DataSet(); filler.Fill(_dataSet); dgvGrid.AutoGenerateColumns = false; dgvGrid.DataSource = _dataSet.Tables[0]; for (int i = 0; i < dgvGrid.Columns.Count; i++) dgvGrid.Columns[i].DataPropertyName = _dataSet.Tables[0].Columns[i].ColumnName;
dgvGrid.Paint += dgvGrid_Paint; }
void dgvGrid_Paint(object sender, PaintEventArgs e) { PaintGrid(); }
private void PaintGrid() { for (int i = 0; i <= dgvGrid.Rows.Count - 1; i++) { string str = dgvGrid.Rows[i].Cells[4].Value.ToString(); DateTime date = DateTime.ParseExact(str, "dd.MM.yyyy", CultureInfo.InvariantCulture); if (date < DateTime.Now) dgvGrid.Rows[i].DefaultCellStyle.BackColor = Color.Blue; } } } }
|
В вашем же проекте сделал. Вам только надо будет обновить ссылку в обозревателе решений на MySql. Просто добавьте еще раз.
|