0

Form1(DGV1)とForm2(DGV2)の2つのフォームがあり、両方のフォームでDatagridviewコントロールを使用できます。

Form1にはForm2へのボタンリンクがあり、ユーザーはForm1 datagridview(DGV1)に行を追加できます。Form2Datagridviewでは、最初の列にチェックボックスがあり、ユーザーは一度に1行しか選択できません。したがって2つのボタンがあります。 Form2で1)完了2)アイテムを追加

ユーザーが行を次々に選択して[アイテムの追加]をクリックすると、フォーム1のデータグリッドビューに行を追加する必要があります。[完了]ボタンをクリックすると、追加されたすべての行とともにフォーム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に1つの行を追加できますが、2番目の行を追加すると、前に追加した行が失われます。

これを解決する方法を提案していただけますか。

ありがとうございました。

4

1 に答える 1

0

親グリッドの 2 つの行で選択された行ごとに追加して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;

このようにして、新しい行を追加し、値を入力します。あなたが与えたコードから、最初の行が失われた理由が明確ではないので、さらに情報が必要になるかもしれません。

于 2013-02-07T10:22:20.707 に答える