c# – 删除DataGridView(表)中的多行
发布时间:2020-12-15 21:35:53 所属栏目:百科 来源:网络整理
导读:我有一个数据“myTable”,它与DataGridView“dgv”绑定. DataGridView“dgv”有一个复选框列.我的目标是删除按钮事件中检查的行.数据表当然会更新. 现在我的代码只用于删除一行而不是多行. 感谢帮助. private void btnDel_Click(object sender,EventArgs e)
我有一个数据“myTable”,它与DataGridView“dgv”绑定. DataGridView“dgv”有一个复选框列.我的目标是删除按钮事件中检查的行.数据表当然会更新.
现在我的代码只用于删除一行而不是多行. 感谢帮助. private void btnDel_Click(object sender,EventArgs e) { try { if (dgv.RowCount>0) { foreach (DataGridViewRow row in dgv.Rows) { DataGridViewCheckBoxCell check = row.Cells[0] as DataGridViewCheckBoxCell; if (check.Value != null) { if ((bool)check.Value) { DataRowView currentDataRowView = (DataRowView)dgv.CurrentRow.DataBoundItem; DataRow dataRow = currentDataRowView.Row; int n = dgv.CurrentRow.Index; int intID = Convert.ToInt32(dgv.Rows[n].Cells[0].Value); myTable.Rows.Remove(dataRow); dgv.DataSource = myTable; Int32 intVal = Convert.ToInt32(row.Cells[1].Value); if (intVal == intID) { check.Value = null; } } } } } } catch (Exception ex) { MessageBox.Show(ex.Message); } } 解决方法
我找到了解决方案.错误是由
DataRowView currentDataRowView = (DataRowView)dgv.CurrentRow.DataBoundItem; currentDataRowView不是选中的行. List<DataRow> toDelete = new List<DataRow>(); for (int i = 0; i < dgv.Rows.Count; i++) { { DataGridViewRow row = dgv.Rows[i]; DataGridViewCheckBoxCell check = row.Cells[0] as DataGridViewCheckBoxCell; if (check.Value != null && (bool)check.Value) { DataRow dataRow = (row.DataBoundItem as DataRowView).Row; toDelete.Add(dataRow); } } } toDelete.ForEach(row => row.Delete()); 谢谢大家的帮助. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |