`
gavin213
  • 浏览: 34343 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

Ecside checkbox 翻页后保存状态问题解决

阅读更多
   使用ecside很久了,无论从处理速度还是易用性上来说,ecside都不失为一个成功的简要列表控件。可是有个问题困绕着我很久,那就是自加的checkbox列翻页后无法保存状态的问题。
    不知道是没有引起fins 的关注,还是用处较少,网上也很少有人提及。由于项目的需要,这个问题始终不能回避,于是决定动手修改源码。下面是我修改ecside.js源码的内容,主要是添加了部分内容:
   
   Array.prototype.baoremove = function(dx)//删除数组中某个元素
  {
    if(isNaN(dx)||dx>this.length){return false;}
    this.splice(dx,1);
  };
   Array.prototype.uniq = function(){//删除数组中重复数据
	var i = 0, j = 0;
	while (undefined !== this[i]){
	j = i + 1;
	while(undefined !== this[j]){
	if (this[i] === this[j]) {
	this.splice(j, 1);
	}
	++j;
	}
	
	++i;
	}	
	return this;
}

ECSideUtil.getPageCheckValue=function(checkboxname){//获取所有的check值
	var carray = new Array();
	var box = document.getElementsByName(checkboxname);
	for(var i=0;i<box.length;i++){
		if(box[i].checked){
			carray.push(box[i].value);
		}else{
			carray.baoremove(box[i].value);
		}
	}
	var newarray = carray.uniq();
	newarray.uniq();//重复过滤,因为一次过滤后发现仍会产生重复数据
	return newarray;
};
ECSideUtil.initPageCheckValue=function(checkboxname,checkedarry){//翻页保存checkbox状态
	var box = document.getElementsByName(checkboxname);
	for(var i=0;i<box.length;i++){
		for(var j=0;j<checkedarry.length;j++){
			if(checkedarry[j]==box[i].value){
				box[i].checked=true;
			}
		}
	}
};

ECSideUtil.gotoPage=function(pageno,formid){
var allcheckarray =ECSideUtil.getPageCheckValue("yourcheckboxname")  ;//获得所有的check值

var ecsideObj=ECSideUtil.getGridObj(formid);

ecsideObj.showWaitingBar();

	try{
		ECSideUtil.NearPagesBar.doHideMe();
	}catch (e3){}

	var pageid=ecsideObj.pageFieldName;
	var form=ecsideObj.ECForm;

if (!form[pageid]){
	var hiddenpageid=document.createElement("input");
	hiddenpageid.id=pageid;
	hiddenpageid.style.display="none";
	form.appendChild(hiddenpageid);
}

	form[pageid].value=pageno;
	ECSideUtil.noExport(formid);
	form.action=ecsideObj.DEFAULT_ACTION;

	try {
		if (ecsideObj.doPreload){
			ecsideObj.goPage();
		}else {
			ecsideObj.ajaxSubmit();
		}
	}catch (e){
		try {
			ecsideObj.ajaxSubmit();
		}catch (e2){
			form.submit();
		}
	}
ECSideUtil.initPageCheckValue("yourcheckboxname",allcheckarray);//初始化本页

};

   ECSideUtil.gotoPage 是ecside 源码的翻页函数,本部分代码实现翻页保存checkbox状态的原理就是在调用 ECSideUtil.gotoPage 之前获取所有的checked 状态的checkbox 存入有临时变量(ECSideUtil.getPageCheckValue 方法), 在ECSideUtil.gotoPage 调用之后也即完成翻页后,把临时变量中存取的所有checked 状态checkbox与当前页的checkbox进行比较(ECSideUtil.initPageCheckValue),如当前页checkbox 已经存在该临时变量中,则把当前页checkbox勾选,也即实现了保存状态的功能。
    JSP页面不用做任何改变,代码如下:   
  
      <ec:column cell="checkbox" headerCell="checkbox" 
        alias="chkBoxUser" value="${record.USERID}" 
        width="26" viewsAllowed="html" />
   

   获取所有checked checkbox JS脚本:
   
    var checkedvalues = ECSideUtil.getPageCheckValue('chkBoxUser');
    

    checkedvalues 为checkbox id 组成的数组。
    因为没有真正为ECSideUtil.gotoPage添加参数,ECSideUtil.getPageCheckValue()和ECSideUtil.initPageCheckValue()参数只能写死,接收 checkbox name.所以最好所有table 的checkbox用同样的alias.
    最后要感谢向左走向右走的辛勤劳动:http://www.blogjava.net/kawaii/archive/2007/09/26/148167.html
    欢迎讨论与批评.....
分享到:
评论

相关推荐

    翻页后保存checkbox选中状态

    "翻页后保存checkbox选中状态"这个话题聚焦于一种常见的用户体验优化问题。在网页或应用程序中,用户可能需要浏览多页数据,例如表格或者列表,而这些数据通常通过分页进行展示。当用户在某一页选中了特定的checkbox...

    关于GridView翻页checkBox状态保存的问题

    GridView可以在模板里使用CheckBox控件,但是,如果GridView使用了分页功能,那么在选择不同的分页后,原先选择的CheckBox控件状态,系统将不再维护,该示例代码解决关于GridView翻页checkBox状态保存的问题

    js实现翻页后保持checkbox选中状态的实现方法

    所以checkbox为false。 比如酷狗音乐中,上下页选中的歌曲不会保留,只能在每页中选择添加后,再切换下页。 但是项目中有着需求,所以只能完成实现。 项目具体的需求如下:给角色授权时,选择模块以及模块下的操作,...

    解决ListView嵌套CheckBox滑动时选中状态错乱

    总结来说,解决ListView嵌套CheckBox滑动时的选中状态错乱问题,需要深入理解ListView的工作机制,合理利用ViewHolder,正确绑定数据,监听并处理CheckBox的状态变化,以及适当地处理点击事件。通过这些步骤,可以...

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

    会出现很奇怪的情况: 第一次双击checkbox,checkbox显示的状态会切换两次状态,unchecked-&gt; checked-&gt; unchecked,而AfterCheck事件仅触发一次,在AfterCheck事件中获取到的checkbox状态为checked。在这里checkbox...

    checkbox复选框状态保持

    在IT领域,尤其是在前端开发中,"checkbox复选框状态保持"是一个常见的需求,它涉及到用户界面(UI)的交互设计和数据持久化。在网页或应用程序中,复选框(checkbox)是用户进行多选操作的基本元素,允许用户对一组...

    listview的checkbox状态保存及内存优化

    综上所述,解决ListView中Checkbox状态错乱的问题,关键在于理解ListView的工作机制并合理利用ViewHolder。同时,进行内存优化可以显著提升应用的性能和用户体验。在实际开发中,结合上述策略和其他最佳实践,可以...

    PB 11.5 CheckBox三种状态的实例

    本实例将详细讲解如何实现CheckBox控件的三种状态:未选中、已选中以及灰色禁用状态,并探讨它们在实际应用中的配置和事件处理。 1. CheckBox的基本结构: CheckBox控件在界面中通常表现为一个小方框,里面可能有...

    Android完美解决ListView复用导致的Checkbox状态混乱问题

    通过以上方法,我们可以有效地解决ListView复用导致的Checkbox状态混乱问题。在实际开发中,理解ListView的工作原理以及如何正确处理组件状态是非常重要的,这不仅可以提高用户体验,还能保证应用的稳定性和效率。

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

    为解决这个问题,我们需要在getView()方法中根据数据模型的状态来设置CheckBox的选中状态,确保每个CheckBox与对应的数据项保持一致。 三、全选、反选功能 实现全选和反选功能,可以添加一个主CheckBox,当用户...

    QT CheckBox复选框状态设置、信号绑定, setCheckState、checkState、setTristate

    例如,如果你想将一个`CheckBox`设置为选中状态,你可以这样调用:`checkBox-&gt;setCheckState(Qt::Checked);` 2. `checkState()`: 这是一个返回函数,它会返回`CheckBox`当前的状态。你可以用这个方法来获取用户对`...

    完美解决Listview嵌套Checkbox滑动后位置错乱问题,和checkbox的全选或全不选。

    本文将深入探讨如何完美解决ListView中Checkbox滑动后位置错乱的问题,以及实现Checkbox的全选和全不选功能。 首先,我们遇到的主要问题是ListView的视图复用机制。为了提高性能,ListView在滑动时会复用已滚动出...

    gridview 分页保存每页的Checkbox选中的值

    当用户在多页之间切换并进行选择后,如何保存并获取每一页Checkbox选中的值是一个常见的需求。以下将详细讲解实现这个功能的方法。 首先,我们需要理解GridView的基本用法。GridView控件允许我们动态绑定数据源,如...

    用JS修改checkbox的选中状态

    在本文中,我们将深入探讨如何使用JavaScript来改变checkbox的选中状态。 首先,我们需要了解HTML中的`&lt;input&gt;`标签,它是用于创建复选框的。一个简单的复选框HTML代码如下: ```html &lt;input type="checkbox" id=...

    js翻页复选框状态保存

    本篇文章将详细探讨如何通过JavaScript实现一个功能:即在JSP列表页面上保存复选框的状态,即使在翻页操作后也能保持之前选中的状态。 #### 关键概念和技术栈 1. **JSP (Java Server Pages)**: 是一种用于生成动态...

    两层嵌套的checkbox记录选中状态

    在IT领域,尤其是在Android开发中,经常需要处理用户交互,比如多层嵌套的复选框(checkbox)的选中状态管理。这个场景通常出现在数据结构复杂,需要展示层次关系的时候,例如在ListView中嵌套一个Gridview,而...

    带checkbox和radiobutton的listview(实现翻页保存和单选)

    - 用户在ListView中选择的Checkbox和RadioButton状态需要在翻页后保持。Android提供了`onSaveInstanceState()`和`onRestoreInstanceState()`方法来保存和恢复Activity的状态,但这些方法通常用于保存UI组件的简单...

    Flex 模拟CheckBox多状态切换

    "Flex模拟CheckBox多状态切换"就是这样一个例子,它扩展了标准的CheckBox组件,提供了√、×、和○三种状态供用户选择,以实现更丰富的交互体验。在本文中,我们将深入探讨如何在Flex中实现这样的功能。 首先,我们...

    DuiLib_CheckBox

    "DuiLib_CheckBox"正是为了解决这个问题而设计的,它添加了一个新的“部分选中”(Partially Checked)状态,使得用户可以通过单个CheckBox就能控制一组相关CheckBox的选中状态。 实现这个功能的关键在于扩展...

    Girdview CheckBox翻页多选功能,将Girdview数据转换为二位数组的方法。将check状态存入session方法

    是B\S c#中 Girdview CheckBox翻页多选功能,将Girdview数据转换为二位数组的方法。将check状态存入session方法

Global site tag (gtag.js) - Google Analytics