私はリスト内のラッパークラスのオブジェクトを持っています。私のVfページでは、ラッパーのオブジェクトにnullが含まれているかどうかをチェックしています。それ以外は予定の詳細を表示します。出力テキストの一部としてコマンドボタンを持っています
「フリー」ではなく「アポイントメント」ボタンを作成したいと思います。
ボタンコードを挿入する正しい方法は何でしょうか?
<apex:repeat var="slot" value="{!liTimeSlots}">
<tr class="{!IF(ISNULL(slot.sAppointment), 'Free', 'Fill')}">
<td ><apex:outputText value="{!slot.tstart1}"/></td>
<td><apex:outputText value="{!IF(ISNULL(slot.sAppointment), 'Free', slot.sAppointment.name)}"/></td>
<td><apex:outputText value="{!IF(ISNULL(slot.sAppointment), '', slot.sAppointment.Appointment_Type__c)}"/></td>
<td><apex:outputText value="{!IF(ISNULL(slot.sAppointment), '', slot.sAppointment.Patient__c)}"/></td>
</tr>
<tr>
<td></td>
<td><apex:outputText value="{!IF(ISNULL(slot.sAppointmentOverlap), ' ', slot.sAppointmentOverlap.name)}"/></td>
<td><apex:outputText value="{!IF(ISNULL(slot.sAppointmentOverlap), '', slot.sAppointmentOverlap.Appointment_Type__c)}"/></td>
<td><apex:outputText value="{!IF(ISNULL(slot.sAppointmentOverlap), '', slot.sAppointmentOverlap.Patient__c)}"/></td>
</tr>
EDIT: 私はCSSクラスを使用して実装さmmmixとLaceySnrから回答を読む前に。これが最善の方法であるかどうかはわかりません。しかし今、問題はパラメータ値がコントローラーメソッドに現れないことです。
<apex:repeat var="slot" value="{!liTimeSlots}">
<tr class="{!IF(ISNULL(slot.sAppointment), 'Free', 'Fill')}">
<td ><apex:outputText value="{!slot.tstart1}"/></td>
<td><apex:outputText value="{!IF(ISNULL(slot.sAppointment), 'Free', slot.sAppointment.name)}"/></td>
<td><apex:outputText value="{!IF(ISNULL(slot.sAppointment), '', slot.sAppointment.Appointment_Type__c)}"/></td>
<td><apex:outputText value="{!IF(ISNULL(slot.sAppointment), '', slot.sAppointment.Patient__c)}"/></td>
<td><div Class="{!IF(ISNULL(slot.sAppointment), 'ShowButton', 'HideButton')}">
<apex:commandButton action="{!Book}" Value="Book">
<apex:param name="Timev" value="{!slot.tstart1}"/></apex:commandButton></div></td>
</tr>
<tr>
<td></td>
<td><apex:outputText value="{!IF(ISNULL(slot.sAppointmentOverlap), ' ', slot.sAppointmentOverlap.name)}"/></td>
<td><apex:outputText value="{!IF(ISNULL(slot.sAppointmentOverlap), '', slot.sAppointmentOverlap.Appointment_Type__c)}"/></td>
<td><apex:outputText value="{!IF(ISNULL(slot.sAppointmentOverlap), '', slot.sAppointmentOverlap.Patient__c)}"/></td>
</tr>
public PageReference Book()
{
String Timeval=ApexPages.CurrentPage().getParameters().get('Timev');
system.debug('timeval +++++++++++++++'+Timeval) ;// This is returning null
pr=Page.Appointment;
pr.setRedirect(true);
pr.getParameters().put('App_start',Timeval);
pr.getParameters().put('App_start_Date',string.valueof(Appointment.Start_Date__c));
return pr;
}
thanks mmix ..しかし、このソリューションはすべての行をコマンドリンクにします。 slot.sAppointmentがnullの場合にのみ表示する場合。私もコマンドボタンにparamを追加しようとしました。しかし、私はコントローラのparam値を取得することができません..そのnullを返します。質問が更新されました。 – Prady
申し訳ありません。私はあなたが条件付き表示を得るためにレンダリングを使用することの意味を理解していました。先端のおかげで – Prady
あなたはcommandButtonに 'rendered'属性も持っていますので、ボタンを隠すためにスタイルを使う必要はありません。 – mmix