2014-12-26 1 views
1

У меня есть два класса:Связывание Кендо каскадного Выпадающего свойства List в списке

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

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

Из моего контроллера, я передаю строго типизированный вид списка типов данных < Enterprise>

у меня есть два DropDownLists Кендо в разделе HTML представления:

@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 содержит список плавников лет, связанных с предприятия (как выбрано в предыдущем раскрывающемся списке)

ответ

0

Вы не можете каскадно от этого, потому что это не Parent <-> Child отношений. Это означает, что FinYear не имеет ParentID. Вам необходимо вручную изменить источник данных второго ComboBox или реализовать соединение.

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

}); 
+0

Может DataSource из из COMBOBOX-х категориях «быть модель передается View? Если возможно, как вы это делаете? Когда я пытаюсь, я получаю ошибки javascript. Также, какая разница между comboBox и Dropdown (в Kendo), так как вы получаете результаты в своей демонстрации. –

+0

1 - да, это может быть, если это не могло быть бесполезным mvc :-) 2 - Я думаю, что это слишком широкое, чтобы ответить на него. 3 - Единственное различие между ними: _ Комбобокс позволяет пользователю выбирать значение из предопределенного набора или вводить пользовательский. Выпадающий список разрешает только одно из предопределенных значений. – t3chb0t

+0

Возможно ли, чтобы вы отредактировали свой ответ выше, чтобы источник данных был моделью? –

Смежные вопросы