将Kendo级联下拉列表绑定到列表中的List属性

时间:2014-12-26 07:31:09

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

我有两个班级:

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

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

从我的Controller中,我传递了一个强类型的数据类型List&lt; Enterprise&gt;

我在视图的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包含相关的fin年列表    与企业(在上一个下拉列表中选择)

1 个答案:

答案 0 :(得分:0)

您无法从此级联,因为没有Parent <-> Child关系。这意味着FinYear没有ParentID。您需要手动更改第二个ComboBox的dataSource或实现连接。

ComboBox.cascadeFrom

  
      
  • 儿童组合框将听取父母价值的任何变化。
  •   
  • 如果父级没有值,则该子级将被禁用。
  •   

Cascading ComboBoxes ComboBox / Cascading ComboBox Demo

以下是demo: - JavaScript但我认为您也可以轻松修改扩展名。{/ p>

<强> 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");

});