我想创建一个GridView(最好是telerik),根据数据库中的行生成和绑定列。网格应如下所示:
以下是数据库设置的示例。 我有3个数据库表如下:
员工 - 员工姓名列表
国家 - 国家清单
EmployeeStates-连接表,其中包含EmployeeID,StateID和boolean for checked或unchecked。
可以将新行添加到两个数据库表中,以便员工列表和城市列表变得更长。 如何将其绑定到GridView?
答案 0 :(得分:1)
不知道你是否还有这个问题,但我们一段时间后就解决了。这不是直截了当的,但可以做到。我们的表格用于治疗部位(身体部位)和治疗类型,我们希望显示一个网格,显示所有可能的部位,以及为相关患者勾选的部分。
获取数据的服务器端查询看起来像这样......
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
形式的字符串,用于检查的类型。
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视图能够在代码中向网格添加列,然后将数据绑定到网格。
以上是基本思路。有关其工作原理的更多详细信息可以是found on my blog。
希望有所帮助。
答案 1 :(得分:0)
如果你遵循这个link你应该有足够的例子来获得一些想法。想一想WPF telerik组件。
答案 2 :(得分:0)
您可以将ItemsSource
的{{1}}属性设置或绑定到RadGridView
,其中IEnumerable<YourType>
是一个包含Employee,NJ,PA,RI和纽约物业。
或YourType
的{{1}}。
您必须编写一个SQL查询,从数据库中选择适当的数据,然后为每个返回的记录创建DataView
的实例,或直接使用DataTable
。有很多关于如何与在线提供的数据库进行通信的示例:https://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqldataadapter(v=vs.110).aspx