Dojo select下拉菜单上的展开更改默认值

Dojo select下拉菜单上的展开更改默认值,dojo,dropdownbox,Dojo,Dropdownbox,Im设置Dojo select下拉列表的默认值,即json对象的id=-999。 这可以正常工作,但在展开时单击selectbox,默认值将更改为第二个位置,id=29设置为默认值(第一个位置)。 这个问题主要发生在Chrome浏览器中。 附件是json对象和ui行为的图像 提前谢谢。 在设置存储时,您需要添加labelatr,例如: new Select({ store: new MemoryStore({ data: g_data(), getLabel: function(o)

Im设置Dojo select下拉列表的默认值,即json对象的id=-999。 这可以正常工作,但在展开时单击selectbox,默认值将更改为第二个位置,id=29设置为默认值(第一个位置)。 这个问题主要发生在Chrome浏览器中。 附件是json对象和ui行为的图像

提前谢谢。


在设置
存储时,您需要添加
labelatr
,例如:

new Select({
    store: new MemoryStore({ data: g_data(), getLabel: function(o) {return o.label;} }),
    labelAttr: "label",
    value: "-999",
    onChange: function(v) { document.getElementById("output").innerHTML = "Selected " + v; }
}).placeAt("container").startup();
请看这里:

如果不希望对标签进行排序,请添加
sortByLabel:false
。这也将解决这个问题

new Select({
    store: new MemoryStore({ data: g_data(), getLabel: function(o) {return o.label;} }),
    sortByLabel: false,
    value: "-999",
    onChange: function(v) { document.getElementById("output").innerHTML = "Selected " + v; }
}).placeAt("container").startup();
请看这里:

此问题的原因是dijit.form.\u FormSelectWidget
的问题。如果未提供
labelatr
,并且默认值
sortByLabel
设置为
true
,则存储区中的项目将使用错误的条件进行存储,从而给出错误的顺序

var labelAttr = this.labelAttr;
items.sort(function(a, b){
    return a[labelAttr] > b[labelAttr] ? 1 : b[labelAttr] > a[labelAttr] ? -1 : 0;
});
dijit.form.\u FormSelectWidget
doc,它还显示:

如果设置了
store
,则也必须设置labelatr,除非store是旧样式 数据存储,而不是新的dojo/store


我认为您必须共享一些代码才能获得更多帮助。你在这个例子中看到了相同的行为吗?谢谢你的回答,实际上labelatr:“label”,value:“-999”,sortByLabel:false,这三行代码修复了我的问题。