gpt4 book ai didi

c# - 从 datagridview 中选择数据并重新插入选择 c#

转载 作者:太空宇宙 更新时间:2023-11-03 10:31:27 24 4
gpt4 key购买 nike

我试图从 datagridview 中选择一组行并通过单击按钮更新它以仅在同一 View 中显示选定的信息,这是我目前的代码:

  private void btnUpdate_Click(object sender, EventArgs e)
{
List<DataGridViewRow> rowCollection = new List<DataGridViewRow>();
foreach (DataGridViewRow row in dataGridView1.SelectedRows) {
rowCollection.Add(dataGridView1.Rows[row.Index]);
}


dataset.Tables[0].Clear();


foreach (DataGridViewRow row in rowCollection)
{
DataRow r = dataset.Tables[tableName].NewRow();
//write the data in the DataRow and then add the datarow in your datatable
dataset.Tables[tableName].Rows.Add(r);


}
}

按下更新按钮后没有错误,选择的行数是正确的,但 GridView 中没有显示任何信息,感谢任何帮助,干杯!

最佳答案

这里发生了几件事:

  1. 您的第二个 foreach 循环每次迭代都会添加一个全新的 DataRow。尽管该行从未填充 - 因此 DataGridView 仅显示空行。
  2. 即使您修复了此错误,dataset.Tables[0].Clear(); 也会先清空数据,然后您才能在同一循环中使用它。 rowCollection 中的每一行都将包含 null 数据。

为了纠正这个问题,我们将克隆目标 DataTable。然后我们将使用 DataRowCollection.Add(params object[] values) 而不是 DataRowCollection.Add(DataRow row) 将 rowCollection 中的每一行添加到克隆的表中)。之后,我们将清除目标表并将克隆合并回其中。

private void btnUpdate_Click(object sender, EventArgs e)
{
List<DataGridViewRow> rowCollection = new List<DataGridViewRow>();

foreach (DataGridViewRow row in dataGridView1.SelectedRows)
{
// Adds the selected rows in order from most recently selected to first selected.
rowCollection.Add(dataGridView1.Rows[row.Index]);

// Adds the selected rows in order from first selected to most recently selected.
//rowCollection.Insert(0, dataGridView1.Rows[row.Index]);
}

DataTable clone = this.DataSet.Tables[0].Clone();

foreach (DataGridViewRow row in rowCollection)
{
object[] values = new object[row.Cells.Count];

for (int i = 0; i < row.Cells.Count; i++)
{
values[i] = row.Cells[i].Value;
}

clone.Rows.Add(values);
}

this.DataSet.Tables[0].Clear();
this.DataSet.Tables[0].Merge(clone);
}

关于c# - 从 datagridview 中选择数据并重新插入选择 c#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30003628/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com