1

以下のように定義されたデータセットがあります。

<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 秒かかり、その後コンボボックスを再作成すると、はるかに速くなります。

ここで何が起こっているのですか?データセット値はどのように再入力されますか? より速くするための変更を提案してください。

4

0 に答える 0