`

checkbox与dataTable的完美结合

    博客分类:
  • web
阅读更多

本文介绍了richface的一种使用情况:datatable和checkbox的结合。

 

rich:dataTable是很不错的web控件。但如果编写如下图效果的业务,必须结合checkbox来使用。

 

现附上代码,然后分析

<rich:dataTable id="carList" width="555px" rows="#{usr.pageSize}" value="#{usr.dataList}" var="car" 
                            rowClasses="dataListRow1, dataListRow2" rowKeyVar="row">
                <f:facet name="header">
                    <rich:columnGroup>
                        <h:column>
                            <h:selectBooleanCheckbox id="all" onclick="selectAll(#{usr.scrollerPage},#{usr.pageSize});"/>
                        </h:column>

                        <h:column>
                            <h:outputText styleClass="headerText" value="RowNum" />
                        </h:column>

                        <h:column>
                            <h:outputText styleClass="headerText" value="Name" />
                        </h:column>
                        <h:column>
                            <h:outputText styleClass="headerText" value="Decription" />
                        </h:column>
                        <h:column>
                            <h:outputText styleClass="headerText" value="Base Price" />
                        </h:column>

                        <h:column>
                            <h:outputText styleClass="headerText" value="操作" />
                        </h:column>
                    </rich:columnGroup>
                </f:facet>

                <h:column>
                    <h:selectBooleanCheckbox id="cbox" value="#{car.checked}"/>
                </h:column>
                <h:column>
                    <h:outputText value="#{row}" />
                </h:column>
                <h:column>
                    <h:outputText value="#{car.name}" />
                </h:column>
                <h:column>
                    <h:outputText value="#{car.description}" />
                </h:column>
                <h:column>
                    <h:outputText value="#{car.baseprice}" />
                </h:column>

                <h:column>
                    <h:commandLink action="#{usr.delete}" value="删除" >
                        <f:param name="id" value="#{car.id}"/>
                    </h:commandLink>
                </h:column>
            </rich:dataTable>

            <rich:datascroller for="carList" id="dc1" style="width:480px" page="#{usr.scrollerPage}" onclick="antiSelect();" reRender="formlist"/>
 

这里的关键问题是全选。经过google和自己的摸索,总结如下:

onclick="selectAll(当前分页序号,每页多少条记录);"

注意:

如果使用xhtml,js代码请写入独立文件并在页面中引入:

<a4j:loadScript src="${pageContext.request.contextPath}/scripts/directory.js" />

 否则,直接写在xhtml页面,会报错:

The content of elements must consist of well-formed character data or markup

 

原因我不确知,可能是xhtml解析问题。

js代码如下

function selectAll(page,size) {
    var checkAll=document.getElementById('formlist:carList:all').checked;

    for(var i=0;i<=10; i++){
        var seq = (page-1)* size + i;
        var checkBox = document.getElementById('formlist:carList:'+seq+':cbox');//formlist:carList:0:cbox

        //alert("checkAll="+checkAll);
        //alert("page="+page+" size="+size+" i="+i+" seq="+seq);
        if(checkAll)
            checkBox.checked=true;
        else
            checkBox.checked=false;
    }
}

function antiSelect(){
    document.getElementById('formlist:carList:all').checked=false;
}

 

此前,我google的代码如下,在该死的ie下不能执行。为此,我扣了半天行号问题。

function selectAll() {
         var rows = document.getElementById('formlist:carList').rows;
         var currentState = rows[0].cells[0].childNodes[0].checked;
         var i;
         for (i in rows) {
             i++;
             if (currentState) {
                rows[i].cells[0].childNodes[0].checked=true;
             } else if (!currentState) {
                rows[i].cells[0].childNodes[0].checked=false;
             }
         }
     }

 经测试,改代码全浏览器支持!

分享到:
评论
1 楼 wwj5256 2010-08-24  

学习了  刚好要用到

引用
如果使用xhtml,js代码请写入独立文件并在页面中引入:


这个问题
<script>
<!--
  //js code

-->
</script>
这样IDE就应该不会去解析js了

相关推荐

    json获取datatable后生成table分页显示checkbox全选

    "json获取datatable后生成table分页显示checkbox全选"这个主题涵盖了几个重要的JavaScript和前端开发技术,这些技术有助于提升用户体验并优化服务器资源。以下是这些知识点的详细说明: 1. **JSON (JavaScript ...

    【Android】ListView与CheckBox的完美结合

    本教程将深入探讨如何将ListView与CheckBox结合,实现一个CheckList,允许用户多选列表项,通常用于实现如设置、选择功能等场景。 1. **ListView的基本使用** - ListView是Android提供的一个视图容器,用于展示一...

    listview中添加CheckBox的完美实现

    ListView 中添加 CheckBox 的完美实现 在 Android 开发中,ListView 是一个非常常用的控件,它可以用来显示大量的数据。但是在实际开发中,我们经常需要在 ListView 中添加 CheckBox,以便用户可以选择某些项目。...

    Winform中DataGridView中加checkBox列的用法

    通过设置其`DataSource`属性,我们可以将其与数据源(如DataTable、List等)绑定,从而实现数据的展示。此外,`DataGridView`允许自定义列类型,包括文本、数字、日期以及自定义控件,如CheckBox。 要在`...

    完美解决ListView和CheckBox的焦点冲突及CheckBox的复用问题

    本文将详细探讨这些问题以及如何通过优化来实现“完美解决ListView和CheckBox的焦点冲突及CheckBox的复用问题”。 一、焦点冲突问题 在ListView中,通常一个列表项被点击时,焦点会自动转移到该列表项,但如果列表...

    GridView与CheckBox结合

    当我们需要在一个GridView中实现可选功能,即用户可以选择多个项目时,通常会将GridView与CheckBox结合起来使用。本文将详细讲解如何在Android应用中实现GridView与CheckBox的结合,以及相关的注意事项。 首先,...

    checkbox和gridview的结合

    在本篇文章中,我们将深入探讨如何将`CheckBox`与`GridView`结合起来,以实现全选、反选功能,并从数据库中获取数据。 首先,`CheckBox`在`GridView`中的应用主要是为了增强用户的交互体验。当`GridView`中的每个...

    C# winform TreeView中关于checkbox选择的完美类

    本文将深入讲解如何实现`TreeView`控件与复选框功能的完美结合,并提供代码示例,确保其可用性。 1. **添加复选框到TreeView节点** 在WinForm设计界面,可以通过设置`TreeView`控件的`CheckBoxes`属性为`true`来...

    C# 解决双击TreeView表里checkbox本身Bug问题

    一个WinForm的TreeView,某node的CheckBox初始状态为false,当双击这个node的checkbox时,会出现很奇怪的情况: 第一次双击checkbox,checkbox显示的状态会切换两次状态,unchecked-&gt; checked-&gt; unchecked,而...

    自定义checkbox与button操作

    "自定义checkbox与button操作"这个主题涉及到如何通过编程实现一种特定的用户交互模式,即根据checkbox的状态来控制button的功能和视觉表现。这通常是通过JavaScript、CSS以及HTML来实现的。 首先,我们需要了解...

    checkbox实现全选和反选经典例子

    这可以通过监听全选Checkbox的`CheckedChanged`事件来实现,然后遍历DataGridView的所有行,设置每一行的Checkbox为与全选Checkbox状态一致。 - **反选功能**:反选意味着取消所有已选中的项。这可以通过再次触发...

    GridView和CheckBox结合

    ### GridView和CheckBox结合知识点解析 #### 一、概述 在Web开发中,`GridView`控件常被用于展示数据表,而`CheckBox`则用于提供用户选择或切换某些功能的能力。将两者结合使用,可以实现对多条记录的批量操作,如...

    Android CheckBox与监听Demo源码.rar

    本教程将深入探讨Android CheckBox的基本用法、事件监听以及如何结合源码实现一个完整的Demo。 首先,CheckBox的使用涉及到XML布局文件中的声明。在布局文件中,我们可以这样定义一个CheckBox: ```xml &lt;CheckBox ...

    多个datatable共存造成多个表格的checkbox都被选中

    【解决方法】 所以最好是修改jquery.datatable控件,给生成的每个datatable下的checkbox赋 予不同的id,因为datatable的id是不一样的,所以可以把 datatable的id作为 checkbox的前缀组成一个唯一的id 。 具体这个...

    checkBox分别处理选中与不选中

    ### checkBox分别处理选中与不选中 在Web开发中,`checkbox`是一种常见的表单元素,用于收集用户的选择信息。通常情况下,一个`checkbox`只能代表一项选择,但可以通过设置多个`checkbox`来实现多选功能。本文将...

    ListView中添加CheckBox

    1、ListView item中加入checkbox后onListItemClick 事件无法触发。 原因:checkbox的优先级高于ListItem于是屏蔽了ListItem的单击事件。 解决方案:设置checkbox的android:focusable="false" 2、选择其中的...

    WPF 自定义CheckBox样式

    在WPF中,我们可以使用`FontIcon`或者`TextBlock`结合特殊的字体库来实现字体图标。 自定义CheckBox的第一步是选择一个合适的字体图标库。有许多免费的字体图标库,如Material Design Icons、Font Awesome、...

    checkbox与radio好看的样式

    在网页设计中,`checkbox` 和 `radio` 是两种常见的表单元素,用于用户进行多选和单选操作。为了提升用户体验和界面美观性,设计师和开发者常常会为这些元素定制自定义样式。本篇文章将深入探讨如何实现“好看的”`...

    带CheckBox的TreeView控件

    当这两者结合时,我们得到了"带CheckBox的TreeView控件",这是一个功能强大的用户界面元素,特别适用于需要用户进行多选操作的情况,比如文件管理器、设置菜单等。 在.NET Framework或WPF(Windows Presentation ...

    android中CheckBox加载自定义选中与未选中图片样式

    在Android开发中,CheckBox是一个常用的UI组件,用于提供两种状态的选择:选中和未选中。默认情况下,CheckBox的选中和未选中状态的图标是系统提供的,但有时为了满足应用的个性化需求,我们需要自定义这些图片样式...

Global site tag (gtag.js) - Google Analytics