我想获得,如果可能的话,所选的单元格或列(id)的质面<p:dataTable
my table like:
<p:dataTable id="table" var="list" value="#{bean.list}" rowKey="#{list}" selectionMode="single" >
<p:ajax event="rowSelect" listener="#{bean.onRowSelect}" />
<p:column headerText="Date" >
<h:outputText value="#{list.SDate}" />
</p:column>
<p:column headerText="Name" >
<h:outputText value="#{list.IName}" />
</p:column>
</p:dataTable>
使用此方法,我可以使用<p:ajax event="rowSelect" listener="#{bean.onRowSelect}" />
获得选定的行(行)但是我不能得到选定的列" Date
"或" Name
"
onrowselect方法如下:
public void onRowSelect(SelectEvent event)
myObject obj = (myObject)event.getObject();
//.......
}
,
我想你忘记添加更新在你的ajax事件:
<p:ajax event="rowSelect" listener="#{bean.onRowSelect}" update="table" />
在update
上,您需要放置您的表id或封装您的表的元素。
如果表在outputPanel中,你可以更新它的id而不是表。
update
属性是发送屏幕信息所必需的给你的背豆。
我希望它能帮助……
祝你好运!
您可以这样做来获取特定列的值
<p:dataTable id="firsttable" var="list" value="#{bean.list}" rowKey="#{list}" selectionMode="single" >
<p:column headerText="Date" >
<h:outputText value="#{list.SDate}" />
</p:column>
<p:column headerText="Name" >
<h:outputText value="#{list.IName}" />
</p:column>
</p:dataTable>
// This is capture the value of selected column
<h:inputText id="selectedId" value="#{bean.selectedColumn}" style="display:none">
<f:ajax listener="#{bean.onRowSelect}"></f:ajax>
</h:inputText>
该脚本捕获所选行的值并设置inputHidden
jQuery.noConflict();
$(window).load(function () {
$(document).delegate("#firsttable td", "click", function (event) {
var columnNumber = jQuery(this).index();//get index of clicked row
var colval=jQuery(this).find('div span').text()); // get the column value
$("#selectedId").val(colval); //set value in the inputtext
$("#selectedId").change(); //this will trigger the ajax listener
});
});
在bean定义属性中获取输入文本值
String selectedColumn;
public void onRowSelect(AjaxBehaviorEvent event) {
String value=getSelectedColumn();
System.out.println(value);
}
我不认为primefaces有任何选择列的功能,您可能需要添加像
这样的内容<h:outputText value="#{list.SDate}" >
<f:ajax event="select" listener="#{bean.setSelectedColumn}"/>
</h:outputText>
使用event.getComponent()进一步确定选择了哪个列
关于PrimeFaces DataTable, widgetVar, Javascript, jQuery:
我在使用Primefaces widgetVar来获取Primefaces 3.5数据表的选定行时遇到了麻烦。我在这里查看了PF源代码…
https://code.google.com/p/primefaces/source/browse/primefaces/trunk/src/main/resources/META-INF/resources/primefaces/datatable/datatable.js?r=10301…并且还使用Chrome调试器来检查DataTable,但没有找到getSelectedRow方法。我可能错过了一些有用的东西,但这是我的方法,它有效。
var selectedRow = Array();
$('#idForm1\:idDT tr.ui-state-highlight').each(function(i) {
$(this).children('td').each(function(ii) {
selectedRow.push($(this).text());
});
});
Array selectedRow用所选DataTable行的<td>
文本值填充。