[英]How to create and bind a GridView where the columns are determined by a database table?
不知道您是否仍然有此問題,但不久前我們已解決。 這並不簡單,但是可以做到。 我們的表格是針對治療部位(身體部位)和治療類型的,我們希望顯示一個網格,其中顯示所有可能的部位以及為相關患者打勾的部位。
獲取數據的服務器端查詢如下所示...
int systemID = 210;
var cross = TreatmentSites.Select(ts => new {
TreatmentSiteID = ts.ID,
TreatmentSiteName = ts.Description,
Checked = string
.Join("", TreatmentCheckTypes
.OrderBy(tct => tct.ID)
.Select(cs => SystemTreatmentSitesCheckeds
.Any(s => s.Active
&& s.SystemID == systemID
&& s.TreatmentSiteID == ts.ID
&& s.TreatmentCheckTypeID == cs.ID) ? "y" : "n"))
})
.ToArray();
這會拉出一個站點列表,其中nnyyn
用於檢查類型的字符串形式為nnyyn
的字符串。
Nest的工作是將其按摩到WPF可以使用的東西中。 為此,我們使用了以下代碼...
Dictionary<String, dynamic>[] data = new Dictionary<string, dynamic>[cross.Count()];
for (int crossN = 0; crossN < cross.Count(); crossN++) {
var d = new Dictionary<String, dynamic>();
d["TreatmentSiteID"] = cross[crossN].TreatmentSiteID;
d["TreatmentSiteName"] = cross[crossN].TreatmentSiteName;
for (int checktypeN = 0; checktypeN < treatmentCheckTypes.Count(); checktypeN++) {
d["C" + checktypeN] = cross[crossN].Checked[checktypeN] == 'y';
}
data[crossN] = d;
}
這為我們提供了所需的數據。 這樣,WPF視圖就可以在代碼中將列添加到網格,然后將數據綁定到網格。
以上是基本思想。 有關其工作原理的更多詳細信息,請參見我的博客 。
希望能有所幫助。
如果您點擊此鏈接,則應該有足夠的示例以了解一些想法。 想點指向WPF telerik組件。
您可以將RadGridView
的ItemsSource
屬性設置或綁定到IEnumerable<YourType>
,其中YourType
是具有Employee,NJ,PA,RI和NY屬性的類。
或到DataTable
的DataView
。
您將必須編寫一個SQL查詢,該查詢從數據庫中選擇適當的數據,然后為每個返回的記錄創建YourType
的實例,或者直接使用DataTable
。 關於如何與在線可用的數據庫進行通信的示例有很多: https : //msdn.microsoft.com/zh-cn/library/system.data.sqlclient.sqldataadapter(v=vs.110).aspx
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.