DataGridView数据绑定、删除行、隐藏行C#示例

发布于 作者 量尺寸留下评论

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();

发表评论

电子邮件地址不会被公开。 必填项已用*标注