JSF怎么获取某行某列的值呢? 80
<rich:dataTableid="datatableDetailList"value="#{AS01E01Handler.detailList}"var="detai...
<rich:dataTable id="datatableDetailList" value="#{AS01E01Handler.detailList}" var="detailList">
<a4j:support event="onRowClick" action="#{AS01E01Handler.selectRow}">
<f:setPropertyActionListener target="#{AS01E01Handler.detailRow}" value="#{detailList}" />
</a4j:support>
当我点击Table时,已经能获取选中行[detailRow]的对象值了,但在Handler中怎么才能选中行的列值呢?
比如有30列,ID为1~30,我怎么才能在Handler中得到点击某行的某列的值呢?
求助,小弟在此谢过!~~ 展开
<a4j:support event="onRowClick" action="#{AS01E01Handler.selectRow}">
<f:setPropertyActionListener target="#{AS01E01Handler.detailRow}" value="#{detailList}" />
</a4j:support>
当我点击Table时,已经能获取选中行[detailRow]的对象值了,但在Handler中怎么才能选中行的列值呢?
比如有30列,ID为1~30,我怎么才能在Handler中得到点击某行的某列的值呢?
求助,小弟在此谢过!~~ 展开
2个回答
展开全部
这个比较简单,dataTable里面有个属性,rowKeyVar="index",rowKeyVar就是列出dataTable里面集合的下标。举个例子,比如你的value="#{AS01E01Handler.detailList}" 里面的detailList有个属性,name(姓名),num(学号)。现在detailList.size()=5,那么现在就有5行数据。我们来取你想要的,第4行第2列的值。那就是获得那一行的名字咯。
<f:facet name="header">
<rich:columnGroup >
<rich:column>
<h:outputText value="编号" />
</rich:column>
<rich:column >
<h:outputText value="姓名" />
</rich:column>
<rich:column >
<h:outputText value="学号" />
</rich:column>
</rich:columnGroup>
</f:facet>
<rich:column >
<h:outputText value="#{index+1}" />
</rich:column>
<rich:column >
<h:outputText value="#{detailList,name}" >
<a4j:support event="onRowClick" onsubmit="getIndex(#{index});" action="#{AS01E01Handler.selectRow}"
<a4j:ajaxListener type="org.ajax4jsf.ajax.ForceRender" />
</a4j:support>
</h:outputText>
</rich:column>
<rich:column >
<h:outputText value="#{detailList,num}" />
</rich:column>
这里我定义了一个JS函数,getIndex(index);这样你点击时,就能获得那一行的下标了,第4行,那么这个下标就是3。你需要将这个值传递到后台。那么在AS01E01Handler里面需要增加属性 int index;在页面上:
function getIndex(index) {
document.getElementById(‘currRow’).value = index;
}
<h:inputHidden id="currRow" value="#{AS01E01Handler.index}" />
这样当你点击时,不是就将3这个下标传到后台的AS01E01Handler的index了吗?
这样,你的方法selectRow就能拿到index这个值了,接着就用detailList.get(index).getName();
就得到了你要的值了。第四行第二列,就是那个姓名。
好吧,希望对你有所帮助。
<f:facet name="header">
<rich:columnGroup >
<rich:column>
<h:outputText value="编号" />
</rich:column>
<rich:column >
<h:outputText value="姓名" />
</rich:column>
<rich:column >
<h:outputText value="学号" />
</rich:column>
</rich:columnGroup>
</f:facet>
<rich:column >
<h:outputText value="#{index+1}" />
</rich:column>
<rich:column >
<h:outputText value="#{detailList,name}" >
<a4j:support event="onRowClick" onsubmit="getIndex(#{index});" action="#{AS01E01Handler.selectRow}"
<a4j:ajaxListener type="org.ajax4jsf.ajax.ForceRender" />
</a4j:support>
</h:outputText>
</rich:column>
<rich:column >
<h:outputText value="#{detailList,num}" />
</rich:column>
这里我定义了一个JS函数,getIndex(index);这样你点击时,就能获得那一行的下标了,第4行,那么这个下标就是3。你需要将这个值传递到后台。那么在AS01E01Handler里面需要增加属性 int index;在页面上:
function getIndex(index) {
document.getElementById(‘currRow’).value = index;
}
<h:inputHidden id="currRow" value="#{AS01E01Handler.index}" />
这样当你点击时,不是就将3这个下标传到后台的AS01E01Handler的index了吗?
这样,你的方法selectRow就能拿到index这个值了,接着就用detailList.get(index).getName();
就得到了你要的值了。第四行第二列,就是那个姓名。
好吧,希望对你有所帮助。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询