簡體   English   中英

如何將單元格連續相乘,gridview

[英]How to multiply cells in a row, gridview

當我單擊一個按鈕時,我想將單元格連續相乘,然后 output 將結果放入另一個單元格,但對每一行單獨執行,我現在擁有的代碼

foreach (DataGridViewRow Column in dataGridView1.Rows)
                {
                    for (int i = 0; i < dataGridView1.Rows.Count; ++i)
                    {
                        if (dataGridView1.Rows[i].Cells[2].Value == null)
                        {
                            Column.Cells[dataGridView1.Columns["FinalPrice"].Index].Value = (Convert.ToDouble(Column.Cells[dataGridView1.Columns["Price"].Index].Value) * Convert.ToDouble(Column.Cells[dataGridView1.Columns["Amount"].Index].Value));
                        }
                        else
                        {
                            Column.Cells[dataGridView1.Columns["FinalPrice"].Index].Value = (Convert.ToDouble(Column.Cells[dataGridView1.Columns["Price"].Index].Value) * Convert.ToDouble(Column.Cells[dataGridView1.Columns["Discount"].Index].Value)) * Convert.ToDouble(Column.Cells[dataGridView1.Columns["Amount"].Index].Value);
                        }

                    }

                }

問題是,如果一個單元格在任何行上顯示 null 而不是對所有行運行此代碼

Column.Cells[dataGridView1.Columns["FinalPrice"].Index].Value = (Convert.ToDouble(Column.Cells[dataGridView1.Columns["Price"].Index].Value) * Convert.ToDouble(Column.Cells[dataGridView1.Columns["Amount"].Index].Value));

對於每一行,我想檢查折扣單元格是否為 null,如果是,則將金額和價格單元格相乘,或者是否不將金額價格和折扣單元格相乘

不是一個直接的答案,而是應該消除這個和類似問題的替代方法。
另一種方法是從實際計算中提取 UI 邏輯

創建一個 class 來表示行中的數據

public class Purchase
{
    public string Item { get; set; }
    public int Amount { get; set; }
    public decimal Price { get; set; }
    public decimal? Discount { get; set; }

    public decimal FinalPrice = Price * Amount * Discount.GetValueOrDefault(1.0m);
}

要在 DataGridView 中顯示購買,您只需要一行代碼

var purchases = LoadPurchasesFromDatabase();

dataGridView.DataSource = purchases;

Purchase class 實例中的值更改將自動更新 DataGridView。

如果您需要支持從集合中添加和刪除購買,則需要將購買集合設為BindingList<Purchase>類型

通過從 UI 代碼中提取購買邏輯,您可以擺脫繁瑣和冗余的轉換、列和 datagridview 行循環。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM