![](/img/trans.png)
[英]How to bind Navigation Property (second level model's two properties) in DataGridView's single column using BindingSource?
[英]How to bind a Navigation Property (second level properties) in DataGridView using BindingSource?
我使用了兩個實體類將值綁定到DataGridView
。 一個是估計和公司。
我創建了兩個BindingSource
例如EstimateBindingSource
和CompanyBindingSource
。
CompanyBindingSource
將DataSource作為EstimateBindingSource
,將DataMember作為Estimates
EstimateBindingSource
將DataSource作為Estimates
實體類,並且沒有定義DataMember 。 我已使用網格DataSource
將EstimateBindingSource
綁定到DataGridView
。
在這里,我需要在DataGridView中顯示估計數字,估計金額和公司名稱 。我無法實現這一目標。
注意: 我沒有做任何邏輯背后的代碼來做到這一點。需要只使用設計來實現這一點。
用於在DataGridView中顯示第二級屬性的選項
要顯示導航屬性的子屬性,可以使用以下任一選項:
使用DataGridViewComboBox
列並將其綁定到CompanyId
並將其DataSource
設置為公司列表,將DisplayMember
屬性設置為公司的Name
屬性,將ValueMember
設置為公司的Id
屬性。
覆蓋Company
類的ToString()
方法並返回公司Name
。 然后在網格中顯示Company
導航屬性。
為Estimate
創建一個CompanyName
屬性,該屬性返回其Company.Name
值並在網格中顯示CompanyName
。
使用DataGridView
CellFormatting
事件並將e.Value
設置為要在單元格中顯示的所需值(公司名稱)。
使用Linq
查詢ViewModel
您的Estimates列表或使用ViewModel
並將結果傳遞給數據網格視圖。
為Estimate
類型創建TypeDescriptor
以解析二級屬性。 。 要顯示公司的屬性而不是公司ID,可以使用DataGridViewComboBoxColumn
。
使用ComboBox列
由於您要求使用設計器而不編寫代碼的機制,因此我更多地描述了此選項。 以下是您應該執行的設置:
EstimatesBindingSource
應綁定到Estimates
列表 DataGridView
應綁定到EstimatesBindingSource
CompanyBindingSource
僅用作組合框列的數據源,應使用Companies
列表填充 Estimates
列表中顯示CompanyName
,只需使用DataGridViewComboBoxColumn
並將其DataSource
設置為公司列表,並將DisplayMember
設置為CompanyName
,將其value值設置為Id
。 並將其綁定到Estimate
CompanyId
字段。 此外,如果您的要求是不將其顯示為ComboBox
,只需將DataGridViewComboBoxColumn
DisplayStyle
屬性設置為Nothing
。 它刪除了下拉樣式。
你也可以發現這篇文章有用:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.