none
關於DataGridView內的運算 RRS feed

  • 問題

  • 例如:

    DataGridView的顯示

    商品     數量     單價    金額

    --------------------------------------------------

    牛奶         1          20       20

    咖啡         2          50     100

    蛋糕         5          30     150

     

    我想要讓程式會自動去計算 紅色*藍色=橘色

    而我是用TIMER去跑回圈

    語法如下

            Dim view As Integer = DeliveryDetailDataGridView.RowCount
            Dim x, y, z As Integer
            Dim total As Integer = view - 1
            For x = 0 To total Step +1
                '這是我去判斷裡面是否有資料

                 If view - 1 > 0 Then
                            y = DeliveryDetailDataGridView.Rows(x).Cells(2).Value
                            z = DeliveryDetailDataGridView.Rows(x).Cells(3).Value
                            DeliveryDetailDataGridView.Rows(x).Cells(4).Value = y * z
                 End If
            Next

     

    但是當紅色藍色的欄位為NULL的時候

    就會發生錯誤

    有沒有辦法讓程式去判斷這兩個欄位為NULL時

    避免程式進入運算發生錯誤

    2008年5月8日 上午 03:56

解答

  •  If view - 1 > 0 Then

                          在這裡先判斷如果DeliveryDetailDataGridView.Rows(x).Cells(2).Value=null時

                               DeliveryDetailDataGridView.Rows(x).Cells(2).Value的值就看你要等於1或是多少


                            y = DeliveryDetailDataGridView.Rows(x).Cells(2).Value
                            z = DeliveryDetailDataGridView.Rows(x).Cells(3).Value
                            DeliveryDetailDataGridView.Rows(x).Cells(4).Value = y * z
                 End If

     

    2008年5月8日 上午 04:03

所有回覆

  •  If view - 1 > 0 Then

                          在這裡先判斷如果DeliveryDetailDataGridView.Rows(x).Cells(2).Value=null時

                               DeliveryDetailDataGridView.Rows(x).Cells(2).Value的值就看你要等於1或是多少


                            y = DeliveryDetailDataGridView.Rows(x).Cells(2).Value
                            z = DeliveryDetailDataGridView.Rows(x).Cells(3).Value
                            DeliveryDetailDataGridView.Rows(x).Cells(4).Value = y * z
                 End If

     

    2008年5月8日 上午 04:03
  • 使用 Expression 就不用自己處理,ex.

    DataTable dt = new DataTable();
    dt.Columns.Add("C1", typeof(string));
    dt.Columns.Add("C2", typeof(int));
    dt.Columns.Add("C3", typeof(int));
    dt.Columns.Add("C4", typeof(int));
    dt.Columns["C4"].Expression = "C2 * C3";
     
    dt.Rows.Add("牛奶", DBNull.Value, 20);
    dt.Rows.Add("咖啡", 2, DBNull.Value);
    dt.Rows.Add("蛋糕", 5, 30);
     
    dataGridView1.DataSource = dt;


    2008年5月8日 上午 04:36
  • 可以說清楚一點嗎@@?

    例如放哪

    怎樣執行

    2008年5月8日 上午 05:26
  •  chhuang 寫信:
    使用 Expression 就不用自己處理,ex.

    DataTable dt = new DataTable();
    dt.Columns.Add("C1", typeof(string));
    dt.Columns.Add("C2", typeof(int));
    dt.Columns.Add("C3", typeof(int));
    dt.Columns.Add("C4", typeof(int));
    dt.Columns["C4"].Expression = "C2 * C3";
     
    dt.Rows.Add("牛奶", DBNull.Value, 20);
    dt.Rows.Add("咖啡", 2, DBNull.Value);
    dt.Rows.Add("蛋糕", 5, 30);
     
    dataGridView1.DataSource = dt;



     

    而且我的資料不一定是牛奶 咖啡 蛋糕

    這樣行得通嗎@@?

    2008年5月8日 上午 05:28
  • Hi,

    你同樣是用BindingSource+DataSet來做嗎?如果是的話,在xxxxxx.xsd的檔案裡面(之前設定DefaultValue那邊),找到要加總的欄位,屬性視窗那邊也有Expression的欄位可以設定,你可以在那邊填入chhuang 大提到的運算式,其中欄位名稱要替換成你自己的欄位名稱喔。

    2008年5月8日 下午 12:46
    版主
  • 對^^

    謝謝

    2008年5月9日 上午 12:56