【问题标题】:Adding Datagridview rows from one grid to another将 Datagridview 行从一个网格添加到另一个网格
【发布时间】:2013-02-07 09:40:17
【问题描述】:

我有两个表单 Form1(DGV1) 和 Form2(DGV2),两个表单上都有 Datagridview 控件。

在 Form1 上有一个指向 Form2 的按钮链接,用户可以在其中向 Form1 datagridview(DGV1) 添加行 ..在Form2 Datagridview中,第一列有一个复选框,用户一次只能选择一行。所以Form2上有两个按钮1)完成2)添加项目

当用户通过依次选择行来单击“添加项目”时,必须将行添加到 Form1 上的 datagridview 中,当单击“完成”按钮时,表单 1 应显示所有添加的行。

int index = objQM.gvItemDetails.Rows.Add();
int Sno = index + 1;
string Desc = gvInventory.Rows[RowIndex].Cells[6].Value.ToString();
int Sellqty = LoadSellQty();
 decimal UnitCost = Convert.ToDecimal(gvInventory.Rows[RowIndex].Cells[8].Value.ToString());
 decimal Amount = LoadSellQty() * UnitCost;
 objQM.gvItemDetails.Rows.Insert(index,false, Sno, Desc, Sellqty, UnitCost, Amount);

我可以在 Form1 datagridview 中添加一行,但是当添加第二行时,之前添加的行丢失了。

您能否提出解决此问题的方法。

谢谢。

【问题讨论】:

  • 澄清一下:objQM.gvItemDetails 是 DGV1,gvInventory 是 DGV2?一次您只能添加一行(选定的行(“在 Form2 Datagridview 中,第一列中有一个复选框,用户一次只能选择一行。”)?这是处理行添加的所有代码吗?
  • 是的,你是对的.. gvItemDetails 是父网格,gvInventory 是子网格。首先我检查是否在 gvInventory 网格中选中了复选框。 if (Convert.ToBoolean(gvInventory.Rows[RowIndex].Cells[0].FormattedValue)) {

标签: c# datagridview


【解决方案1】:

您正在为gvInventory 中选择的每一行添加父网格中的两行(这是想要的工作方式吗?),如果没有尝试这个:

int index = objQM.gvItemDetails.Rows.Add();
DataGridViewRow row = objQM.gvItemDetails.Rows[index]; //here you get a reference to added row
row.Cells[0] = false;
row.Cells[1] = index + 1; //old Sno
row.Cells[2] = gvInventory.Rows[RowIndex].Cells[6].Value.ToString();
row.Cells[3] = LoadSellQty();
row.Cells[4] = Convert.ToDecimal(gvInventory.Rows[RowIndex].Cells[8].Value.ToString());
row.Cells[5] = LoadSellQty() * UnitCost;

这样您可以添加新行并用值填充它。从您给出的代码中不清楚为什么第一行丢失了,所以也许我需要更多信息。

【讨论】:

  • 是的,我注意到它在父 grid.thanks 中添加了两行。当我尝试将 datagridview 行添加到 gvItemDetails 时,如下 objQM.gvItemDetails.Rows.Add(row);它抛出一个属于 datagridview 控件的错误。你能帮我看看我哪里出错了
  • 因为您正在尝试再次添加它! :) 这行int index = objQM.gvItemDetails.Rows.Add(); 添加新行并返回其索引,下一行正在填充数据,就是这样:)。
  • 我已将代码更改为 objQM.gvItemDetails.Rows[index].Clone() 并且它工作很酷。但问题是创建了额外的行。那么我该如何避免它。跨度>
  • 正如你所提到的 int index = objQM.gvItemDetails.Rows.Add();正在创建一个额外的虚拟行。任何替代方法。
  • 您好 gzaxx...我对代码做了一些小改动,效果很好。我添加了这一行 objQM.gvItemDetails.Rows.Add();没有 int 索引并创建了一个静态变量 int 索引并在插入时增加了它的值。谢谢 man。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-25
  • 1970-01-01
  • 2019-03-29
  • 1970-01-01
  • 1970-01-01
  • 2020-06-30
相关资源
最近更新 更多