23

如何遍历DataGridView我读入的每一行?在我的代码中,由于相同的 productID,行不会绑定到下一行,因此DataGridView不会移动到新行。它保持在同一行并覆盖价格(对于某些产品,我有两个价格)。如何遍历每一行以显示相同的 productID 但价格不同?

EX:1 个汉堡有 2 个价格——1 美元和 2 美元。遍历数据后,结果应该有 2 行具有相同产品但价格不同的行。我该怎么做呢?下面是我的代码:

    productID = odr["product_id"].ToString();
    quantity = Double.Parse(odr["quantity"].ToString());
    
    //processing data...
    key = productID.ToString();
    
    if (key != key_tmp)
    {
        //update index...
        i++;
    
        //updating variable(s)...
        key_tmp = key;
    }
    
    if (datagridviews.Rows[i].Cells["qty"].Value != null) //already has value...
    {
        currJlh = Double.Parse(ddatagridviews.Rows[i].Cells["qty"].Value.ToString());
    }
    else //not yet has value...
    {
        currQty = 0;
    }
    currQty += qty;
    
    //show data...
    datagridviews.Rows[i].Cells["price"].Value = cv.toAccountingCurrency_en(Double.Parse(odr["item_price"].ToString()));
    MessageBoxes.Show(i.ToString());
    MessageBoxes.Show(datagridviews.Rows[i].Cells["price"].Value.ToString()); // in here there is two price that looped but won't showed in datagridviews
4

3 回答 3

78

您可以循环DataGridView使用Rows属性,例如:

foreach (DataGridViewRow row in datagridviews.Rows)
{
   currQty += row.Cells["qty"].Value;
   //More code here
}
于 2013-11-02T00:21:06.890 回答
1

我使用下面的解决方案将所有数据网格值导出到文本文件,而不是使用列名,您可以使用列索引。

foreach (DataGridViewRow row in xxxCsvDG.Rows)
{
    File.AppendAllText(csvLocation, row.Cells[0].Value + "," + row.Cells[1].Value + "," + row.Cells[2].Value + "," + row.Cells[3].Value + Environment.NewLine);
}
于 2021-02-19T12:21:10.790 回答
-2

对我来说最好的方法是:

  private void grid_receptie_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
    {
        int X = 1;
        foreach(DataGridViewRow row in grid_receptie.Rows)
        {
            row.Cells["NR_CRT"].Value = X;
            X++;
        }
    }
于 2017-03-23T19:41:56.477 回答