首先看看效果圖:
需求:要求是的在datagridview里面綁定數據后,可以任意點擊想要點擊的某列的單元格進行改變數據。需要在datagridview里面寫3個事件
1.RowPrePaint事件:主要設置要點擊的某單元對應的某列顯示的顏色
private void dgv_Data_RowPrePaint(object sender, DataGridViewRowPrePaintEventArgs e) { try { FontStyle newStyle = this.dgv_Data.DefaultCellStyle.Font.Style; newStyle |= FontStyle.Underline; Font font = new Font(this.dgv_Data.DefaultCellStyle.Font, newStyle); foreach (DataGridViewRow dr in this.dgv_Data.Rows) { if (dr.Cells["ID"].Value.ToString() == "0") { dr.DefaultCellStyle.ForeColor = Color.Red; } dr.Cells["館藏重復"].Style.Font = font; dr.Cells["館藏重復"].Style.ForeColor = Color.Blue; dr.Cells["是否采購"].Style.Font = font; dr.Cells["是否采購"].Style.ForeColor = Color.Blue; } } catch (Exception ex) { MessageBox.Show(ex.Message, "", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
2.CellMouseMove事件:主要是鼠標指針移動到單元格時候的樣式
private void dgv_Data_CellMouseMove(object sender, DataGridViewCellMouseEventArgs e) { if (e.ColumnIndex == -1 || e.RowIndex == -1) { return; } DataGridViewCell cell = this.dgv_Data.Rows[e.RowIndex].Cells[e.ColumnIndex]; if (cell == null || cell.Value.ToString() == "" || cell.Value.ToString() == "0") { return; } string headText = this.dgv_Data.Columns[e.ColumnIndex].HeaderText; if (headText == "館藏重復" || headText == "是否采購") { this.Cursor = Cursors.Hand; } else { this.Cursor = Cursors.Default; } }
3.CellClick事件:主要是對單元格進行單擊的數據庫操作
private void dgv_Data_CellClick(object sender, DataGridViewCellEventArgs e) { try { if (e.ColumnIndex == -1 || e.RowIndex == -1) { return; } DataGridViewCell cell = this.dgv_Data.Rows[e.RowIndex].Cells[e.ColumnIndex]; if (cell == null || cell.Value.ToString() == "" || cell.Value.ToString() == "0") { return; } Stay_PurchaseData bll = new Stay_PurchaseData(); string headText = this.dgv_Data.Columns[e.ColumnIndex].HeaderText; switch (headText) { case "館藏重復": if (cell.Value.ToString().Trim() == "是") { bll.ChangeGCCF(dgv_Data.Rows[e.RowIndex].Cells["ID"].Value.ToString(), true); } else { bll.ChangeGCCF(dgv_Data.Rows[e.RowIndex].Cells["ID"].Value.ToString(), false); } break; case "是否采購": if (cell.Value.ToString().Trim() == "是") { bll.ChangeSFCG(dgv_Data.Rows[e.RowIndex].Cells["ID"].Value.ToString(), true); } else { bll.ChangeSFCG(dgv_Data.Rows[e.RowIndex].Cells["ID"].Value.ToString(), false); } break; } //刷新 btn_Query_Click(sender, e); } catch (Exception ex) { MessageBox.Show(ex.Message, "", MessageBoxButtons.OK, MessageBoxIcon.Error); } }