【问题标题】:Binding a Kendo cascading dropdown to a List property within a list将 Kendo 级联下拉列表绑定到列表中的 List 属性
【发布时间】:2014-12-26 07:31:08
【问题描述】:

我有两个班级:

class Enterprise
{
    string EnterpriseCode {get; set;}
    string LocationCode {get; set;}
    List<FinYear> FinYears {get; set;}
}

class FinYear
{
    string FinancialYear {get; set;}
}

从我的控制器中,我传递了数据类型 List

的强类型视图

我在视图的 HTML 部分中有两个 Kendo 下拉列表:

@model List<Enterprise>

@(Html.Kendo.DropDownList()
.Name("EnterpriseDDL)
.BindTo(Model)
.DataTextField("EnterpriseCode")
.DataValueField("Enterprise")

(Html.Kendo.DropDownList()
.Name("YearsDDL")
.cascadeFrom("EnterpriseDDL")
.BindTo(Model) //!!! not sure about this
.DataTextField("") //!!!
.DataValueField("") //!!!

这三个字段应该是什么,以便 DDL 包含相关联的财政年度列表 与企业合作(在上一个下拉菜单中选择)

【问题讨论】:

    标签: c# html asp.net-mvc kendo-ui frontend


    【解决方案1】:

    您不能从此级联,因为没有Parent &lt;-&gt; Child 关系。这意味着FinYear 没有ParentID。您需要手动更改第二个 ComboBox 的 dataSource 或实现连接。

    ComboBox.cascadeFrom

    • 子组合框将监听父值的任何变化。
    • 如果父级没有值,则子级将被禁用。

    Cascading ComboBoxes ComboBox / Cascading ComboBox Demo

    这是demo:-它是JavaScript,但我认为您也可以轻松地为扩展修改它。

    HTML

    <div class="demo-section k-header">
        <p>
            <label for="categories">Enterprises:</label><input id="categories" style="width: 270px" />
        </p>
        <p>
            <label for="products">FinYear:</label><input id="products" style="width: 270px" />
        </p>
    </div>
    

    JavaScript

    var enterpriseArray = [{
      EnterpriseCode: "abc",
      LocationCode: "123",
      FinYears: [ "2014", "2015" ]
    },
    {
      EnterpriseCode: "def",
      LocationCode: "456",
      FinYears: [ "2012", "2013" ]
    }];
    
    $(document).ready(function() {
        var categories = $("#categories").kendoComboBox({                      
            placeholder: "Select Enterprise Code...",
            dataTextField: "EnterpriseCode",
            dataValueField: "EnterpriseCode",
            dataSource: enterpriseArray,
            change: function(e) {
              //debugger;
              products.dataSource.data(e.sender.dataItem().FinYears);
            }
        }).data("kendoComboBox");
    
        var products = $("#products").kendoComboBox({                       
            placeholder: "Select FinYear...",
            //dataTextField: "",
            //dataValueField: "",
        }).data("kendoComboBox");
    
    });
    

    【讨论】:

    • 'categories'组合框的数据源可以是传递给视图的模型吗?如果可能的话,你是怎么做到的?尝试时出现 javascript 错误。另外,自从您在演示中获得结果以来,comboBox 和 Dropdown(在 Kendo 中)之间有什么区别。
    • 1 - 是的,它可以是,如果它不能 mvc 是无用的:-) 2 - 我认为这太宽泛了,无法在这里回答。 3 - 它们之间的唯一区别是: 组合框允许用户从预定义的集合中选择一个值或输入一个自定义值。下拉列表仅允许选择预定义值之一。
    • 您是否可以编辑上述答案,使数据源成为模型?
    • @NehaAgrawal 这将与模型绑定有关,并且非常广泛。我不认为我可以用几句话来解释它。根据您使用的方法(javascript 或 razor 扩展),您将需要一个 json 作为数据源或模型,并基于此您需要相应地实现您的 ActionResult 以返回所需格式的数据。
    • 谢谢。您的解决方案帮助我找出了写答案..最终:)
    猜你喜欢
    • 2012-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-19
    • 2010-10-04
    • 2019-08-21
    • 1970-01-01
    相关资源
    最近更新 更多