摘要:[c#]WinForm DataGridView 整理
** 個人筆記用 : )
將DataSet資料列加入DataTable做為DataGridView DataSource 中出現這個資料列已經屬於其他資料表
解決方式:將原本從DataSet新增至DataTable 改用複製方法
foreach (DataRow dr in ds.Tables[0].Rows)
{
//dt.Rows.Add(dr); //將查到的資料加入dt
dt.ImportRow(dr); // 改用複製方式
}
.cs檔中將DataGridView加入控制項 ex.checkbox
DataGridViewCheckBoxColumn dgChktest = new DataGridViewCheckBoxColumn();
dgvDetail.Columns.Insert(0, dgChktest );
在DataGridView表頭增加 全選功能
//建立CheckBox (可在程式裡增加,也可用控項制編輯資料行的方式)
//畫矩形用於計算 CheckBox 嵌入 DataGridView 的位置
Rectangle rect = dgvDetail.GetCellDisplayRectangle(0, -1, true);
rect.X = rect.Location.X + rect.Width / 4 - 9;
rect.Y = rect.Location.Y + (rect.Height / 2 - 8);
CheckBox chkAll= new CheckBox();
chkAll.Name = "chkAll";
chkAll.Size = new Size(16, 16);
chkAll.Location = rect.Location;
//全選要設定的事件
chkAll.CheckedChanged += new EventHandler(chkAll_CheckedChanged);
//將 CheckBox 加入到 dataGridView
dgvDetail.Controls.Add(chkAll);
//全選事件
private void chkAll_CheckedChanged(object sender, EventArgs e)
{
foreach (DataGridViewRow dr in dgvDetail.Rows)
{
//dr.Cells[0].Value = ((CheckBox)dgvDetail.Controls.Find("chkAll", true)[0]).Checked;
dr.Cells[0].Value = ((CheckBox)dgvDetail.Controls.Find("chkAll", true)[0]).Checked ? "1" : "0";
//還有其它用途,所以將1 表示勾選 0 表示未勾選
}
}