关于在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>
分享到:
相关推荐
虚拟机vmware workstatiions pro 17.6.1个人使用免费,不用证书直接安装使用
scipy-1.2.0-cp35-cp35m-linux_armv7l.whl
基于springboot爬虫高考志愿智能推荐系统源码数据库文档.zip
bimdata_api_client-4.3.0-py3-none-any.whl
Pillow-7.0.0-cp37-cp37m-linux_armv7l.whl
onnxruntime-1.16.2-cp38-cp38-win_amd64.whl
opencv_python-4.4.0.46-cp39-cp39-linux_armv7l.whl
论文描述:该论文研究了某一特定领域的问题,并提出了新的解决方案。论文首先对问题进行了详细的分析和理解,并对已有的研究成果进行了综述。然后,论文提出了一种全新的解决方案,包括算法、模型或方法。在整个研究过程中,论文使用了合适的实验设计和数据集,并进行了充分的实验验证。最后,论文对解决方案的性能进行了全面的评估和分析,并提出了进一步的研究方向。 源码内容描述:该源码实现了论文中提出的新的解决方案。源码中包含了算法、模型或方法的具体实现代码,以及相关的数据预处理、实验设计和性能评估代码。源码中还包括了合适的注释和文档,以方便其他研究者理解和使用。源码的实现应该具有可读性、可维护性和高效性,并能够复现论文中的实验结果。此外,源码还应该尽可能具有通用性,以便在其他类似问题上进行进一步的应用和扩展。
ta_lib-0.5.1-cp313-cp313-win32.whl
STM32开发相关软件ISP 程序下载STM32开发相关软件ISP 程序下载提取方式是百度网盘分享地址
java源码资源基于JAVA的UDP服务器模型源代码提取方式是百度网盘分享地址
基于Python+Django的电影票房数据分析系统源码数据库文档.zip
onnxruntime-1.19.0-cp311-cp311-win_amd64.whl
Java固定资产管理系统源码 固定资产管理系统是对高校固定资产的一个信息化管理系统,基本功能包括:对固定资产的购进、接触、销毁,对物品的使用状态、借出状态、库存状态等进行标识,对各类物品进行编号,根据编号进行查询,根据名称进行查询等。本系统结构如下: (1)系统登录:用户登录模块:登录功能 重置 (2)系统用户管理:对系统用户的增加 系统用户的权限修改 系统用户的删除 分配系统用户的权限 修改本身登录密码 资产的相关维护 (3)员工信息管理:教工的增加、修改、删除、查询 (4)资产入库管理:资产的属性修改 资产的报废删除 资产的属性查询 (5)资产维护管理:物资的维修、维护物资的信息修改 (6)资产借还管理:增加借出资产 查询借出资产 归还已借出资产(7)打印报表
matplotlib-3.7.0-cp311-cp311-linux_armv7l.whl
基于springboot的房屋租赁管理系统源码数据库文档.zip
opencv_contrib_python-4.1.0.25-cp35-cp35m-linux_armv7l.whl
bimdata_api_client-3.1.0-py3-none-any.whl
本23级物流01班谭敏20234970114.docx
opencv_contrib_python-4.5.2.52-cp39-cp39-linux_armv7l.whl