Linq 使用Devexpress MVC树状列表按客户端列出订单总数
我正在尝试实现一个DevExpress MVC树列表,它将客户端列表显示为层次结构的第一级。但是,当您打开一个客户机时,第二级必须显示相关订单的列表,以及每个订单的OrderTotal 我试着根据自己的演示,在这是类似于我所寻找的。我以Northwind数据库为例 树列表必须基于的模型必须是特定的,因为它必须具有以下结构(可能我在这方面错了): 客户ID, Order.CustomerId, 客户名称, 订单总数, 订单日期, 船市 第二个必须是“ParentId”,以满足层次结构 以下是我控制器中的内容:Linq 使用Devexpress MVC树状列表按客户端列出订单总数,linq,devexpress-mvc,Linq,Devexpress Mvc,我正在尝试实现一个DevExpress MVC树列表,它将客户端列表显示为层次结构的第一级。但是,当您打开一个客户机时,第二级必须显示相关订单的列表,以及每个订单的OrderTotal 我试着根据自己的演示,在这是类似于我所寻找的。我以Northwind数据库为例 树列表必须基于的模型必须是特定的,因为它必须具有以下结构(可能我在这方面错了): 客户ID, Order.CustomerId, 客户名称, 订单总数, 订单日期, 船市 第二个必须是“ParentId”,以满足层次结构 以下是我控制
[ValidateInput(false)]
public ActionResult OrderTreeListPartial()
{
var model = db.Orders.GroupBy(o => o.Customer)
.Select(group => new
{
CustomerId = group.Key.CustomerID,
ParentId = group.Select(g=>g.CustomerID),
CustomerName = group.Key.CompanyName,
OrderTotal = group.Sum(g => g.OrderTotal),
OrderDate = group.Select(g => g.OrderDate),
City = group.Select(g => g.ShipCity)
});
return PartialView("_OrderTreeListPartial", model);
}
我的订单中有以下内容:
@{
var treeList = Html.DevExpress().TreeList(settings =>
{
settings.Name = "OrderTreeList";
settings.CallbackRouteValues = new { Controller = "TreeList", Action = "OrderTreeListPartial" };
settings.SettingsEditing.AddNewNodeRouteValues = new { Controller = "TreeList", Action = "OrderTreeListPartialAddNew" };
settings.SettingsEditing.UpdateNodeRouteValues = new { Controller = "TreeList", Action = "OrderTreeListPartialUpdate" };
settings.SettingsEditing.DeleteNodeRouteValues = new { Controller = "TreeList", Action = "OrderTreeListPartialDelete" };
settings.SettingsEditing.NodeDragDropRouteValues = new { Controller = "TreeList", Action = "OrderTreeListPartialMove" };
settings.CommandColumn.Visible = true;
settings.CommandColumn.NewButton.Visible = true;
settings.CommandColumn.DeleteButton.Visible = true;
settings.CommandColumn.EditButton.Visible = true;
settings.AutoGenerateColumns = false;
settings.KeyFieldName = "CustomerId";
settings.ParentFieldName = "ParentId";
settings.RootValue = 0;
settings.Columns.Add(
column =>
{
column.FieldName = "CustomerName";
}
);
settings.Columns.Add(
column =>
{
column.FieldName = "OrderDate";
}
);
settings.Columns.Add(
column =>
{
column.FieldName = "OrderTotal";
column.PropertiesEdit.DisplayFormatString = "{0:C}";
}
);
settings.Columns.Add(
column =>
{
column.FieldName = "City";
}
);
settings.SettingsPager.Visible = true;
settings.SettingsSelection.Enabled = true;
});
if (ViewData["EditError"] != null)
{
treeList.SetEditErrorText((string)ViewData["EditError"]);
}
}
@treeList.Bind(Model).GetHtml()
我认为问题在于控制器中的LINQ表达式。事实上,我不是LINQ方面的专家,我正在为未来的项目评估DevExpress扩展。无论是在我的LINQ中,还是在我如何准备树状图,任何帮助都将不胜感激。您没有真正说明您的问题,但我认为您不应该提前进行分组,因为这会导致分组列表 只需创建一个包含“CustomerId”和“ParentId”列的数据表。 然后,树列表将进行分组