[英]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.