2010-03-22 55 views
1

我有一个dojo dijit.filering.select,它使用dojo.data.ItemFileReadStore中的值填充。 一切工作正常,除了我想筛选选择自动填充itemFileReadStore中的第一个值。目前它将它们加载为按照规范单击向下箭头时显示的选项列表。我会反而像filteringSelect加载第一个值。我该怎么做呢?出于某种原因,我无法弄清楚。任何帮助将非常感激!如何控制Dojo FilteringSelect默认渲染?

亲切的问候 尼克弗朗森

<script type="text/javascript"> 
     function updateOptions(){ 
      var itemId = dijit.byId("item_select").attr("value"); 
      var jsonStore = new dojo.data.ItemFileReadStore({ url: "/options/get-options-json/itemId/" + itemId }); 
      optionSelect.attr("store", jsonStore); 
     } 
</script> 
<select dojoType="dijit.form.FilteringSelect" 
     name="option_select" 
     id="option_select" 
     labelAttr="name" 
     required="true" 
     jsId="optionSelect"> 
</select> 
+0

我是否理解正确的话:你想拥有第一获取完整数据存储之前的选项? – Kniganapolke 2010-03-22 09:53:00

+0

没有抱歉,我希望数据存储中的第一个值成为filteringSelect框的值。此刻它正在正确读取服务器的值,并正确填充filteringSelect。但是,直到您单击filteringSelect上的向下箭头,才会显示选项列表。我如何使筛选选择自动填充数据存储中的第一个值? – Nick 2010-03-22 23:35:07

回答

1

它具有一个黑客给我的感觉(更不要说有点晚了你),但我这样做是为了实现同样的事情:

var valueSet = false; 
filteringSelect.store.fetch({ 
    query:{ id:"*" }, 
    onItem : function(item, request) { 
     if (!valueSet) { 
      filteringSelect.setValue(request.store.getValue(item, "id")); 
      valueSet = true; 
     } 
    } 
}); 
0

这可能会实现:

optionSelect.attr('displayedValue', itemLabel);

哪里itemLabel是你希望显示的项目的标签(取决于您的数据存储的样子内部)。这应该设置文本框内容和隐藏字段(与相应的itemValue)。