You can find out the index of the selected column with jQuery and send it to server as an ajax event
here is a way:
first add an inputText
above the table (make it hidden)
<h:inputText id="mySelectedColumnId" value="#{myBean.mySelectedColumnField}" style="display:none">
<f:ajax listener="#{myBean.myListener}"></f:ajax>
</h:inputText>
and the following js code to bind clicking on the table and triggering click on the h:inputText
which will trigger listened on the server
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
});
Update
What I actually meant was the following structure:
<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"....
.
.
.
.
and inside the js (place it inside js folder inside resources folder in the root of your web app folder Resources (Library) In JSF 2.0) file place
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
});
});