2012-08-13 62 views
2

我想创建一个数据表,其中每个单元格都是可点击的。我假设我可以用apex:outputlink填充每个单元格,并且负责可点击的部分以及每次点击时调用我的控制器。我需要回答的一个大问题是,如何将信息传递给我的顶点控制器,以确定哪个单元格(即:哪一行和哪一列)实际被点击。Visualforce - 可点击的数据表单元格 - 如何获取列和行信息

任何帮助,这是高度赞赏。

回答

2

它很容易。刚刚定义操作函数来从数据表赶上值:

1)首先定义三个瓦尔THT我们将传递给控制器​​:原始ID,小区值,细胞类型

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: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);第三,我们创造我们的dataTable,其中每个单元具有的onClick监听器:

<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。如果用户点击单元格 - 三个变量将被发送到actionFunction,然后发送到控制器。

相关问题