各セルがクリック可能なデータテーブルを作成したいと思います。おそらく各セルを埋めることができapex:outputlink
、クリック可能な部分を処理し、クリックごとにコントローラーを呼び出すことができると想定しています。答えが必要な大きな問題は、実際にクリックされたセル (つまり、どの行とどの列) に関する情報をどのように頂点コントローラーに渡すかということです。
これについての助けは大歓迎です。
各セルがクリック可能なデータテーブルを作成したいと思います。おそらく各セルを埋めることができapex:outputlink
、クリック可能な部分を処理し、クリックごとにコントローラーを呼び出すことができると想定しています。答えが必要な大きな問題は、実際にクリックされたセル (つまり、どの行とどの列) に関する情報をどのように頂点コントローラーに渡すかということです。
これについての助けは大歓迎です。
それは簡単です。dataTableから値を取得するアクション関数を定義するだけです。
1)最初にコントローラーに渡す3つの変数を定義します:raw-id、cell-value、cell-type
public String clickedRowId { get; set; }
public String clickedCellValue { get; set; }
public String clickedCellType { get; set; }
public PageReference readCellMethod(){
System.debug('#### clickedRowId: ' + clickedRowId);
System.debug('#### clickedCellValue: ' + clickedCellValue);
System.debug('#### clickedCellType: ' + clickedCellType);
return null;
}
2)次に、apexメソッドを呼び出して3つの変数を渡すアクション関数を作成します。
<apex:actionFunction name="readCell" action="{!readCellMethod}">
<apex:param name="P1" value="" assignTo="{!clickedRowId}"/>
<apex:param name="P2" value="" assignTo="{!clickedCellValue}"/>
<apex:param name="P3" value="" assignTo="{!clickedCellType}"/>
</apex:actionFunction>
3)3番目に、各セルにonClickリスナーがあるdataTableを作成します。
<apex:pageBlockTable value="{!someArray}" var="item">
<apex:column value="{!item.name}" onclick="readCell('{!item.id}','{!item.name}','name')" />
<apex:column value="{!item.CustomField1__c}" onclick="readCell('{!item.id}','{!item.CustomField1__c}','custom1')" />
<apex:column value="{!item.CustomField2__c}" onclick="readCell('{!item.id}','{!item.CustomField2__c}','custom2')" />
</apex:pageBlockTable>
他のJavaScript関数と同じようにactionFunctionにアクセスできます。ユーザーがセルをクリックすると、3つの変数がactionFunctionに送信され、次にコントローラーに送信されます。