[c#]WinForm DataGridView 整理

摘要:[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 表示未勾選
	}
}