2013-03-10 82 views
0

我創造它的代碼是在PageBlocktable 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; 
    }} 
    } 

我想做的最後一排按鈕標籤虛擬visualforce頁應該是添加和其他按鈕標籤應刪除當我按下添加按鈕添加一個新行和標籤應該改變相應爲此我我正在添加行,但它不工作如期

初始頁面截圖是 enter image description here 當我按下添加按鈕屏幕看起來像這樣。 enter image description here 當我再次按下添加按鈕屏幕看起來像第一個截圖。當我點擊添加按鈕在上面screenshot.c任何一個請告訴爲什麼只有一行顯示當我點擊在第二個屏幕截圖中添加按鈕,以及如何糾正它,當我再次點擊屏幕上方的添加按鈕時,將添加一行而不是顯示初始屏幕。

回答

1
+0

ya我想我也是這樣做,你可以看到點擊添加我添加一個元素列表和增加與一個大小但爲什麼而不是增加它它再次設置大小爲1請幫助我這個問題非常嚴重,請please help.please看到的代碼,並給予更正 – 2013-03-10 07:32:37

+0

真誠的幫助將非常可觀 – 2013-03-10 07:32:54

+1

我認爲這是你的方法應該如何。您需要將{!item.i}作爲參數傳遞給控制器​​中的addElement,而您並未這​​樣做。一旦你傳遞參數,你應該增加它並使用參數而不是大小創建列表。即Wrap1.add(new wrapper(i)),然後最後設置size = wrap1.size()。 – 2013-03-10 08:40:51