コードがであるダミーの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行追加されます。