2015-09-17 56 views
-3

我有一個datagridview,我想從它做一個datatable與一些條件。例如,當用戶雙擊一行時,我想使該行成爲數據表,或者datagridview有一個複選框,我想從該網格中檢查列的數據表已被選中。我怎麼能用linq做到這一點?有沒有linq的方式?從DataGridView的特定行獲取DataTable與Linq

我與來自數據庫sqldataadaptor一個數據表,並將其綁定與

dataGridView.DataSource = myDataTable; 

我對這個工作的代碼,當用戶doubleclicks在datagridview的一個單元格的DataGridView,我得到該行對數據表這樣的

foreach (DataGridViewColumn column in dataGridView.Columns) 
       dataTable.Columns.Add(column.Name, column.ValueType); 
      dataTable.Rows.Add(); 
      for (int j = 0; j < dataGridView.Columns.Count; j++) 
      { 
       dataTable.Rows[0][j] = dataGridView.Rows[e.RowIndex].Cells[j].Value; 
      } 

我只是想知道,如果有一個LINQ的方式產生這樣的結果的DataTable,像

dataTable =dataGridView.Rows.Cast<DataGridViewRow>().Where(f=>f.Index==e.RowIndex) //rowindex is the double clicked rows index here 
+1

您能分享您的代碼嗎? –

+0

你如何綁定和或創建DataGridView開始..?如果你將一個數據表綁定到一個DataGridView並且你單擊或者雙擊GridView的Row ..那麼你爲什麼要創建一個新的數據表?你需要更具體一些。請在你的最後做一些更多的研究/閱讀,以瞭解下面的東西是什麼:DataTable,DataSet,DataRow,DataGrid,DataGridView,....等等。 – MethodMan

+0

@MethodMan我添加了我想知道的,我想要返回一個數據對話框的形式,顯示用戶的一些產品,我不想再次查詢時,用戶選擇一個產品,我想發送產品信息回我的主要形式。這就是我所做的。我只是想知道是否有linq方式獲取該行的單元格。抱歉沒有問題。 –

回答

0

此代碼將幫助您入門:

DataTable dt = new DataTable(); 

foreach (DataGridViewColumn column in dataGridView1.Columns) 
    dt.Columns.Add(column.Name); 

DataGridViewSelectedRowCollection row = this.dataGridView1.SelectedRows; 

foreach (DataGridViewRow dr in row) 
    dt.Rows.Add(dr);