2016-10-13 41 views
0

我需要將DGV從有界的DGV複製到正常的DGV。Datagridview不顯示UI上的數據,但代碼中有數據(調試)

原因:我需要在從數據集加載之後添加組合框,並且這在bound-DGV上是不可能的。所以我試圖在新的DGV中複製內容。任何更好的想法?

我用這個複製的DGV:copy Datagrids

然後我寫了這一個按鈕對其進行測試:

private void button1_Click(object sender, EventArgs e) 
    { 
     dgvExcel2.AutoGenerateColumns = true; 
     dgvExcel2 = CopyDataGridView(dgvExcel); 
     dgvExcel2.Refresh(); 
     dgvExcel2.Show(); 
     dgvExcel2.Update(); 
    } 

(更新,顯示,刷新只是爲了嘗試一些事情,因爲它不」工作)

當我在UI上運行程序時,dgvExcel2總是空的。 但是,當我調試我看到有數據中的內容。

回答

0

如果我沒有記錯的話,如果您想要ComboBox功能,則不能將AutoGenerateColumns設置爲true。這需要在DataGridView中作爲DataGridViewComboBoxColumn進行預定義。

此外,最佳做法不是將數據複製到DGV,也不是將數據複製到UI後面,而是使用DataTablesList<T>

請看下面的答案:

DataGridView set column cell Combobox

Bind Data to the Windows Forms DataGridView Control

編輯:

處理在UI背後一個DataTable的數據,而不是直接複製的行DGV似乎可以解決您的問題。這將消除對複製DGV方法的需求,讓您的生活變得更加輕鬆。

具體的步驟:

  1. 讓您在數據表格式(myData
  2. 數據實例化的BindingSource:

    BindingSource binding = new BindingSource();

  3. 分配數據表到綁定源:

    binding.DataSource = myData;

  4. 然後將該綁定源分配給您的相關DGV。

    myDataGridView.DataSource = binding;

  5. 然後,而不是複製在你的DGVs行你可以重新分配您的綁定,或創建新的DGV新的和分配相同的數據表到新的綁定。

我希望這更清楚,我已經正確地理解了這個問題。

+0

對不起,也許我解釋說不好。我的第一個問題是,dgvExcel2不顯示UI上的數據。我沒有添加ComboBox行。但很高興知道未來。 – Atzen444

+0

啊好吧,我會添加一個編輯,正在使用bindingsources? –

+0

如果我這樣做,那麼兩個DGV都是綁定的......我需要1個包含沒有綁定數據的dgv。你不能在有界的DGV中添加組合框。 – Atzen444