C# 如何在ASPxGridView的一个单元格中聚合项集合
我使用的是ASP.NET 3.5、LLBLGenPro 3.0和DevExpress 10.1.7。我有一个带有LinqServerModeDataSource的ASPxGridView。ASPxGridView的每一行对应于LLBLGenPro中的一个TaskEntity。TaskEntity的属性之一是OrganizationCollection,它是相关OrganizationEntity的集合。我想做的是在ASPxGridView中添加一个名为OrgList的列,该列将按名称显示相关组织的列表(理想情况下是在一个C# 如何在ASPxGridView的一个单元格中聚合项集合,c#,linq,devexpress,aspxgridview,llblgenpro,C#,Linq,Devexpress,Aspxgridview,Llblgenpro,我使用的是ASP.NET 3.5、LLBLGenPro 3.0和DevExpress 10.1.7。我有一个带有LinqServerModeDataSource的ASPxGridView。ASPxGridView的每一行对应于LLBLGenPro中的一个TaskEntity。TaskEntity的属性之一是OrganizationCollection,它是相关OrganizationEntity的集合。我想做的是在ASPxGridView中添加一个名为OrgList的列,该列将按名称显示相关组织
分隔的列表中,因此每个项目将位于其自己的行中,但该列表将全部位于同一单元格中,如果该列的EncodeHtml属性设置为“False”,则可以使用该列)
目前,我在lsmdsTasks_Selecting()事件中遇到了以下问题(这是一个简化的示例):
然后分别定义GetOrgList()
方法,该方法获取任务Id,以我想要的格式构建列表,并将其作为字符串返回。这确实按照我所希望的方式显示了网格中的数据,但缺点是,当您尝试对该列进行排序时,它无法正常工作,而当您尝试使用自动筛选工具筛选该列时,它只会过滤掉所有内容。另外,我想它对数据库的影响比需要的要多出几倍
有没有办法让它在排序和过滤完好无损的情况下工作?或者我需要为此专栏禁用这些功能吗 最后,我获取了带有组织预取路径的任务,然后在Linq2Objects in memory查询中使用聚合,然后将结果列表传递给网格的数据源,这就成功了 尝试为您的列使用带转发器的模板。您可以使用数据绑定将OrgList从列传递到中继器 大概是这样的:
<asp:Repeater runat="server" ID="repeater" Datasource='<%# OrgList %>'>
...
...
此列上的排序应该起什么作用?我希望它根据此列中返回的最后一个字符串进行排序,即,如果列中的一个单元格的值为“AB
C”,而第二个单元格的值为“B
C
D”,它将根据这些值进行排序,只是将它们作为字符串处理。您使用LLBLGen Pro生成哪个ORM?(LLBLGen Pro运行时框架3.1、实体框架v1、实体框架v4、Linq到Sql、NHibernate 2.x/3.0(hbm.xml和FluentNHibernate))
OrgList = task.OrganizationCollection.Aggregate("", (acc, item) => (acc == "" ? "" : acc + "<br>") + item.OrgName)
OrgList = String.Join("<br>", task.OrganizationCollection.Select(x => x.OrgName).ToArray())
OrgList = GetOrgList(task.Id)
<asp:Repeater runat="server" ID="repeater" Datasource='<%# OrgList %>'>
...