2010-08-14 125 views
2

這裏發生的情況是,當窗體打開時,它顯示contextMenu並使用dataSet1的值在其上顯示DataGridView。但是,當我單擊按鈕來更改網格的數據源時,它不會顯示dataSet2的記錄。問題設置DataGridView的DataSource

private void Form1_Load(object sender, EventArgs e) 
{ 
    SetDataSource(dataSet1);// A populated DataSet 
} 

protected void SetDataSource(DataSet ds) 
{ 
    dataGridView1.DataSource = ds; 
    ToolStripControlHost tsHost = new ToolStripControlHost(dataGridView1); 
    contextMenuStrip1.Items.Clear(); 
    contextMenuStrip1.Items.Add(tsHost); 
    contextMenuStrip1.Show(textBox1, 0, 27); 
} 

private void button1_Click(object sender, EventArgs e) 
{ 
    SetDataSource(dataSet2);// Another populated DataSet 
} 

我嘗試添加在我的另一形式DataGridView控件(dataGridView2),但這次我沒有把它放在一個ToolStripControlHost,我沒有將它添加到contextMenuStrip1。

dataGridView1.DataSource = ds; 
dataGridView2.DataSource = ds; // <-- Parent of this is the Form1, the control is not added in the contextMenuStrip. 
ToolStripControlHost tsHost = new ToolStripControlHost(dataGridView1); 
contextMenuStrip1.Items.Clear(); 
contextMenuStrip1.Items.Add(tsHost); 
contextMenuStrip1.Show(textBox1, 0, 27); 

當Form 1加載時,彈出窗口contextMenuStrip1和dataGridView1被添加以將其製備dataGridView1在形式消失,dataGridView2僅保留在Form1的項目。

當我打button1dataGridView2從改變其內容基礎公司新增DataSourcedataSet2),而dataGridView1仍然顯示的dataSet1值。 我注意到當時間dataGridView1被添加到ToolStripHost,並使其成爲contextMenuStrip1中的項目時,DataGridView控件的DataSource屬性不再被更改。不像dataGridView2仍然是我沒有添加到contextMenuStrip1的形式。

回答

6

我花了一段時間,但我發現它。 ToolStripControlHost中的控件似乎沒有被分配BindingContext通過常規控制樹進行。

您可以通過添加以下到您的SetDataSource方法的第一行利用這個自己照顧:

dataGridView1.BindingContext = this.BindingContext; 

公平歸屬,我從this web page,在類似的情況是相對於遇到的想法到一個組合框。我使用您的代碼在示例應用程序中對其進行了測試,以驗證它是否有效。

+0

謝謝先生,我會盡力的。 – yonan2236 2010-08-14 04:08:47

+0

它的作品!呵呵,我很感激,謝謝......) – yonan2236 2010-08-14 04:10:42

+0

不錯。但是這背後的概念是什麼,即背後的行爲? – TheBlastOne 2011-09-01 08:27:57

-3

只是更改控件的數據源不會告訴它重新綁定(刷新)其來自該新數據源的數據。更改其數據源後,您需要執行控件的DataBind()命令。

所以在此之後:

dataGridView1.DataSource = ds; 

嘗試添加此:

dataGridView1.DataBind(); 
+0

如果我沒有弄錯,DataGridView控件沒有DataBind屬性。但GridView在ASP.Net – yonan2236 2010-08-14 02:09:31

+0

糟糕。對不起我的錯誤Yonan。很高興你有它的工作。 – BluMunky 2010-08-14 16:19:57

相關問題