0

コードがであるダミーのvisualforceページを作成しています

<apex:page controller="sampleCon">
    <apex:form>
    <apex:pageMessages id="message" />
    <apex:pageBlock>
    <apex:pageBlockTable value="{!wrap1}" var="item" id="hello">
    <apex:column headerValue="String" value="{! item.x}"></apex:column>
    <apex:column headerValue="Action"><apex:commandButton value="{!if(item.i == size-1,'Add','Delete')}" onclick="AddOrDelete({! item.i});" rerender="message"></apex:commandButton></apex:column>
    </apex:pageBlockTable>
    </apex:pageBlock>
    <apex:actionRegion >
     <apex:actionFunction name="AddOrDelete" action="{!addElement}" reRender="message,hello">
     <apex:param value="" name="fieldName" />
  </apex:actionFunction>
     </apex:actionRegion>
    </apex:form>
</apex:page>

コントローラーコードは

public class sampleCon {
public List<Wrapper> wrap1{get;set;}
public Integer size{get;set;}

public sampleCon(){
wrap1=new List<Wrapper>();
wrap1.add(new wrapper(0));
 size=wrap1.size();

}

public PageReference addElement(){
size=wrap1.size();


System.debug('Hello ji'+Apexpages.currentPage().getParameters().get('fieldName')+'size is'+size);
Integer i=Integer.valueOf(ApexPages.currentPage().getParameters().get('fieldName'));

if(i == size-1)
{
wrap1.add(new wrapper(size));

size++;
}

return null;

}


    public class wrapper{
    public integer i{get;set;}
    public String x{get;set;}
    public wrapper(Integer p){
i=p;
    }}
    }

私が試しているのは、最後の行のボタンラベルを追加し、他のボタンラベルを削除する必要があります。追加ボタンを押すと、新しい行が追加され、それに応じてラベルが変更されます。行を追加していますが、期待どおりに機能していません。

最初のページのスクリーンショットは ここに画像の説明を入力してください 、追加ボタンを押すと次のようになります。 ここに画像の説明を入力してください もう一度[追加]ボタンを押すと、最初のスクリーンショットのようになります。上のスクリーンショットの[追加]ボタンをクリックすると、もう1行追加されると思っていました。[追加]ボタンをクリックしたときに1行しか表示されない理由を教えてください。 2番目のスクリーンショットとそれを修正する方法。上の画面の[追加]ボタンをもう一度クリックすると、最初の画面が表示される代わりに、もう1行追加されます。

4

1 に答える 1

1

以下の投稿でリストを取得することをお勧めします。

http://boards.developerforce.com/t5/Visualforce-Development/Add-Row-functionality-in-VisualForce/mp/358921

お役に立てれば。

于 2013-03-10T07:26:43.147 に答える