2017-09-24 13 views
0

Datagridview の特定の特定の列のすべての値を実際のセルのクリックや行の選択なしで取得したいと考えています。Datagridview特定の列の合計を取得

私は基本的に2つのDatagridviewを持っています。 注文と注文ライン。

注文DataGridViewのは、という名前の列があります。

Order Total

注文ラインDataGridViewのは、という名前の列があります。

Unit Price

私は列単価の合計を取得し、転送したいですOrder Totalの列の他のデータグリッドビューに合計します。これについてどうやって進めるべきなのか?

編集:私は、計算方法を使用するが、エラーを得た: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

あなたは(つまり、あなたのオーダーラインのデータテーブルは、注文のDataTableを通じて、すべての行項目

ループを含んでおり、()外部キーを介してオーダーラインDataTableの対応注文ラインを見つけなければならないかのためにあなたのオーダーラインのDataTable第一を埋めるために必要があります。

和、それまでとはその後、オーダーラインの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); 
      } 
     } 
関連する問題