【发布时间】:2014-01-31 14:59:51
【问题描述】:
我的场景:
以组合框(部分视图)结尾的级联下拉列表,用于主->带有剑道网格的详细信息场景
ddl->ddl->ddl->cb
目标:
- 在页面加载时 DropDownLists 正在用数据一一初始化 具有一些默认值,并且 ComboBox 应保持为空
- 在网格上 selecteditemchanged 部分视图正在填充数据,ComboBox 应显示适当的元素。
就我而言,它的工作原理如下:
- 在页面加载时 ComboBox 显示 '0'(我想是 null?)
- 在选择更改时,它会闪烁选定的 value,基本上是 model.Id,它会显示适当的 text
或者,如果我在加载父 DropDownList 数据时清除了 kendoComboBox 的 text/value 属性:
- 页面加载时 ComboBox 为空
- 在选择更改时,它会像上面一样闪烁,但它保持为空
如果我将 ComboBox 控件更改为第 4 个 DropDownList,它仍然会“闪烁”,但总的来说一切正常。从模型中选择的项目正确地保存在下拉菜单中。
我无法提供完整的示例,因为它太重了,但我认为没有必要。
这就是列表数据的级联方式。在父级的 DataBound 事件中,调用子级的 .dataSource.read() 方法。没什么特别的。
function ParentProductIdDataBound() {
var dropdownlist = $("#ParentProductId").data("kendoDropDownList");
if (dropdownlist.value()) {
OnParentProductIdChange();
}
}
function ParentProductIdChange() {
OnParentProductIdChange();
}
function OnParentProductIdChange() {
var productcombobox = $("#ProductId").data("kendoComboBox");
productcombobox.text(""); <- empty until combo is populated
productcombobox.value("");
productcombobox.enable(true); <- enable combo
productcombobox.dataSource.read(); <- populate combo
}
这是组合本身的代码
@(Html.Kendo().ComboBox()
.Name("ProductId")
.DataTextField("Text")
.DataValueField("Value")
.AutoBind(false)
//.Text(Model.ProductId == 0 ? " " : Model.ProductName)
.DataSource(source =>
{
source.Read(read =>
{
read.Action("GetMeansOfProduction", "DemandForMeansOfProduction", new { level = 3 }).Data("onProductComboBoxAdditionalData");
})
.ServerFiltering(false);
})
.Events(e =>
{
e.Change("ProductIdChange");
e.DataBound("ProductIdDataBound");
})
)
看起来像:
- 只要未填充 ComboBox,它就会直接显示绑定到 (Id) 的模型值,即使模型为空 -> 这是第一种情况下的“0” - 我希望它等待数据李>
- 如果我将 ComboBox 的 value 和/或 text 设置为空,它将失去与模型的绑定,并且在填充数据后它不知道应该是哪个项目选择...
解决方案的想法?
【问题讨论】:
标签: javascript asp.net razor kendo-ui cascadingdropdown