[英]How to insert value in a DataGridView from a DataSet based on data contained in a DataGridView?
我需要填寫一個已經包含所有項目列表的DataGridView
。 這基於包含在DataSet
的材料的移動記錄。 DataGridView
已經擁有所有項目,例如:A、B、C、D 等。程序將根據DataSet
包含的股票的變動檢查每個項目的當前余額。
我想在另一個內部做一個 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();
}
問候!
添加值時,您只使用 1 行CurrentRow
datagridview.CurrentRow.Cells["Balance"].Value = result;
如果您通過以下方式進行 foreach:
foreach (DataGridViewRow dr in datagridview.Rows)
您還應該使用變量:
dr.Cells["Balance"].Value = result;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.