簡體   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