【问题标题】:How can I bind additional data to a Telerik Kendo Drop Down List如何将其他数据绑定到 Telerik Kendo 下拉列表
【发布时间】:2016-02-23 14:08:28
【问题描述】:

我有一个剑道下拉列表。它使用位置名称作为文本和位置 ID 作为值进行设置。但是,我需要将第三个字段绑定到模型(或至少以某种方式返回到我的控制器)。有没有办法绑定额外的数据?我见过几个地方可以通过模板在下拉框中显示附加数据,但我找不到任何将附加值传递回控制器的示例。

下拉框使用的模型有这些字段:

  • origLocationName
  • origLocationID
  • 客户 ID

目前,origLocationName 是下拉菜单中显示的文本值,origLocationID 是绑定到模型并传递给控制器​​的值。我想要的是能够在用户从下拉框中选择一个选项时绑定 customerID 和 origLocationID。

这是我的下拉框:

                    @(Html.Kendo().DropDownListFor(m => m.ddLocation)
                        .Name("ddLocation")
                        .HtmlAttributes(new { style = "width: 500px;", onchange = "onChange_ddLocation(this)" })
                        .OptionLabel("Select from List")
                        .DataTextField("origLocationName")
                        .DataValueField("origLocationID")
                        .BindTo(Model.locations)
                )

当用户选择一个位置时,我可以像这样访问控制器中的 origLocationID:

        [HttpPost]
    public ActionResult CustomerDashboard(ModelCustomerDashboard model)
    {
        ...

        dash.ddLocation = model.ddLocation;

    ...

        return View(dash);
    }

如何同时传递该位置的客户编号及其位置 ID?

一些笔记。 (1.) 我不能只传递一个 ID 并查找位置和客户 ID。每个位置有多个客户。因此,位置 ID 123 可能在公司 ABC 和公司 DEF 中。这不是我设计的,也无法对数据库进行更改;只是用我所拥有的。 (2.) 我考虑将客户 ID 和位置 ID 合并到一个字段中,例如:“CustID:ABC;LocationID:123”。然后我可以解析 ddLocation 并获取这两个值。我不想这样做,因为有些地方不需要客户 ID(有些用户只能看到一个客户),所以目前在 ddLocation 中只有位置 ID 的设置对他们有用。我宁愿不必重写我已经为那个实例所做的一切。

例子:

Dropdown Box
-------------
Visible Text     ddLocation     ddCustomer
Warehouse 1      123            ABC
Warehouse 2      456            ABC
Studio A         123            DEF

User selects the first item.

Controller
----------
model.ddLocation = '123'
model.ddCustomer = 'ABC'

编辑 1:

这是下拉框更改时调用的jquery:

    function onChange_ddLocation(arg) {
    try {
        $("#dropDownSource").val("Location");
        document.forms[0].submit();
    }
    catch (ex) {
        alert(ex.message);
    }
}

【问题讨论】:

  • 如何回传(或 Ajax)到 CustomerDashboard?你能发布客户端代码吗?
  • 感谢 Win 的回复。当下拉列表更改时,我会提交一个简单的表单。我编辑了我的问题以包含代码。如果您对我有任何建议,请告诉我。
  • 能把剩下的前端代码贴出来吗?

标签: c# model-view-controller razor kendo-ui telerik


【解决方案1】:

在模型 ModelCustomerDashboard 中添加新属性,例如customerOrigLocationID,它将由 customerID 和 origLocationID 与一些分隔符组合,如“-”或“;” (连字符或分号)。 将此 customerOrigLocationID 作为 DataValueField 绑定到下拉列表。 在后端,您可以始终使用分隔符将其拆分并具有值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-21
    • 2010-10-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多