对选中的datagridview中的多行,不能正确删除,不知什么原因.
datagridview绑定通过bindingsource, 代码如下://绑定
this.bindingsource1.DataSource = ds.Tables[0];
this.dgv.DataSource = bindingsource1;//删除
private void bindingNavigatorDeleteItem_Click(object sender, EventArgs e)
{
for (int i = 0; i < dgv.SelectedRows.Count; i++)
{
try
{
dgv.Rows.Remove(dgv.SelectedRows[i]);
}
}
}
//跟踪删除过程,发现count始终是1,但删除时在DataGridView上呈现不规则情况,有多删和少删现象.
datagridview绑定通过bindingsource, 代码如下://绑定
this.bindingsource1.DataSource = ds.Tables[0];
this.dgv.DataSource = bindingsource1;//删除
private void bindingNavigatorDeleteItem_Click(object sender, EventArgs e)
{
for (int i = 0; i < dgv.SelectedRows.Count; i++)
{
try
{
dgv.Rows.Remove(dgv.SelectedRows[i]);
}
}
}
//跟踪删除过程,发现count始终是1,但删除时在DataGridView上呈现不规则情况,有多删和少删现象.
{
dgv.Rows.Remove(dgv.SelectedRows[i]);
}
按照上面的改,还是一样!
请问,为何要这样改?另:用Del键删除没有异常出现。
private void bindingNavigatorDeleteItem_Click(object sender, EventArgs e)
{
for (int i = 0; i < dgv.SelectedRows.Count; i++)
{
try
{
//dgv.SelectedRows[i] 这里就有问题了,删除前面的后,这时的SelectedRows已发生变化了.
dgv.Rows.Remove(dgv.SelectedRows[i]);
}
}
}
这样正确:
foreach (DataGridViewRow row in dgv.SelectedRows)
{
dgv.Rows.Remove(row);
}
public Form1()
{
InitializeComponent();
DataTable data = new DataTable();
data.Columns.Add("A", typeof(string));
for (int i = 0; i < 20; ++i)
{
DataRow dr = data.NewRow();
dr["A"] = i.ToString();
data.Rows.Add(dr);
}
dataGridView1.DataSource = data;
} private void btnLoad_Click(object sender, EventArgs e)
{
foreach (DataGridViewRow row in dataGridView1.SelectedRows)
{
this.dataGridView1.Rows.Remove(row);
}
}
}