DataGridView数据源绑定,有DataTable dt,即可直接将dataGridView1的DataSource值设置为dt即可,以下代码利用DataTable的Select方法筛选列名City Name不为空的记录作为dataGridView1的数据源:
dataGridView1.DataSource = dt.Select("[City Name] is not null").CopyToDataTable(); |
将DataGridView数据源绑定后,即可用dataGridView1.Refresh()来刷新显示,删除某行时可以用dataGridView1.Rows.Remove方法来删除指定的行,这时一般需要有选定的行,如果通过选定的单元格来删除整行,则应参照以下代码来操作,值得注意的是对dataGridView1的行进行遍历时,总行数应对dataGridView1.RowCount取得的行数减1,这是因为DataGridView的最后一行总是新行,这可以用dataGridView1.Rows[x].IsNewRow来检测。
1 2 3 4 5 6 7 8 9 | for (int x = 0; x < dataGridView1.RowCount - 1; x++) { if (dataGridView1.Rows[x].Cells[0].Selected || dataGridView1.Rows[x].Cells[1].Selected) { if(!dataGridView1.Rows[x].IsNewRow) dataGridView1.Rows.Remove(dataGridView1.Rows[x]); } } dataGridView1.Refresh(); |
对dataGridView1相关行进行隐藏时,应先将数据源挂起,进行操作后,再恢复,主要代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | CurrencyManager cm = (CurrencyManager)BindingContext[dataGridView1.DataSource]; cm.SuspendBinding(); for (int x = 0; x < dataGridView1.RowCount - 1; x++) { if (dataGridView1.Rows[x].Cells[1].Value.ToString() == "") { dataGridView1.Rows[x].Visible = false; } } for (int i = 0; i < this.dataGridView1.Columns.Count; i++) //禁止点击列标题自动排序 { dataGridView1.Columns[i].SortMode = DataGridViewColumnSortMode.NotSortable; } dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill; cm.ResumeBinding(); dataGridView1.Refresh(); |