Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在ASPxGridView的一个单元格中聚合项集合_C#_Linq_Devexpress_Aspxgridview_Llblgenpro - Fatal编程技术网

C# 如何在ASPxGridView的一个单元格中聚合项集合

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的列,该列将按名称显示相关组织

我使用的是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 %>'>
...

...

此列上的排序应该起什么作用?我希望它根据此列中返回的最后一个字符串进行排序,即,如果列中的一个单元格的值为“A
B
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 %>'>
...