dojo Filtering从URL默认值中选择

时间:2014-11-26 10:20:00

标签: url dojo default-value

您好我有一个可以从URL中读取的FilteringSelect。输入名称将查询数据库并返回相应的JSON以填充过滤选择,我可以选择一个值并存储该ID。

<div data-dojo-type="ComboBoxReadStore" data-dojo-id="assignedUserIdstore"
data-dojo-props="url:'Welcome.do?call=JS&actionRefId=142',
requestMethod:'get'"></div>

<input id='assignedUserId' name='value(assignedUserId)'
data-dojo-type='dijit.form.FilteringSelect'
data-dojo-props="store:assignedUserIdstore, pageSize:5,  labelAttr:
'label',queryExpr: '*${0}*', autoComplete: false" />

问题在于设置默认值。我有这个

<script type='text/javascript'>dojo.ready(function(  
  {dijit.byId('assignedUserId').setValue('25');});
</script>

这似乎在一种方式之后起作用 - 它确实调用服务器并且服务器返回此

{“id”:“25”,“name”:“John Smith”“label”:“John Smith”}

然而,实际上没有显示输入的实际值也没有实际填充过滤选择。我试图将值设置为名称,但也没有效果。让它返回集合而不是单个项目也无济于事。

comboreadstore定义为

  <script type="text/javascript">

          require([
                  "dojo/_base/declare",
                  "dojox/data/QueryReadStore",
                  "dojo/parser",
                  "dijit/form/FilteringSelect"],

                  function(declare, QueryReadStore){

                          declare("ComboBoxReadStore", QueryReadStore, {
                                  fetch:function(request) {
                                          // This results in a xhr request to the following URL (in case of GET):
                                          //      /url.php?q=<searchString> 
                                          request.serverQuery = {q:request.query.name};
                                           return this.inherited("fetch", arguments);
                                  }
                          });

                  }
          );
  </script>

1 个答案:

答案 0 :(得分:0)

使用dojo.ready并不能保证您提取的数据已准备好/已加载。当dojo准备好并且已加载所有必需的资产时,它会触发。所以我认为您正在尝试将FilteringSelect设置为商店中尚不存在的值。你可以通过等待设置值来解决这个问题,直到商店准备就绪。如何做到这一点取决于你正在使用的商店,我无法真正弥补你的代码。我不熟悉ComboBoxReadStore。经过一些谷歌搜索后我发现它可能是dojox.data.QueryReadStore的扩展,它已经过时且未完成。如果是这样,我建议您尽可能使用dojo.store

此外:不推荐使用dijits上的setValue方法,您应该使用set('key',val)。