[英]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.