我想知道如何获得列选择
我有以下数据表
<p:dataTable id="DataTable" value="#{dataTable.selecDataModel}" var="test" scrollable="TRUE" scrollHeight="500" styleClass="day-column2" selectionMode="single" >
<p:column headerText="Column1" footerText="Column1" width="450">
<h:outputText value="Test1" />
</p:column>
<p:column headerText="Column2" footerText="Column2" width="450">
<h:outputText value="Test2" />
</p:column>
</p:dataTable>
p:ajax只支持行选择,如果我想知道选择了哪一列,我该怎么做。
答案 0 :(得分:2)
您可以使用jQuery找到所选列的索引,并将其作为ajax事件发送到服务器
这是一种方式:
首先在表格上方添加inputText
(隐藏)
<h:inputText id="mySelectedColumnId" value="#{myBean.mySelectedColumnField}" style="display:none">
<f:ajax listener="#{myBean.myListener}"></f:ajax>
</h:inputText>
和以下js代码绑定点击表并触发点击h:inputText
将触发服务器上的侦听
jQuery(document).delegate("#yourTableID td", "click", function (event) {//bind every click on any td in the table
var columnNumber = jQuery(this).index();//get index of clicked row
jQuery("#mySelectedColumnId").val(columnNumber); //set value in the inputtext
jQuery("#mySelectedColumnId").change(); //this will trigger the ajax listener
});
更新
我实际上的意思是以下结构:
<h:outputScript name="js/newjavascriptfile.js" target="head" />
.
.
.
.
<h:form prependId="false">
<h:inputText id="mySelectedColumnId" value="#{myBean.mySelectedColumnField}" style="display:none">
<f:ajax listener="#{myBean.myListener}"></f:ajax>
</h:inputText>
<p:dataTable id="DataTable"....
.
.
.
.
并在js内部(将其置于您的Web应用程序文件夹Resources (Library) In JSF 2.0根目录下的资源文件夹内的js文件夹中)文件位置
jQuery(window).load(function () {
jQuery(document).delegate("#yourTableID td", "click", function (event) {//bind every click on any td in the table
var columnNumber = jQuery(this).index();//get index of clicked row
jQuery("#mySelectedColumnId").val(columnNumber); //set value in the inputtext
jQuery("#mySelectedColumnId").change(); //this will trigger the ajax listener
});
});