- jackle_liu
- 等级: 初级会员

- 文章: 4
- 积分: 0

|
最后更新时间:2007-06-24 关键字: jsf
在日常应用中,经常需要对table中的数据进行批量操作(例如: 删除),在jsp中实现这样操作的例子比比介是,但是要找在jsf中实现的例子可就难了.
通过对appfuse的研究,发现了一个比较精妙的js函数(在script/global.js中).
js 代码
- function checkAll(theForm) {
- for (var i=0;i
- var e = theForm.elements[i];
- var eName = e.name;
- if (eName != 'allbox' &&
- (e.type.indexOf("checkbox") == 0)) {
- e.checked = theForm.allbox.checked;
- }
- }
- }
看来只要如此这般写我的table就可达到目的了:
- <t:dataTable id="houses" var="house"
- value="#{houseList.groupHouses}" rows="25" >
-
- <t:column>
- <f:facet name="header">
- <input type="checkbox" name="allbox" onclick="checkAll(document.getElementById('editHouse'));"/>
- </f:facet>
- <h:selectBooleanCheckbox name="rowCheck"/>
- </t:column>
-
- <t:column>
- <f:facet name="header">
- <h:outputText value="#{text['portal.home.table.house.title']}" />
- </f:facet>
- <h:outputText value="#{house.name}" escape="true"/>
- </t:column>
-
-
- </t:dataTable>
注意table最左边的一列:
- <t:column>
- <f:facet name="header">
- <input type="checkbox" name="allbox" onclick="checkAll(document.getElementById('editHouse'));"/>
- f:facet>
- <h:selectBooleanCheckbox name="rowCheck"/>
- t:column>
这是关键,事先说一下,form的id是"editHouse".
这是摸索了一晚上才找到的办法,希望大家看到后少走弯路.
声明:JavaEye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
|
| 返回顶楼 |
|
|
- movomoto
- 等级: 初级会员

- 性别:

- 文章: 5
- 积分: 0
- 来自: beijing

|
感谢大大。。终于解决了这个问题
|
| 返回顶楼 |
|
|
- hzw321hzw
- 等级: 初级会员

- 性别:

- 文章: 10
- 积分: 0
- 来自: 深圳

|
jackle_liu 写道:
在日常应用中,经常需要对table中的数据进行批量操作(例如: 删除),在jsp中实现这样操作的例子比比介是,但是要找在jsf中实现的例子可就难了.
通过对appfuse的研究,发现了一个比较精妙的js函数(在script/global.js中).
js 代码
- function checkAll(theTable) {
- var body=theTbale.body;
- for (var i=0,j=body.childNodes.length;i 〈 j;i++){
- var e = document.getElementById(theTable.id+":"+i+":select"); //获取CHECKBOX的引用
-
-
-
- e.checked = !e.checked; //反选
-
- }
- }
看来只要如此这般写我的table就可达到目的了:
- <t:dataTable id="houses" var="house"
- value="#{houseList.groupHouses}" rows="25" >
-
- <t:column>
- <f:facet name="header">
- <input type="checkbox" name="allbox" onclick="checkAll(document.getElementById('editHouse'));"/>
- f:facet>
- <h:selectBooleanCheckbox id="select" name="rowCheck"/>
- t:column>
-
- <t:column>
- <f:facet name="header">
- <h:outputText value="#{text['portal.home.table.house.title']}" />
- f:facet>
- <h:outputText value="#{house.name}" escape="true"/>
- t:column>
-
-
- t:dataTable>
注意table最左边的一列:
- <t:column>
- <f:facet name="header">
- <input type="checkbox" name="allbox" onclick="checkAll(document.getElementById('editHouse:houses'));"/>
- f:facet>
- <h:selectBooleanCheckbox name="rowCheck"/>
- t:column>
这是关键,事先说一下,form的id是"editHouse".
这是摸索了一晚上才找到的办法,希望大家看到后少走弯路.
也可以试试直接取TABLE而不是取FORM,不过要注意JSF的ID命名规则.
|
| 返回顶楼 |
|
|
- fangbiao23
- 等级: 初级会员

- 性别:

- 文章: 60
- 积分: 72
- 来自: 广州

|
这个不是很好吧~~
一选可就是整个表,而不是一个页面的行数据啦!
|
| 返回顶楼 |
|
|
- yxlrock
- 等级: 初级会员

- 文章: 4
- 积分: 0

|
<h:selectBooleanCheckbox name="rowCheck"/> 你的name从那里来的,你自己开发的吗???
QQ373051727
|
| 返回顶楼 |
|
|
- yxlrock
- 等级: 初级会员

- 文章: 4
- 积分: 0

|
还有使用这种方法在托管bean 怎样才能取到选中行的值。。。。
|
| 返回顶楼 |
|
|
- yourenyouyu2008
- 等级: 初级会员

- 性别:

- 文章: 4
- 积分: 30
- 来自: 北京

|
选是选中了,后台怎么获取呀?
|
| 返回顶楼 |
|
|