我是c#的新手。我试图从excel表导入一些数据,然后我在datagridview中显示它,就像这样
OleDbDataAdapter myDataAdapter = new OleDbDataAdapter("Select email from [" + loadtextfeild.Text + "$] where email like '%@%' ", conn);
DataTable dt = new DataTable();
Excel.Application excel = new Excel.Application();
Excel.Workbook wb = excel.Workbooks.Open(opentextfeild.Text);
myDataAdapter.Fill(dt);
displayviewgrid.DataSource = dt;
wb.Close();
我有表单中的按钮,我可以删除未经检查的行。这个按钮现在可以正常工作。例如,如果有10行并且这些都是未选中的,现在我按下按钮然后应删除所有行,但它会删除所有行。它删除了其中的一些然后再次按下它然后再次删除其余的。对于选中的值,它可以正常工作,但不会删除它们,但对于多个未经检查的值,它无法正常工作。它不是一次删除它们。这是代码
foreach (DataGridViewRow roww in displayviewgrid.Rows)
{
if (Convert.ToBoolean(roww.Cells[Column1.Name].Value) == false)
{
displayviewgrid.Rows.Remove(roww);// MessageBox.Show( "sadas");
}
}
foreach循环在一些迭代后自动停止,并且直到最后才运行,这就是为什么我无法删除所有行。我不知道它为什么会发生
答案 0 :(得分:1)
使用以下代码替换你删除行代码:
foreach (var roww in displayviewgrid.Rows.Cast<DataGridViewRow>().ToArray())
{
if (Convert.ToBoolean(roww.Cells[Column1.Name].Value) == false)
displayviewgrid.Rows.Remove(roww);// MessageBox.Show( "sadas");
}
原因:您无法在foreach
循环中更改集合,循环复制集合。