我有一个定义如下的数据集:
<dataset name="MyComboDset" request="false" src="http:servlet/myTestServlet"
type="http" ondata="Debug.write('reloaded data for combo');" />
我用它来填充自定义组合框:
<class name="mycombo" extends="combobox" editable="false"
width="130" autoscrollbar="true" shownitems="20" >
<attribute name="where" type="string" value="true" />
<textlistitem
datapath="MyComboDset:/mynode1/mynode2/mynode3/"
text="$path{'@name'}" value="$path{'@type'}" name="andytxtlstitem" >
<method event="ondata">
<![CDATA[
var txt = this.datapath.xpathQuery("@name");
if(txt=="Dummy")
{
parent.removeItem(txt);
}
parent.selectItemAt(0);
]]>
</method>
</textlistitem>
</class>
我正在手动提交表单。
现在,当我有相同的代码单独运行时,重新填充所需的时间要少得多,几乎是瞬间的。
但是,当我在我们的应用程序中运行代码时,如果列表中的项目数为 25,则重新填充需要 12 秒。
我尝试用 datacombobox 替换我的自定义组合框,它似乎会立即重新填充。
经过各种检查发现清除数据集中的数据需要时间。如果我在 Evaluator 中执行以下代码:
Debug.write("start :"+(new Date()).getTime());canvas.uiattrrules.setData([]);Debug.write("end :"+(new Date()).getTime());
相同的 12 秒后,如果我重新填充组合框,它会发生得更快。
这里发生了什么?如何重新填充数据集值?建议任何更改以使其更快。