【发布时间】:2014-09-01 04:00:31
【问题描述】:
我的 c# 程序有点问题。 我有 2 个 DataGridViews(第一个是从我的 localhost 数据库加载的记录)。当我单击 A 按钮时,从第一个 DataGridView 中选择的记录会转到第二个 DGV 并从第一个删除。当我单击 B 按钮时,选定的记录应该回到第一个 DGV 并且应该从第二个删除,但是 VS 大喊不能以编程方式将行添加到 DGV。
这是我的代码:
//copy rows
public void Kopiuj()
{
foreach (DataGridViewRow row in this.dataGridView1.SelectedRows)
{
object[] rowData = new object[row.Cells.Count];
for (int i = 0; i < rowData.Length; ++i)
{
rowData[i] = row.Cells[i].Value;
}
this.dataGridView2.Rows.Add(rowData);
}
}
//delete rows
public void Usun()
{
foreach (DataGridViewRow selRow in dataGridView1.SelectedRows.OfType<DataGridViewRow>().ToArray())
{
dataGridView1.Rows.Remove(selRow);
}
}
//adding collumns cause it's neccesary
public void DodajKolumny()
{
while (dataGridView2.Columns.Count < dataGridView1.Columns.Count)
{
foreach (DataGridViewColumn c in dataGridView1.Columns)
{
dataGridView2.Columns.Add(c.Clone() as DataGridViewColumn);
}
}
}
现在这里是方法的代码,它不会将选定的行从 DGV2 复制到 DGV1:
public void KopiujW()
{
foreach (DataGridViewRow row in this.dataGridView2.SelectedRows)
{
object[] rowData = new object[row.Cells.Count];
for (int i = 0; i < rowData.Length; ++i)
{
rowData[i] = row.Cells[i].Value;
dataGridView1.Rows.Add(rowData);
}
dataGridView1.Rows.Add(rowData);
}
}
如果你们能好心告诉我这段代码有什么问题。谢谢每个答案。干杯
【问题讨论】:
-
您可能需要从第二个网格中删除时将这些项目添加到数据源,以便更新第一个网格。
-
更好的方法是从绑定到 gridview 的数据源集合中添加/删除所需的行,而不是直接将行添加到 gridview。完成对数据源的操作后,使用
dataGridView1.DataBind() or dataGridView2.DataBind()将数据绑定回来。
标签: c# sql winforms visual-studio datagridview