【问题标题】:Using Devexpress MVC TreeList to list order totals by client使用 Devexpress MVC TreeList 按客户列出订单总额
【发布时间】:2015-02-27 20:46:36
【问题描述】:

我正在尝试实现一个 DevExpress MVC TreeList,它将客户端列表显示为层次结构的第一级。但是,当您打开一个客户时,第二级必须显示相关订单的列表以及每个订单的 OrderTotal。

我正在尝试以http://demos.devexpress.com/MVCxTreeListDemos/DataBinding/DataBinding 的演示为基础,这与我正在寻找的内容相似。我以罗斯文数据库为例。

TreeList 必须基于的模型必须是特定的,因为它必须具有以下结构(也许我错了):

客户 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);
    }

我的 _OrderTreeListPartial 中有以下内容:

@{
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 中还是在我准备 TreeList 的方式中。

【问题讨论】:

    标签: linq devexpress-mvc


    【解决方案1】:

    您并没有真正说明您的问题,但我认为您不应该提前进行分组,因为这会产生组列表。

    只需创建一个包含“CustomerId”和“ParentId”列的 DataTable。 然后 TreeList 将进行分组

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-07-11
      • 1970-01-01
      • 1970-01-01
      • 2018-12-06
      • 1970-01-01
      • 2019-07-22
      • 1970-01-01
      • 2015-02-10
      相关资源
      最近更新 更多