2015-10-16 49 views
1

在我们的Asp.net MVC应用程序中,我们希望放入一个组合框,提供用户以前输入的几个位置,但也允许他们键入一个新的位置名称。当用户输入新的位置名称时,我们需要将它们带到另一个表单,以便我们可以将该位置添加到数据库,如果他们选择了预先存在的位置,那么我们需要获取该位置的ID并将其绑定到核心域实体他们正在编辑。是否有可能知道Telerik MVC Combobox值是新值还是现值?

这个问题是在玩了http://demos.telerik.com/aspnet-mvc/combobox/api的演示之后,似乎没有办法知道记录是新的还是现有的。

例如,在该链接中,如果您从下拉列表中选择“The Dark Knight”,然后单击get value按钮,您将得到“7”。但是,如果您还在下拉框中键入“7”,您也会得到“7”的值。

有没有什么办法知道我在盒子里输入了7号数字(而且这是一个新条目),而不是用户实际选择值为7的选项?

我能想到的唯一方法是检查值是否等于文本,如果是这样认为它是一个新的选项,但这似乎很脆弱,我有一种感觉,只有价值会被贴回来在表格提交。

回答

2

,以确定是否在组合框中选择的值是原始数据绑定项目的一部分,最快,最简单的方法是:

$('#movies').getKendoComboBox().dataItem() 

如果不返回DataItem的(即它是undefined),那么值不存在于dataSource中。

您还可以使用:

$('#movies').getKendoComboBox().select() 

它返回-1

还值得注意的是,您实际上并未在此处向DataSource添加新项目。

如果是的话,您可以在模型中返回正确的ComboBox dataItem并使用方法isNew

我建议你读了Kendo DataSourceModel的文档(特别是isNew method

相关问题