0
DataGridView
には既にすべてのアイテムのリストが含まれています。これは、DataSet
に含まれる資料の移動記録に基づいています。 DataGridView
には既にA、B、C、Dなどのすべての商品が含まれています。プログラムはDataSet
に含まれる在庫の動きに基づいて各商品の現在の残高を確認します。DataGridViewに含まれるデータに基づいて、DataSetからDataGridViewに値を挿入する方法はありますか?
私は他の人の中にforeachをすると思った。 DataGridView
は、アイテムの名前を見つけるために行単位で出力し、他の内部foreachは、在庫の移動が記録されているdataSetで検索を行います。
このようにしましたが、Balance
列の最初の行だけを埋めています。
void FillDataGrid()
{
var result = 0;
string strRowMaterial = string.Empty;
Conection ca = new Conection();
string sql = "";
sql += " Select ";
sql += " idRegMovement, CatMovement, NameMovement, codMaterial, AmountMovemented ";
sql += " From RegMovement ";
sql += " ORDER BY idRegMovement ";
ca.Connect();
OleDbDataAdapter da = new OleDbDataAdapter(sql, ca.cx);
DataSet ds = new DataSet();
da.Fill(ds, "RegMovements");
if (ds.Tables["RegMovements"].Rows.Count == 0)
{
ca.Disconnect();
}
else
{
foreach (DataGridViewRow dr in datagridview.Rows)
{
strRowMaterial = Convert.ToString(dr.Cells["codMaterial"].Value);
foreach (DataRow row in ds.Tables["RegMovements"].Rows)
{
if (string.Compare(row["codMaterial"].ToString(), strRowMaterial, StringComparison.InvariantCultureIgnoreCase) == 0)
{
var Amount = Convert.ToInt32(row["AmountMovemented"]);
if (string.Compare(row["CatMovement"].ToString(), "Input", StringComparison.InvariantCultureIgnoreCase) == 0)
result += Amount;
else
result -= Amount;
}
else
{
result = 0;
}
}
datagridview.CurrentRow.Cells["Balance"].Value = result;
}
}
ca.Disconnect();
}
よろしくお願いいたします。使用する値にのみ1行CurrentRow
datagridview.CurrentRow.Cells["Balance"].Value = result;
を追加する場合は、あなたが通過するforeach場合
は非常に感謝します、@モン!それは動作します! – Leandro
ようこそ。 –