私が持っているものの基本的な概念は、2 つのデータ グリッドがあるということです。1 つには、ベース ラインとして必要な材料の種類と数量が入力されています。このテーブルには、固有のマテリアル タイプがあります。2 番目のテーブルには、同じタイプの品目で数量が異なる複数のエントリが含まれる場合があります。
Table 1 Table 2
F01 20/40 150 F01 20/40 40
F01 30/50 150 F01 20/40 50
F01 50/90 150 F01 20/40 100
F01 70/110 150 F01 30/50 60
表 1 の各マテリアル タイプは一意であるため、各行 (セル インデックス [0]) を取得し、2 番目の列の各行を循環して、一致する各マテリアル タイプの数量を合計します。
最初のマテリアルタイプを正常に集計した後、ループが壊れ続けるのはなぜですか? これが私のコードです:
private void combineButton_Click(object sender, EventArgs e)
{
DataTable dt = new DataTable();
DataRow dtrow;
dt.Columns.Add("Material");
dt.Columns.Add("OnHand_Qty");
int x = 0;
foreach (DataGridViewRow row in baseStockGrid.Rows)
{
string material = row.Cells[0].Value.ToString();
foreach (DataGridViewRow crow in currentOnHandGrid.Rows)
{
string check = crow.Cells[0].Value.ToString();
if (check == material)
{
var y = crow.Cells[1].Value.ToString();
x = int.Parse(y) + x;
}
if (check != material)
{
continue;
}
}
dtrow = dt.NewRow();
dtrow[0] = material.ToString();
dtrow[1] = x;
dt.Rows.Add(dtrow);
x = 0;
currentOnHandGrid.DataSource = dt;
}
}
基本的にデータ グリッドを更新して、組み合わせた材料数を表示すると、次のように表示されます。
Table1 Table2
F01 20/40 150 F01 20/40 190
F01 30/50 150 F01 30/50 0 //<---- Should show 60 according to example above.