1

現在,我已經根據實體模型的對象上下文創建了一個新的Object數據源。然後我創建了一個BindingSource和一個DataGridView設置爲這個BindingSource。如何將查詢與連接綁定到DataGridView?

我可以添加綁定到TraceLine表中的數據的列。當我設置數據源時,我在這些列中看到了值。但是,我似乎無法從連接表中獲取數據。如何將DataGridView綁定到具有連接的查詢?

using (var entities = new MyEntities()) 
{ 
    var lines = from t in entities.Lines 
       join m in entities.Methods on t.MethodHash equals m.MethodHash 
       where t.UserSessionProcessId == m_SessionId 
       select new 
       { 
        m.Name, // doesn't get displayed in DataGridView, but I want it to 
        t.Sequence, 
        t.InclusiveDuration, 
        t.ExclusiveDuration 
       }; 

    dgvBindingSource.DataSource = lines; 
} 

回答

0

一個可能的問題是,在DataGridView可能有其數據源在設計時設置的類型之一,但在運行時你將其設置爲有一個額外的成員匿名類型。如果我記得,如果在生成列後更改數據源,DataGridView將不會重新生成列。

您可能需要將數據源設置爲空,清除列集合,然後設置數據源。實際上更好的想法是明確創建列而不是自動生成列。

+0

只是好奇,如果你建議不使用數據綁定,手動添加列,然後遍歷集合並手動填寫datagridview?我知道這是一個選擇,但是是最後的選擇。 – esac 2010-06-22 06:10:28

+0

否否...數據綁定正常。但DataGridView與大多數網格一樣,將通過反映數據源自動構建列。但是,如果您的設計時間與構成匿名類型的某種類型綁定,則可能需要手動添加列。單元格中的值應按預期方式綁定數據。 – Josh 2010-06-22 06:22:46

相關問題