当前位置: 首页 > 知识库问答 >
问题:

剑道MVVM下拉列表-如何基于其他数据设置初始值?

穆俊名
2023-03-14

对于剑道MVVM下拉列表,我有以下html:

                <select id="responseTypeDDL"
                    data-role="dropdownlist"
                    data-text-field="SystemResponseTypeCode"
                    data-value-field="SystemResponseTypeId"
                    data-bind="value: selectedSystemResponseTypeCode, source: responseTypes">
                </select>

这是我的视图模型:

        SC.ViewModels.Reference.ResponseTypeDataSource.read();

        var responseTypeDDL = kendo.observable({
            responseTypes: SC.ViewModels.Reference.ResponseTypeDataSource,
            selectedSystemResponseTypeCode: null,
            setSelectedSystemResponseTypeCode: function (code) {
                this.selectedSystemResponseTypeCode = code;
            },
        });

        kendo.bind($("#responseTypeDDL"), responseTypeDDL);

        // after reading data, I call the method to set the selected value like this:
        self.ResponseTypeDDL.setSelectedSystemResponseTypeCode(results.code);

ource.read()方法返回XML、JSON的列表。这是SystemResseTypeCode字段。我还从数据库中读取另一个数据项,并检查其响应类型。假设它是“JSON”。如何设置下拉列表以选择"JSON"?

共有2个答案

唐渊
2023-03-14

我已成功地在dropdownlist中手动设置值,而无需求助于data value primitive=“true”,因为我需要访问选定的值并显示其他字段。

以下是解决方案:

var id = 1004;
var dataItem = responseTypeDDL.responseTypes.get(id); //get the id in your datasource
responseTypeDDL.set("selectedsystemResponse", dataItem);
云洋
2023-03-14

首先,这一部分似乎是错误的

setSelectedSystemResponseTypeCode: function (code) {
    this.selectedSystemResponseTypeCode = code;
},

您应该确保在修改观察到的变量时调用set()方法,否则它可能不会更新绑定:

this.set("selectedSystemResponseTypeCode", code);

至于你的实际问题呢

您需要设置data-value-基元="true",以便仅使用id(Kendo Docs)(请注意下面的更改,value: selectedSystemResseTypeId

<select id="responseTypeDDL"
    data-role="dropdownlist"
    data-text-field="SystemResponseTypeCode"
    data-value-field="SystemResponseTypeId"
    data-value-primitive="true"
    data-bind="value: selectedSystemResponseTypeId, source: responseTypes">
</select>
SC.ViewModels.Reference.ResponseTypeDataSource.read();

var responseTypeDDL = kendo.observable({
    responseTypes: SC.ViewModels.Reference.ResponseTypeDataSource,
    selectedSystemResponseTypeCode: null,
    selectedSystemResponseTypeId: null,
    setSelectedSystemResponseTypeId: function (id) {
        this.set("selectedSystemResponseTypeId", id);
    },
});

kendo.bind($("#responseTypeDDL"), responseTypeDDL);

// Get your id
var id = ...    
responseTypeDDL.setSelectedSystemResponseTypeId(id);

工作示例:http://dojo.telerik.com/AbIm/8

 类似资料:
  • 如何将本地数组绑定到剑道的MVVM dropdown列表。 我有一个这样的阵列 我想把它绑定到我的输入控件 它不工作。有什么想法我可以实现这一点吗? 谢谢

  • 您好,我正在使用kendo ui mvvm,我正在尝试使用远程数据源绑定填充下拉列表,我可以将数据字段绑定到下拉列表,但我的下拉列表有空值,我尝试的是不在下拉列表中显示这些空值。问题是: 这是我的密码: 正如你所看到的,我已经尝试了data-tuumal-value="true",但是它不起作用,我是新的剑道mvvm,任何帮助都将不胜感激,谢谢。

  • 我有以下剑道下拉列表: 然后,我的javascript可观察绑定: 当试图添加事件:{Change: eventLabelChange}到我的html dropDownlist元素中的数据绑定时,我得到处理程序没有定义错误,当它显然是(有趣的是,我有另一个dropDownlist与此页面上的相同类型的绑定完美地工作与变化事件罚款...)。 而且我无法获得默认值。我曾尝试在绑定后直接将dropdow

  • 如何在更改函数上选择剑道下拉列表值。剑道下拉列表在网格中。在更改函数中,我想选择列表中的第一项。 我已经编写了代码: 但是下拉列表没有选择更改功能。我该怎么做请帮帮我。

  • 问题内容: 我正在将Kendo下拉列表从现有代码转换为Kendo multiselect。 角色代码:当前为Dropdownlist(转换为Kendo multiselect)。 我没有得到正确的输出。 我有以下代码: 下面是获取角色代码的控制器代码: 如您所见,我尝试在上面的代码中使用多选功能。但这没有用。 问题答案: 下面的代码为我工作:

  • 我正在使用剑道下拉列表,我需要一个占位符的下拉列表,当我选择下拉列表时,它不应该出现在列表中。我尝试使用optionLabel,但此值显示在列表中。 我需要一个解决方案,我可以添加一个占位符,该值不应显示为下拉列表中的选项。