1

私の XPages の 1 つで、ラジオ ボタンを取得しました。ラジオ ボタンの値を選択すると、部分的な更新が呼び出されます。

  • ラジオボタンの値1は、同じ行に新しいボタンのみを表示します
  • 値 2 は、ラジオ ボタン グループの下にいくつかのフィールドを追加します。

この新しいフィールドの下には、従業員のリストから選択するための Dojo フィルター選択フィールドがあります。

値 1 を選択すると、フィルタリングの選択は正常に機能します。値 2 を選択すると、フィルタリングの選択は「古い」位置から開始され、スペースを認識せずに新しいフィールドが必要になります

ここに画像の説明を入力

フィルタリング選択リストの位置を更新するにはどうすればよいですか? 部分的な更新はページのコンテンツ全体を対象としていますが、ここでは機能していないようです。

変更時に部分的な更新を行うラジオ グループのコードを次に示します。

            <xp:radioGroup id="rbgSelectEducationType" layout="pageDirection" 
        value="#{docApplication.EducationType}">
            <xp:this.readonly>
    <![CDATA[#{javascript:docApplication.getItemValueString("ZwfStepName") != "Start"}]]></xp:this.readonly>
            <xp:selectItem itemLabel="ESG Veranstaltung aus dem Katalog" 
        itemValue="ESG-Veranstaltung">
            </xp:selectItem>
            <xp:selectItem itemLabel="Externe Veranstaltung" 
        itemValue="Externe-Veranstaltung">
            </xp:selectItem>
            <xp:eventHandler event="onclick" submit="true" 
        refreshMode="partial" refreshId="wcEventDetails">
</xp:eventHandler>
            </xp:radioGroup>

フィルタリング選択ドロップダウンのコードは次のとおりです。

<xe:djFilteringSelect id="Approver" value="#{docApplication.Approver}" ignoreCase="true">
<xe:this.rendered><![CDATA[#javascript:docApplication.getItemValueString("ZwfStepName")=="Start"}]]></xe:this.rendered>
<xp:selectItems id="selectItems2">

<xp:this.value><![CDATA[#{javascript:if(docApplication.isEditable()){
        getComponent("AllUsersLastFirst").getValue().split("#");
    }}]]></xp:this.value>
</xp:selectItems>
<xp:eventHandler event="onChange" submit="true" refreshMode="partial" refreshId="panelBody" id="eventHandler2">
<xp:this.action><![CDATA[#{javascript:var dbPR = new Array(applicationScope.srv, applicationScope.pathPR);
    var Approver:com.ibm.xsp.extlib.component.dojo.form.UIDojoFilteringSelect = getComponent("Approver");
    var lookup=@DbLookup(dbPR,applicationScope.xpPersonByLastNameFirstName,Approver.getValue(),2);
    lookup=@If(@IsError(lookup),"error",lookup);
    if (lookup=="error") {
        errormsg = valstrings.getString("ccEsgDocWflContentApprover.lookup1");
        globalScriptErrors.add(errormsg);
        requestScope.put("scriptErrors", globalScriptErrors);
    }   
        @SetField("NotesNameApprover", lookup);}]]></xp:this.action>
</xp:eventHandler>
</xe:djFilteringSelect>
4

1 に答える 1

1

フィルタリング選択は、多数の HTML 要素で構成されています (ここでは、Firebug が友達です)。選択自体を含まない部分的な更新を行うと、再度描画されないため、ドロップダウンは同じ位置に留まります。簡単な答え: 部分的な更新にドロップダウンを含めます。

于 2013-04-22T23:19:59.420 に答える