2017-09-24 42 views
0

我想獲取Datagridview 中某個特定列的所有值,而沒有任何實際的單元格單擊或行選擇。Datagridview獲取特定列的總和

我基本上有2個Datagridviews; 訂單和訂單行。

該命令的DataGridView有一個名爲列:

Order Total

訂單行的DataGridView有一個名爲列:

Unit Price

我想列單價的總和轉移總計到列Order Total中的其他datagridview。有關如何解決這個問題的任何想法?

編輯:我使用的計算方法,但得到的錯誤:System.InvalidCastException: 'Object cannot be cast from DBNull to other types.'

代碼:我有一個名爲「UNIT_PRICE」

int totalprice = Convert.ToInt32(line_dt.Compute(expression: "SUM(unit_price)", filter: string.Empty)); 

我不知道是什麼導致這個錯誤列。

+1

如果你的網格綁定到一個'DataTable'然後調用該表的'Compute'方法。 – jmcilhinney

+0

是的,它綁定到一個DataTable。我會研究一下。 – Jammeh

+0

@jmcilhinney我做了計算方法,但它只會給出一個錯誤: System.InvalidCastException:'對象不能從DBNULL轉換爲其他類型。' – Jammeh

回答

0

您需要填寫您的訂單項目的數據表1對,雖然(即您的訂單項目的數據表必須包含每行項目

遍歷訂單數據表,發現在訂單行DataTable中的相應OrderLines(通過外鍵)

概括起來,並更新值到你爲了DataGridView中

創建新的列然後使用行篩選器,更改訂單項目的DataGridView並獲得訂單的DataGridView這樣的過濾器外鍵:

private void dgvOrder_SelectionChanged(object sender, EventArgs e) 
     { 
      if (dgvOrder.SelectedCells.Count > 0) 
      { 
       int selectedrowindex = dgvOrder.SelectedCells[0].RowIndex; 

       DataGridViewRow selectedRow = dgvOrder.Rows[selectedrowindex]; 

        string orderlineFilter = Convert.ToString(selectedRow.Cells["columnname"].Value);   


       (dgvOrderLine.DataSource as DataTable).DefaultView.RowFilter = string.Format("Field = '{0}'", orderlineFilter); 
      } 
     }