【问题标题】:Kendo UI: Combo box shows value instead of TextKendo UI:组合框显示值而不是文本
【发布时间】:2017-03-18 05:06:29
【问题描述】:
我正在使用带有 AngularJS 的 Kendo UI。我无法解决问题。
如果模型设置为组合框绑定到的数据源中不存在的 ID,则该值将按原样显示在下拉列表中。即,如果我将模型设置为 4,并且数据源中没有 ID 为 4 的数据项,则组合框按原样显示 4。我想用空字符串替换它。
如何将其更改为显示空文本框?
见sample
附言。问题不仅限于 Angular。 Kendo 自己的 MVVM 绑定也有同样的问题。
【问题讨论】:
标签:
angularjs
kendo-ui
kendo-combobox
【解决方案1】:
好吧,因为它不是下拉菜单而是组合框,所以你可以在里面写下每一个文本,恐怕你必须自己检查。
Value 属性只是设置一个值,如果是组合框,如果值与数据源中的项目不匹配,那么它只是将值设置到输入框。
为了进行检查,我将使用dataBound 事件,该事件在组件创建后启动一次。因为它是在创建组件后启动的,所以您可以轻松地将所选值与数据源中的值进行比较。
这里是小demo。希望能帮助到你。
【解决方案2】:
可能会迟到,但接受的答案对我不起作用。
如果有人使用 SQL Server 将其值存储在具有外键的父表和存储所有组合框值的子表中。然后我所做的是返回所选值的 ID 和文本(使用左外连接)。
编辑:我刚刚注意到这是有角度的,下面是 kendo-ui Jquery。
SQL
SELECT col1,
col2,
col3,
ChildID, -- ID stored in parent table
childTable.ChildDesc -- Getting child text
FROM parentTable
LEFT OUTER JOIN childTable ON childTable.ChildID = parentTable.ChildID
JS
$("#id").kendoComboBox({
dataTextField: "Description",
dataValueField: "ID",
filter: "contains",
minLength: 1,
filtering: onFilterCostCentre,
value: item.ChildID,
text: item.ChildDesc
})