0
我需要填寫已包含所有項目列表的DataGridView
。這基於包含在DataSet
中的材料的移動記錄。 DataGridView
已包含所有項目,例如:A,B,C,D等。程序將根據DataSet
中包含的庫存移動來檢查每個項目的當前餘額。如何基於DataGridView中包含的數據從DataSet中將值插入到DataGridView中?
我想在另一個裏面做一個foreach。 DataGridView
一行一行地查找項目的名稱,另一個內部的foreach在數據集中搜索記錄股票移動的地方。
我這樣做了,但它只填充了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();
}
問候!
非常感謝,@蒙!這樣可行! – Leandro
不客氣。 –