首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有相同操作的多个按钮

具有相同操作的多个按钮
EN

Stack Overflow用户
提问于 2020-11-19 19:04:45
回答 1查看 105关注 0票数 0

在我的VF页面中,我有7个部分表示一周中的几天。每个部分都有“添加多个时间表项目”按钮。单击该按钮时,将显示新的行,其中包含要填充的字段(项目、工作小时数..)。因此,我有7个按钮具有相同的操作,当我单击,例如,在第一部分的按钮上,操作在每个部分执行,我不想要这种情况。我只想在点击按钮的部分执行。这是我在VF页面中的代码:

代码语言:javascript
复制
<apex:page Controller="TimesheetController">
<apex:form >
<apex:pageBlock >
    
    <apex:pageBlockSection title="Monday" columns="1">
        <apex:pageBlockSectionItem >
            <apex:pageBlockTable value="{!listItems}" var="sheet_item">
                <apex:column headerValue="Assignment">
                       <apex:inputField value="{!sheet_item.Assignment__c}"/>
                </apex:column>
                <apex:column headerValue="Number of Hours">
                    <apex:inputField value="{!sheet_item.Number_of_Hours__c}"/>
                   </apex:column>
                <apex:column headerValue="Description">
                    <apex:inputTextarea value="{!sheet_item.Description__c}" rows="5" cols="30"/>   
                </apex:column>
            </apex:pageBlockTable>
        </apex:pageBlockSectionItem>
        <apex:outputPanel layout="block" html-align="center">
            <apex:commandButton value="Add Timesheet Item" action="{!addItem}"/>
            
        </apex:outputPanel>
    </apex:pageBlockSection>
        
    <apex:pageBlockSection title="Tuesday" columns="1">
        <apex:pageBlockSectionItem >
            <apex:pageBlockTable value="{!listItems}" var="sheet_item">
                <apex:column headerValue="Assignment">
                    <apex:inputField value="{!sheet_item.Assignment__c}"/>
                </apex:column>
                <apex:column headerValue="Number of Hours">
                    <apex:inputField value="{!sheet_item.Number_of_Hours__c}"/>
                </apex:column>
                <apex:column headerValue="Description">
                    <apex:inputTextarea value="{!sheet_item.Description__c}" rows="5" cols="30"/>   
                </apex:column>
            </apex:pageBlockTable>
        </apex:pageBlockSectionItem>
        <apex:outputPanel layout="block" html-align="center">
            <apex:commandButton value="Add Timesheet Item" action="{!addItem}" />
        </apex:outputPanel>
    </apex:pageBlockSection>
   
    
    <apex:pageBlockSection title="Wednesday" columns="1">
        <apex:pageBlockSectionItem >
            <apex:pageBlockTable value="{!listItems}" var="sheet_item">
                <apex:column headerValue="Assignment">
                    <apex:inputField value="{!sheet_item.Assignment__c}"/>
                </apex:column>
                <apex:column headerValue="Number of Hours">
                    <apex:inputField value="{!sheet_item.Number_of_Hours__c}"/>
                </apex:column>
                <apex:column headerValue="Description">
                    <apex:inputTextarea value="{!sheet_item.Description__c}" rows="5" cols="30"/>   
                </apex:column>
            </apex:pageBlockTable>
        </apex:pageBlockSectionItem>
        <apex:outputPanel layout="block" html-align="center">
            <apex:commandButton value="Add Timesheet Item" action="{!addItem}"/>
        </apex:outputPanel>
    </apex:pageBlockSection>
    
    
    <apex:pageBlockSection title="Thursday" columns="1">
        <apex:pageBlockSectionItem >
            <apex:pageBlockTable value="{!listItems}" var="sheet_item">
                <apex:column headerValue="Assignment">
                    <apex:inputField value="{!sheet_item.Assignment__c}"/>
                </apex:column>
                <apex:column headerValue="Number of Hours">
                    <apex:inputField value="{!sheet_item.Number_of_Hours__c}"/>
                </apex:column>
                <apex:column headerValue="Description">
                    <apex:inputTextarea value="{!sheet_item.Description__c}" rows="5" cols="30"/>   
                </apex:column>
            </apex:pageBlockTable> 
        </apex:pageBlockSectionItem>
        <apex:outputPanel layout="block" html-align="center">
            <apex:commandButton value="Add Timesheet Item" action="{!addItem}" />
        </apex:outputPanel>
    </apex:pageBlockSection>
    
    
    <apex:pageBlockSection title="Friday" columns="1">
        <apex:pageBlockSectionItem >
            <apex:pageBlockTable value="{!listItems}" var="sheet_item">
                <apex:column headerValue="Assignment">
                    <apex:inputField value="{!sheet_item.Assignment__c}"/>
                </apex:column>
                <apex:column headerValue="Number of Hours">
                    <apex:inputField value="{!sheet_item.Number_of_Hours__c}"/>
                </apex:column>
                <apex:column headerValue="Description">
                    <apex:inputTextarea value="{!sheet_item.Description__c}" rows="5" cols="30"/>   
                </apex:column>
            </apex:pageBlockTable>
        </apex:pageBlockSectionItem>
        <apex:outputPanel layout="block" html-align="center">
            <apex:commandButton value="Add Timesheet Item" action="{!addItem}" />
        </apex:outputPanel>
    </apex:pageBlockSection>
    
   
    <apex:pageBlockSection title="Saturday" columns="1" >
        <apex:pageBlockSectionItem >
            <apex:pageBlockTable value="{!listItems}" var="sheet_item">
                <apex:column headerValue="Assignment">
                    <apex:inputField value="{!sheet_item.Assignment__c}"/>
                </apex:column>
                <apex:column headerValue="Number of Hours">
                    <apex:inputField value="{!sheet_item.Number_of_Hours__c}"/>
                </apex:column>
                <apex:column headerValue="Description">
                    <apex:inputTextarea value="{!sheet_item.Description__c}" rows="5" cols="30"/>   
                </apex:column>
            </apex:pageBlockTable>
        </apex:pageBlockSectionItem>
        <apex:outputPanel layout="block" html-align="center">
            <apex:commandButton value="Add Timesheet Item" action="{!addItem}" />
        </apex:outputPanel>
    </apex:pageBlockSection>
   
    <apex:pageBlockSection title="Sunday" columns="1">
        <apex:pageBlockSectionItem >
            <apex:pageBlockTable value="{!listItems}" var="sheet_item">
                <apex:column headerValue="Assignment">
                    <apex:inputField value="{!sheet_item.Assignment__c}"/>
                </apex:column>
                <apex:column headerValue="Number of Hours">
                    <apex:inputField value="{!sheet_item.Number_of_Hours__c}"/>
                </apex:column>
                <apex:column headerValue="Description">
                    <apex:inputTextarea value="{!sheet_item.Description__c}" rows="5" cols="30"/> 
                </apex:column>
            </apex:pageBlockTable>
        </apex:pageBlockSectionItem>
        <apex:outputPanel layout="block" html-align="center">
            <apex:commandButton value="Add Timesheet Item" action="{!addItem}"/>
        </apex:outputPanel>
    </apex:pageBlockSection>

    <apex:pageBlockSection title="Contentment, PTO" columns="1">
        <br/>
        <apex:inputField label="Mood" value="{!timesheet.Mood__c}"/>
        <br/>
        <apex:inputTextarea label="Upcoming PTO" value="{!timesheet.Upcoming_PTO__c}" rows="5" cols="30"/> 
        <br/>
        <apex:inputTextarea label="Comment" value="{!timesheet.Comment__c}" rows="5" cols="30"/>
        <br/>
        <apex:outputPanel layout="block" html-align="center">
            <apex:commandButton value="Submit" action="{!saveDetails}" style="float:centre" />
        </apex:outputPanel>
    </apex:pageBlockSection>

</apex:pageBlock>
</apex:form>
</apex:page>

这是我的控制器:

代码语言:javascript
复制
public class TimesheetController{
    
    Timesheet_Item__c item = new Timesheet_Item__c();
    public list<Timesheet_Item__c> listItems{get; set;}
    public Timesheet__c timesheet{get; set;} 

    public TimesheetController () {
        timesheet = new Timesheet__c();
        listItems = new list<Timesheet_Item__c>();
        listItems.add(item);
    }
 
    public void addItem() {
        Timesheet_Item__c sheet_item = new Timesheet_Item__c();
        listItems.add(sheet_item);
    }

    public PageReference saveDetails() {
        for(Integer i=0; i<listItems.size(); i++) {
            insert listItems;
        }
        insert timesheet;
        return null;
    }
    
}
EN

回答 1

Stack Overflow用户

发布于 2020-11-20 02:02:17

这并不是“每个部分都执行操作”。您呈现相同的变量7次。如果输入小时数为1,2,3,4,5,6,7,我希望它会节省7,因为这是最后一次在表单中提到这一点,这个字段的值将“获胜”。

您需要一个列表列表:

代码语言:javascript
复制
List<List<Timesheet_Item__c>> l = new List<List<Timesheet_Item__c>>{
    new List<Timesheet_Item__c>(),
    new List<Timesheet_Item__c>(),
    new List<Timesheet_Item__c>(),
    new List<Timesheet_Item__c>(),
    new List<Timesheet_Item__c>(),
    new List<Timesheet_Item__c>(),
    new List<Timesheet_Item__c>()
};

然后在按钮操作中,您可以传递额外的<apex:param>,其数字从0到6,表示向哪个添加新项。在传递参数时要当心,<apex:commandButton> is bit stupid

或者可能是Map<String, List<Timesheet_Item__c>> = new Map<String, List<Timesheet_Item__c>>{ 'Monday' => new List<Timesheet_Item__c>(), ...};相同的原理,在按钮中传递map键。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64910388

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档