如何根据 DataGridView 中包含的数据从 DataSet 向 DataGridView 中插入值?
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;
我需要填写一份 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;