【问题标题】:How to control Dojo FilteringSelect default rendering?如何控制 Dojo FilteringSelect 默认渲染?
【发布时间】:2010-03-22 00:34:48
【问题描述】:

我有一个 dojo dijit.filering.select,它填充了来自 dojo.data.ItemFileReadStore 的值。 一切正常,除了我希望过滤选择自动填充 itemFileReadStore 中的第一个值。目前,它正在将它们作为一个选项列表加载,当您按照规范单击向下箭头时会显示这些选项。相反,我希望 filterSelect 加载第一个值。我该怎么做呢?由于某种原因,我无法弄清楚。任何帮助将不胜感激!

亲切的问候 尼克·弗兰森

<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>

【问题讨论】:

  • 我是否理解正确:您希望在获得完整数据存储之前拥有第一个选项?
  • 不抱歉,我希望数据存储中的第一个值成为过滤选择框的值。目前它正在正确读取服务器的值并使用它们正确填充过滤选择。但是,在您单击过滤选择上的小向下箭头之前,选项列表不会出现。如何使过滤选择自动填充数据存储区中的第一个值?

标签: javascript ajax dojo


【解决方案1】:

这对我来说是一种黑客攻击的感觉(更不用说对你来说有点晚了),但我这样做是为了达到同样的目的:

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

【讨论】:

    【解决方案2】:

    这可能有效:

    optionSelect.attr('displayedValue', itemLabel);

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-12-29
      • 1970-01-01
      • 2011-10-10
      • 1970-01-01
      • 2014-11-26
      • 1970-01-01
      • 2014-01-24
      • 1970-01-01
      相关资源
      最近更新 更多