Как изменить конкретные свойства ячейки сетки данных по значению ячейки в C # с базой данных Sqlite - PullRequest
1 голос
/ 12 июля 2011

Я новичок в c# и Database связывании, поэтому не могу получить это путем поиска старых сообщений stackoverflow

Код типа

private void bookDetails()
    {
        string connectionPath = @"Data Source=Data\libraryData.dat;Version=3;New=False;Compress=True";

        using (SQLiteConnection connection = new SQLiteConnection(connectionPath))
        {
            SQLiteCommand command = connection.CreateCommand();
            connection.Open();
            string query = "SELECT bookno as 'Book No.', bookCode as 'ISBN No.', title as 'Title', author as 'Author', publisher as 'Publishers', edition as 'Edition', storagehint as 'Storage Hint', description as 'Description' FROM booksDetails";
            command.CommandText = query;
            command.ExecuteNonQuery();

            SQLiteDataAdapter da = new SQLiteDataAdapter(command);
            DataSet ds = new DataSet();
            da.Fill(ds, "booksDetails");
            int c = ds.Tables["booksDetails"].Rows.Count;
            dataGridView1.DataSource = ds.Tables["booksDetails"];
            dataGridView1.Sort(dataGridView1.Columns["ISBN No."], ListSortDirection.Ascending);
            dataGridView1.ReadOnly = true;
            connection.Close();
            this.Totals.Text = "Total No. of Books Found : "+ Convert.ToString(c);
        }
    }

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

образец кода предпочтительнее

заранее спасибо ...

Ответы [ 2 ]

3 голосов
/ 13 июля 2011

Вам нужно перебрать строки в сетке данных, а затем установить цвет для соответствующей строки.

Предполагая, что цвет изменяется в зависимости от некоторых условий,

private void myDataGridView_CellValueChanged(object sender, DataGridViewCellEventArgs e)
  {
   int colIndex = e.ColumnIndex;
   int rowIndex = e.RowIndex;

   if (rowIndex >= 0 && colIndex >= 0)
   {
    DataGridViewRow myRow = dataGridView1.Rows[rowIndex];
    if (myRow.Cells[colIndex].Value.ToString() == "High")
    myRow.DefaultCellStyle.BackColor = Color.Red;
   }
  }
1 голос
/ 13 июля 2011
private void dataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
    {
        Color c = Color.Black;
        if (e.ColumnIndex == 6)
        {
            if (isLate(Convert.ToString(e.Value)))
                c = Color.Red;
        }
        e.CellStyle.ForeColor = c; // or e.CellStyle.BackColor= c; whatever you can do like this

    }

и код события

this.dataGridView1.CellFormatting += new System.Windows.Forms.DataGridViewCellFormattingEventHandler(this.dataGridView1_CellFormatting);

, он будет автоматически сгенерирован в yourform.designer.cs, иначе вы добавите его вручную

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...