繁体   English   中英

如何创建和绑定由数据库表确定列的GridView?

[英]How to create and bind a GridView where the columns are determined by a database table?

我想创建一个GridView(最好是telerik),其中根据数据库中的行生成和绑定列。 网格应如下所示: 在此处输入图片说明

这是有关数据库设置的示例。 我有3个数据库表,如下所示:

员工-员工姓名列表

国家-国家清单

EmployeeStates-联接表,具有EmployeeID,StateID和boolean(选中或未选中)。

可以将新行添加到两个数据库表中,以使雇员列表和城市列表变长。 如何将其绑定到GridView?

不知道您是否仍然有此问题,但不久前我们已解决。 这并不简单,但是可以做到。 我们的表格是针对治疗部位(身体部位)和治疗类型的,我们希望显示一个网格,其中显示所有可能的部位以及为相关患者打勾的部位。

获取数据的服务器端查询如下所示...

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组件。

您可以将RadGridViewItemsSource属性设置或绑定到IEnumerable<YourType> ,其中YourType是具有Employee,NJ,PA,RI和NY属性的类。

或到DataTableDataView

您将必须编写一个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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM