2012-01-11 25 views
2

我使用ASP.NET 3.5,LLBLGenPro 3.0和10.1.7 DevExpress的一個小區。我有一個ASPxGridView與LinqServerModeDataSource。 ASPxGridView的每一行對應於LLBLGenPro中的一個TaskEntity。 TaskEntity的其中一個屬性是OrganizationCollection,它是相關OrganizationEntities的集合。我想要做的就是添加一個列到ASPxGridView稱爲OrgList,這將通過名稱(最好在<br> -delimited列表中顯示相關的組織的名單,所以每個項目將在其自己的行,但該列表會全部在同一個單元格中,如果該列的EncodeHtml屬性設置爲「False」,則該單元格工作正常)。如何聚合項目的集合中的ASPxGridView

目前,我在lsmdsTasks_Selecting()事件(這是一個簡單的例子):

IQueryable<TaskEntity> taskQuery; 

taskQuery = TaskQueryStore.GetTasks(...); 

var query = from task in taskQuery 
      select new 
        { 
         task.Id, 
         task.TaskName, 
         OrgList = ??? 
        } 

e.KeyExpression = "Id"; 
e.QueryableSource = query; 

到目前爲止,我已經嘗試了一些事情,爲「???」,結果如下:

首先,我想:

OrgList = task.OrganizationCollection.Aggregate("", (acc, item) => (acc == "" ? "" : acc + "<br>") + item.OrgName) 

這給了我以下ORMException:「‘總’在此LINQ提供程序不支持,請嘗試重寫使用方法查詢其支持「。

然後,我想:

OrgList = String.Join("<br>", task.OrganizationCollection.Select(x => x.OrgName).ToArray()) 

這給了我以下ORMException:「方法調用‘加入’並沒有一個已知的數據庫映射功能或其他已知的處理。」

已經種工作一直是唯一的事情:

OrgList = GetOrgList(task.Id) 

然後定義單獨的GetOrgList()方法,它接受任務ID,並建立在我想要的格式列表,並將其作爲一個字符串。這實際上確實顯示出網格中的數據我想要的方式,但缺點是,當你試圖解決此列上它不能正常工作,當您嘗試使用它只是過濾自動篩選此列篩選不管。另外,我認爲它比數據庫多打了數次。

有沒有什麼辦法讓這個與排序和篩選完整的工作?或者我是否需要禁用此列的這些功能?

+0

我應該排序此列的工作? – Filip 2012-01-12 08:50:25

+0

我期望它根據在此列中返回的最終字符串進行排序,即如果列中的一個單元格的值爲「A
B
C」,第二個是「B
C
D」,則它會根據這些值進行排序,只是將它們視爲字符串。 – RebelScum 2012-01-12 14:30:30

+1

您使用LLBLGen Pro生成哪個ORM? (LLBLGen Pro Runtime Framework 3.1,Entity Framework v1,Entity Framework v4,Linq to Sql,NHibernate 2.x/3.0(hbm.xml和FluentNHibernate)) – JamieSee 2012-01-31 16:36:27

回答

0

我結束了一個prefetchPath來獲取組織的任務,然後在Linq2Objects內存查詢,然後使所得到的名單我網格的數據源使用集合,那工作。

2

嘗試使用模板,你列的中繼器。您可以使用數據綁定將列中的OrgList傳遞給中繼器。

事情是這樣的:

<asp:Repeater runat="server" ID="repeater" Datasource='<%# OrgList %>'> 
...