gpt4 book ai didi

asp.net-mvc - Telerik MVC Grid Master Detail Cascading Dropdowns

转载 作者:行者123 更新时间:2023-12-04 16:26:03 25 4
gpt4 key购买 nike

我在两个级别上使用主细节 Telerik MVC Grid。

  • 第一级包含客户下拉列表和一些杂项数据。
  • 第二级包含与第一级客户相关联的汽车下拉列表和一些杂项数据。

  • 我现在使用外键列来显示汽车和客户的下拉列表。
    客户如何在第一级过滤第二个下拉列表?

    代码:
    @(Html.Telerik().Grid<Models.ClientsModel>()
    .Name("Grid")
    .ToolBar(commands => commands.Insert().ButtonType(GridButtonType.ImageAndText))
    .DataKeys(keys => keys.Add(c => c.ClientLineID))
    .Columns(columns =>
    {
    columns.ForeignKey(o => o.ClientID, (System.Collections.IEnumerable)ViewBag.Client, "ClientID", "Name")
    .Width(330)
    .Title("Client");
    columns.Command(commands =>
    {
    commands.Edit().ButtonType(GridButtonType.ImageAndText);
    commands.Delete().ButtonType(GridButtonType.ImageAndText);
    }).Width(250);
    })
    .DetailView(car => car.ClientTemplate(

    Html.Telerik().Grid<Delta.Models.CarModel>()
    .Name("Car_<#= ClientID #>")
    .DataKeys(keys => keys.Add(c => c.LineID))
    .ToolBar(commands => commands.Insert().ButtonType(GridButtonType.ImageAndText))
    .DataBinding(dataBinding =>
    {
    dataBinding.Ajax()
    .Select("_CarLineIndex", "Client", new { id = "<#= ClientID #>" })
    .Insert("_CarLineCreate", "Client", new { id = "<#= ClientID #>" })
    .Update("_CarLineUpdate", "Client")
    .Delete("_CarLineDelete", "Client");
    })
    .Columns(columns =>
    {
    columns.ForeignKey(o => o.CarID, (System.Collections.IEnumerable)ViewBag.Cars,
    "CarID", "No")
    .Width(500)
    .Title("Car");
    columns.Command(commands =>
    {
    commands.Edit().ButtonType(GridButtonType.ImageAndText);
    commands.Delete().ButtonType(GridButtonType.ImageAndText);
    }).Width(200);
    })
    .Editable(editing => editing => editing.Mode(GridEditMode.InLine))
    .Scrollable(c => c.Height("auto"))
    .Resizable(resizing => resizing.Columns(true))
    .Reorderable(reorder => reorder.Columns(true))
    .KeyboardNavigation()
    .Footer(false)
    .ToHtmlString()
    ))
    .DataBinding(dataBinding =>
    {
    dataBinding.Ajax()
    .Select("_ClientIndex", "Client")
    .Insert("_ClientCreate", "Client")
    .Update("_ClientUpdate", "Client")
    .Delete("_ClientDelete", "Client");
    })
    .Scrollable(c => c.Height("auto"))
    .Editable(editing => editing.Mode(GridEditMode.InLine))
    .Pageable(o => o.PageSize(50))
    .Filterable()
    .KeyboardNavigation()
    .Groupable())

    我认为代码可能涉及 OnDetailViewExpand 上的一些 javascript。事件,但我不知道是什么。
    我现在唯一的解决方案是将网格拆分为单独的 View 并在那里构建级联组合框。

    最佳答案

    不幸的是,我无法对帖子发表评论,以澄清有关您的问题的一些事实。我将在我的回答中做出一些假设,以便我们可以弄清楚问题的确切性质。您有两个模型类,每个网格 ClientsModel 和 CarModel 一个。您正在使用 ClientsModel(第一)网格中的字段过滤 CarModel(第二)网格。

    您的选择绑定(bind)中不仅限于一个(<= ClientID =>) 参数。您可以像使用 ClientID 一样使用 ClientsModel 类中的其他字段。

    示例代码:

    dataBinding.Ajax().Select("_CarLineIndex", "Client", new { id = "<#= ClientID #>", city = "<#= City #>" })

    这是一个带有模拟数据的工作示例,说明了上述方法:

    客户端类
    public class Client
    {
    public int ClientId { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string City { get; set; }
    }

    车类
    public class Car
    {
    public string Make { get; set; }
    public string Model { get; set; }
    public int Year { get; set; }
    public string Color { get; set; }
    }

    家庭 Controller
    [GridAction]
    public ActionResult _Index()
    {
    Client c1 = new Client() { ClientId = 1, City = "Boston", FirstName = "Ted", LastName = "Boder" };
    Client c2 = new Client() { ClientId = 2, City = "New York", FirstName = "Chris", LastName = "Tobb" };
    Client[] clients = {c1, c2};
    return View(new GridModel(clients));
    }

    [GridAction]
    public ActionResult _Cars(int ClientId, string City)
    {
    Car c1 = new Car() { Color = "Yellow", Make = "Ford", Model = "Mustang", Year = 2012 };
    Car c2 = new Car() { Color = "Black", Make = "Toyota", Model = "Camry", Year = 2010 };
    Car[] cars = { c1, c2 };
    return View(new GridModel(cars));
    }

    看法
    @(Html.Telerik().Grid<Client>()
    .Name("Clients")
    .Columns(columns =>
    {
    columns.Bound(o => o.FirstName);
    columns.Bound(o => o.LastName);
    columns.Bound(o => o.City);
    })
    .DetailView(clientDetailView => clientDetailView.ClientTemplate(
    Html.Telerik().Grid<Car>()
    .Name("ClientDetails_<#= ClientId #>")
    .Columns(columns =>
    {
    columns.Bound(c => c.Make);
    columns.Bound(c => c.Model);
    columns.Bound(c => c.Year);
    columns.Bound(c => c.Color);
    })
    .DataBinding(db2 => db2.Ajax().Select("_Cars", "Home", new { ClientID = "<#= ClientId #>", City = "<#= City #>" }))
    .Pageable()
    .Sortable()
    .ToHtmlString()
    ))
    .DataBinding(db1 => db1.Ajax().Select("_Index", "Home"))
    .Pageable()
    .Sortable()
    .Filterable()
    )

    从示例中可以看出,在绑定(bind)网格时,我还传递了 City 参数和 ClientId。

    如果我错过了什么,请告诉我。

    关于asp.net-mvc - Telerik MVC Grid Master Detail Cascading Dropdowns,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10677341/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com