繁体   English   中英

如何根据 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;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM