关于在eXtremeComponents列表中隔页存值的解决办法
环境描述:
在eXtremeComponents列表中在我们点击上下页翻页和选择每页多少行时,该组件是将列表的整个form提交,这时会带来整个页面的刷新,无法将每页由用户所产生的数据存储到当前页面的javaScript对象中,不能很好的实现隔页存值。在一个查询页面中,我们需要将查询条件和数据列表在一个页面中显示(查询条件在页面的上半部分页面,数据列表在下半部分显示),数据列表中每行都有一个checkbox选择框在每行记录的最前端,提供给用户对查询出来的数据列表进行筛选,并且在上下翻页,切换每页显示多少行时要记录原先所选择的记录(即实现隔页存值)。
解决方案:
方案一:使用ajax实现异步提交,只刷新数据列表,将用户所选值记录在列表以外的javaScript对象中。
方案二:使用iframe,在iframe中显示数据列表,当用户进行上下翻页或切换每页显示行数时将form提交到iframe页面中,将用户所选记录保存在查询的父页面中。
参考实现:
方案一在不改动eXtremeComponents组件源代码的情况下使用ajax异步提交,需要对页面上翻页和切换每页显示多少行的按钮进行再包装,实际写出来的代码量要比方案二要多很多,所以在此使用方案二,具体实现如下:
首先有两个页面,一个是数据列表显示的页面文件,一个是查询页面文件,在这个查询页面中使用iframe引用数据列表页面文件。以下是两个演示页面的源文件:
Noname1.html 查询页面
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="">
<META NAME="Keywords" CONTENT="">
<META NAME="Description" CONTENT="">
<script language="javascript">
var saveCBValues=new Array();//保存所有选择的值
function submitCheck(){
alert("将要提交的id为:"+saveCBValues);
}
function submitQuery() {
document.forms(0).target="dataList";//提交到iframe
document.forms(0).submit();
}
</script>
</HEAD>
<BODY>
<input type="button" value="提交用户所选值" onclick="submitCheck()"/>
<form action="./Noname2.html">
<table align='center' border='1' bordercolor='#8CB3E3' cellpadding='0'
cellspacing='0'>
<tr>
<td width="125" >查询条件1</td>
<td width="125" >1</td>
</tr>
<tr>
<td>查询条件2</td>
<td>2</td>
</tr>
<tr>
<td>查询条件3</td>
<td>3</td>
</tr>
<tr>
<td colspan="2" align="middle">
<input type="button" value="查询" onclick="submitQuery()"/>
</td>
</tr>
</table>
</form>
<IFrame name="dataList" id="dataList" src="" frameBorder="0" width="100%" height="500">
</IFrame>
</BODY>
</HTML>
Noname2.html 数据列表页面(没有使用eXtremeComponents标签,只是演示,仅供参考)
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="">
<META NAME="Keywords" CONTENT="">
<META NAME="Description" CONTENT="">
<script>
//是否全选功能
function checkAll(cbObj){
var rowcbList=document.getElementsByName("rowCB");
if(rowcbList!=null&&rowcbList.length>0){
if(cbObj.checked){//被选中,此时要全选
for(var i=0;i<rowcbList.length;i++){
rowcbList[i].checked=true;
saveCBVal(rowcbList[i]);
}
}else{//未被选中,此时不要全选,全部撤掉
for(var i=0;i<rowcbList.length;i++){
rowcbList[i].checked=false;
saveCBVal(rowcbList[i]);
}
}
}
//alert("全选所保存的值为:"+parent.saveCBValues);
}
//保存所选值,操作父窗口中的javaScript数组对象得用parent.来引用
function saveCBVal(cbObj){
if(cbObj.checked){//被选中
//保存所选值
parent.saveCBValues[cbObj.rowId]=cbObj.content;
}else{//未被选中
//删掉所选值
parent.saveCBValues[cbObj.rowId]=null;
}
//alert("保存的值为:"+parent.saveCBValues);
}
</script>
</HEAD>
<BODY>
<table align='center' border='1' bordercolor='#8CB3E3' cellpadding='0'
cellspacing='0'>
<tr>
<td width="75">
<input type='checkbox' id='isAllSelect' onclick='checkAll(this)'>全选
</td>
<td width="125">
属性1
</td>
<td width="125">
属性2
</td>
<td width="125">
属性3
</td>
</tr>
<tr>
<td>
<input type='checkbox' rowId='1' id='rowCB' onclick="saveCBVal(this)" content="本行记录ID_1"/><!--其中rowId是数据列表查询时所返回的rownumber-->
</td>
<td>
a
</td>
<td>
b
</td>
<td>
c
</td>
</tr>
<tr>
<td>
<input type='checkbox' rowId='2' id='rowCB' onclick="saveCBVal(this)" content="本行记录ID_2"/><!--其中rowId是数据列表查询时所返回的rownumber-->
</td>
<td>
d
</td>
<td>
e
</td>
<td>
f
</td>
</tr>
</table>
<script>
//回显示先前所选值
function reViewCB(){
var rowcbList=document.getElementsByName("rowCB");
if(rowcbList!=null&&rowcbList.length>0){
var flag=true;//是否全选的标记
for(var i=0;i<rowcbList.length;i++){
if(parent.saveCBValues[rowcbList[i].rowId]!=null&&parent.saveCBValues[rowcbList[i].rowId]==rowcbList[i].rowId){
rowcbList[i].checked=true;//回显
}else{
flag=false;
}
}
if(flag){//将全选checkbox设置为选中
document.getElementById("isAllSelect").checked=true;
}
}
}
reViewCB();
</script>
</BODY>
</HTML>
分享到:
相关推荐
1. **组件配置**:了解如何在XML配置文件或Java代码中声明和配置extremecomponents的列表控件,包括设置数据源、定义列宽、设定排序规则等。 2. **数据绑定**:学习如何将后端数据模型与列表控件绑定,这可能涉及到...
在实际应用中,分页工具可以广泛应用于各种数据展示场景,例如报表、数据库查询结果、商品列表等。通过eXtremeComponents的分页功能,开发者可以轻松实现高效的数据管理,同时保证用户界面的流畅和友好。 总结起来...
eXtremeComponents控件指南
"extreme 列表组件"是eXtremeComponents中的核心部分,它通常指的是能够高效处理大量数据,并提供动态排序、筛选、分页等功能的列表视图。这类组件对于数据密集型应用,如数据分析工具、数据库管理软件或者任何需要...
在"extremeComponents中文文档"中,您将找到关于如何配置和有效利用这些组件的详细指南。 1. **组件概述** extremeComponents 包含了多种组件,如表格、树形视图、面板、对话框、菜单、表单元素等。这些组件都...
视频第六部分共六部分, 下载全才可以解压 博文链接:https://dlivan.iteye.com/blog/116630
2. **安装与配置**:详细步骤指导如何在项目中安装 Extreme Components,包括下载、引入到项目结构中,以及必要的配置设置,确保组件能够正常工作。 3. **使用方法**:每种组件都有详细的使用说明,包括基本用法、...
视频第三部分共六部分 ,下载全才可以解压 博文链接:https://dlivan.iteye.com/blog/116629
它以其高效、灵活和高度可定制的特点,在开发社区中受到广泛的关注。EC旨在提高开发人员的工作效率,提供丰富的用户界面组件,使开发者能够快速构建出功能丰富的应用系统。 EC组件库主要包含以下几类组件: 1. **...
首先,eXtremeComponents中的UI组件可能包括按钮、菜单、对话框、表单等基本元素,以及更为复杂的数据展示组件,如数据网格、图表组件等。这些组件通常封装了丰富的交互逻辑和样式设置,使得开发者可以快速创建出...
eXtremeComponents(简称EC)是一款专为Java开发者设计的开源组件库,它提供了一系列强大的列表展示组件,适用于构建数据密集型的应用程序。EC的核心特性包括支持分页显示、数据导出到Excel和PDF等格式,极大地提升...
此外,文档通常还会包含故障排除指南和常见问题解答,帮助开发者解决在使用过程中遇到的问题。 总之,eXtremeComponents详尽文档包是学习和精通EC组件的宝贵资源,它提供了一条从新手到熟练开发者的学习路径。通过...
extremeComponents开发指南,快速掌握extremeComponents开发
extremecomponents 包
eXtremeComponents 是一个功能强大的组件库,尤其以其在JSP中的extremetable标签而闻名,它提供了一种类似于displaytag的便捷方式来处理表格展示,极大地提高了开发效率和用户体验。本文将深入探讨eXtremeComponents...
7. **问题解决**:提供常见问题的解决方案,帮助开发者在遇到问题时迅速找到解决办法,提高开发效率。 8. **最佳实践**:分享一些使用 ExtremeComponents 的最佳实践,比如组件组合使用、代码结构规划等,以提升...
在"eXtremeComponents-1.0.1-M4-with-dependencies"这个压缩包中,"M4"代表这是一个预发布版本,即里程碑4(Milestone 4),意味着它可能还不是最终的稳定版本,但已经包含了大部分功能并进行了初步测试。...
总之,"eXtremeComponents控件分页导出数据Demo"是一个很好的学习资源,它直观地展示了如何在.NET环境中利用eXtremeComponents控件处理大数据集的分页和导出。通过对这个Demo的深入研究和实践,开发者可以更好地掌握...