VF:是否可以只显示数据表中的特定行?
VF: Is it possible to show only specific rows in datatable?
我有一个基于 OpportunityLineItems 对象的数据表,它显示了机会记录中的每个产品。
现在我只想显示由复选框选中的产品。
是否有可能在纯 Visualforce 中仅呈现特定行?类似于 <apex:DataTable renderrow="{!Oli.Checkbox == True}
?
我只有 Professional 许可证,所以 Apex 代码不可用。
是否有可能只在客户端的 VF 中执行此操作?也许 JavaScript 也可以..
这是我的代码:
<apex:variable var="index" value="{!1}"/>
<apex:dataTable width="100%" value=" !Opportunity.OpportunityLineItems}" var="oli"
<apex:column width="10%" headerClass="tableheaderleft" styleClass="tablebodycenter">
<apex:outputLabel value="{!index}."/>
<apex:variable var="index" value="{!index+1}"/>
<apex:facet name="header"></apex:facet>
</apex:column>
<apex:column width="40%" headerClass="tableheaderleft" styleClass="tablebodyleft">
<apex:facet name="header">Bezeichnung</apex:facet>
<apex:OutputField value="{!oli.Name}"/> <br/>
<table border="0" width="100%" style="border-collapse: collapse; margin-bottom:10px">
<tr><td width="30%" style="padding: 0px;line-height: 100%;"><strong>Leistungszeitraum:</strong> <br></br><apex:outputText value="{0, date, dd.MM.yyyy}">
<apex:param value="{!oli.ServiceDate}" /> </apex:outputText> - <apex:outputText value="{0, date, dd.MM.yyyy}">
<apex:param value="{!oli.Licensing_Period_Calculated__c}" /> </apex:outputText></td></tr>
</table>
</apex:column>
<apex:column width="10%" headerClass="tableheadercenter" footerClass="tablefootercenter" styleClass="tablebodycenter">
<apex:facet name="header">Anzahl</apex:facet>
<apex:OutputField value="{!oli.Quantity}"/>
<apex:facet name="footer"></apex:facet>
</apex:column>
<apex:column width="20%" headerClass="tableheadercenter" styleClass="tablebodycenter">
<apex:facet name="header">Einzelbetrag</apex:facet>
<apex:OutputField value="{!oli.UnitPrice}"/>
<apex:facet name="footer"></apex:facet>
</apex:column>
<apex:column rendered="{!Opportunity.TotalDiscount__c != 0}" headerClass="tableheadercenter" footerClass="tablefootercenter" styleClass="tablebodycenter">
<apex:facet name="header">Rabatt</apex:facet>
<apex:OutputField value="{!oli.Discount}"/>
<apex:facet name="footer"></apex:facet>
</apex:column>
<apex:column width="20%" headerClass="tableheaderright" styleClass="tablebodyright">
<apex:facet name="header">Gesamtbetrag</apex:facet>
<apex:OutputField value="{!oli.TotalPrice}"/>
<apex:facet name="footer"></apex:facet>
</apex:column>
</apex:dataTable>
尽可能简洁:我不想隐藏整个列。如果我有来自同一列的元素列表:
Element 1 (with checkbox checked)
Element 2 (with checkbox not checked)
Element 3 (with checkbox checked)
然后我希望数据表只输出 2 行,一行用于元素 1,一行用于元素 3。因此不应呈现元素 2 的行。
不是“apex:datatable”,那个非常all-or-nothing,你可以有条件地渲染列而不是行。
尝试使用“apex:repeat”hand-craft table,在循环中输出 <tr>, <td>
etc raw html。
您可以将单行的 html 包装在 apex:output 面板中 rendered=... 或者 apex:variable 具有相同的条件
(我在移动设备上,很抱歉格式化。如果您仍然卡住,稍后再戳我)
我有一个基于 OpportunityLineItems 对象的数据表,它显示了机会记录中的每个产品。
现在我只想显示由复选框选中的产品。
是否有可能在纯 Visualforce 中仅呈现特定行?类似于 <apex:DataTable renderrow="{!Oli.Checkbox == True}
?
我只有 Professional 许可证,所以 Apex 代码不可用。 是否有可能只在客户端的 VF 中执行此操作?也许 JavaScript 也可以..
这是我的代码:
<apex:variable var="index" value="{!1}"/>
<apex:dataTable width="100%" value=" !Opportunity.OpportunityLineItems}" var="oli"
<apex:column width="10%" headerClass="tableheaderleft" styleClass="tablebodycenter">
<apex:outputLabel value="{!index}."/>
<apex:variable var="index" value="{!index+1}"/>
<apex:facet name="header"></apex:facet>
</apex:column>
<apex:column width="40%" headerClass="tableheaderleft" styleClass="tablebodyleft">
<apex:facet name="header">Bezeichnung</apex:facet>
<apex:OutputField value="{!oli.Name}"/> <br/>
<table border="0" width="100%" style="border-collapse: collapse; margin-bottom:10px">
<tr><td width="30%" style="padding: 0px;line-height: 100%;"><strong>Leistungszeitraum:</strong> <br></br><apex:outputText value="{0, date, dd.MM.yyyy}">
<apex:param value="{!oli.ServiceDate}" /> </apex:outputText> - <apex:outputText value="{0, date, dd.MM.yyyy}">
<apex:param value="{!oli.Licensing_Period_Calculated__c}" /> </apex:outputText></td></tr>
</table>
</apex:column>
<apex:column width="10%" headerClass="tableheadercenter" footerClass="tablefootercenter" styleClass="tablebodycenter">
<apex:facet name="header">Anzahl</apex:facet>
<apex:OutputField value="{!oli.Quantity}"/>
<apex:facet name="footer"></apex:facet>
</apex:column>
<apex:column width="20%" headerClass="tableheadercenter" styleClass="tablebodycenter">
<apex:facet name="header">Einzelbetrag</apex:facet>
<apex:OutputField value="{!oli.UnitPrice}"/>
<apex:facet name="footer"></apex:facet>
</apex:column>
<apex:column rendered="{!Opportunity.TotalDiscount__c != 0}" headerClass="tableheadercenter" footerClass="tablefootercenter" styleClass="tablebodycenter">
<apex:facet name="header">Rabatt</apex:facet>
<apex:OutputField value="{!oli.Discount}"/>
<apex:facet name="footer"></apex:facet>
</apex:column>
<apex:column width="20%" headerClass="tableheaderright" styleClass="tablebodyright">
<apex:facet name="header">Gesamtbetrag</apex:facet>
<apex:OutputField value="{!oli.TotalPrice}"/>
<apex:facet name="footer"></apex:facet>
</apex:column>
</apex:dataTable>
尽可能简洁:我不想隐藏整个列。如果我有来自同一列的元素列表:
Element 1 (with checkbox checked)
Element 2 (with checkbox not checked)
Element 3 (with checkbox checked)
然后我希望数据表只输出 2 行,一行用于元素 1,一行用于元素 3。因此不应呈现元素 2 的行。
不是“apex:datatable”,那个非常all-or-nothing,你可以有条件地渲染列而不是行。
尝试使用“apex:repeat”hand-craft table,在循环中输出 <tr>, <td>
etc raw html。
您可以将单行的 html 包装在 apex:output 面板中 rendered=... 或者 apex:variable 具有相同的条件
(我在移动设备上,很抱歉格式化。如果您仍然卡住,稍后再戳我)