如何为dijit.form.ComboBox保存Id

时间:2013-09-27 16:30:37

标签: dojo episerver-7

我正在为EPiServer编写我的第一个dijit控件。在我的模板中,我使用的是dijit.form.ComboBox。

我已将事件处理程序附加到“onChange”事件,如下所示:

postCreate: function () {
        // call base implementation
        this.inherited(arguments);

        // Init textarea and bind event
        this.inputWidget.set("intermediateChanges", this.intermediateChanges);

        this.inputWidget.set("store", this.store);
        this.connect(this.inputWidget, "onChange", this._onInputWidgetChanged);
    },

然后在我的事件处理程序中我有:

        _onInputWidgetChanged: function (e) {
        alert(e.id);
        this._updateValue(value);
    },

我的问题是,与典型的下拉列表一样,我想存储Value而不是Text。我的组合框中的选项如下:

价值|文本 1 | “测试” 2 | “另一种测试”

问题是传入_onInputWidgetChanged处理程序的值始终是组合框的文本值,即“测试”或“不同的测试”

如何才能访问Value?正如我所说,这是我第一次与dojo和dijit合作,所以我可能会遗漏一些基本的东西。

提前致谢 人

1 个答案:

答案 0 :(得分:1)

关于ComboBox的问题是它的值不需要是下拉菜单中的条目(因此,也不能保证是一个条目)。可以将其视为具有autosuggest的文本框 - 用户可以使用该菜单加快进程,但文本框的值是自由形式的,并且报告为用户输入的内容。

如果您希望要求用户从菜单中选择一个条目,您应该使用FilteringSelect,而是报告相关商店商品的ID(或关联的option代码#39; s value)作为其价值。与ComboBox的自由格式性质相反,FilteringSelect可以被视为具有提前输入功能的菜单。