这段代码使用来读取table中的值,主要getAllSelectTableData()去读页面table内容是很慢求高手优化一下
Class("TableCtrl",
{
init: function(id) {
this.id = id;
this.initbindevent(id);
},
initbindevent : function(id){
var obj = $('#' + id).find("input[type!=checkbox],select,textarea");
$.each(obj, function(i, o) {
$(o).change(function() {
var $tr = $(o).parent().parent().eq(0);
if(!$tr.hasClass("template"))
$(o).parent().parent().eq(0).addClass("rowtoupdate");
});
});
},
setTableNameToElement: function(id){
var obj = $('#' + id).find("input[type!=checkbox],select,textarea");
$.each(obj, function(i, o) {
if(o.name){
o.name = id+"_"+o.name;
}
});
},
addrow: function(id) {
var $tr = $('#' + id).find("tr.template")
.clone(true)
.removeClass("template")
.addClass("rowtoadd")
.appendTo($('#' + id))
.toggle();
$tr.find("input[type!=checkbox],select,textarea").each( function(){
this.id=this.name+$('#' + id)[0].rows.length;
var cssclass= $(this).attr("class");
if(cssclass.indexOf("ignore")>=0){
var ss = cssclass.replace("ignore,","");
$(this).removeClass(cssclass).addClass(ss);
}
});
},
removerow: function(id) {
var obj = $('#' + id);
$.each(obj.find("tr.rowtoadd td>input:checked"), function(i, o) {
$(o).parent().parent().eq(0).remove();
});
$.each(obj.find("td>input:checked"), function(i, o) {
$(o).parent().parent().eq(0).addClass("rowtodelete").hide();
});
},
checkall: function(id) {
var obj = $('#' + id);
var checked = obj.find("th>input[type='checkbox']:first").get(0).checked;
$.each(obj.find("th>input[type='checkbox']:visible"), function(i, o) {
o.checked = checked;
});
},
getTableData: function(id){
var strBuffer = new StringBuffer();
this.getallnew(strBuffer,id);
this.getalldelete(strBuffer,id);
this.getallupdate(strBuffer,id);
data = strBuffer.toString();
return data.substr(0, data.length - 1);
},
getElementByNameInTable:function(id,elementName){
var $objs = $('#' + id).find("tr[class!='rowtodelete'][class!='template'] input[name='"+elementName+"']");
return $objs.toArray();
},
getAllSelectTableData:function(id){
var self = this;
var obj = $('#' + id);
var strBuffer = new StringBuffer();
$.each(obj.find("tr[class!='rowtodelete'] th>input:checked"), function(i, o) {
var tro = $(o).parent().parent()[0];
for (var j=0; j < tro.cells.length; j++){
for(var z =0 ; z < tro.cells[j].children.length; z++ ){
el = tro.cells[j].children[z];
self.filterElement(el,strBuffer,'checked',id);
}
}
});
var data = strBuffer.toString();
return data.substr(0, data.length - 1);
},
backdataSet:function(tablename,data){
var obj = $("[name='"+tablename+"']");
var el ='';
$.each(obj.find("tr.rowtoadd"), function(i, o) {
for (var j=0; j < o.cells.length; j++){
for(var z =0 ; z < o.cells[j].children.length; z++ ){
el = o.cells[j].children[z];
var elname = el.name;
if((data[tablename])[i][elname]){
$(el).val((data[tablename])[i][elname]);
}
}
}
$(o).removeClass("rowtoadd");
});
},
getallnew: function(strBuffer,id) {
var self = this;
var obj = $('#' + id);
var el = '';
$.each(obj.find("tr.rowtoadd"), function(i, o) {
for (var j=0; j < o.cells.length; j++){
for(var z =0 ; z < o.cells[j].children.length; z++ ){
el = o.cells[j].children[z];
self.filterElement(el,strBuffer,'insert',id);
}
}
});
},
getalldelete: function(strBuffer,id) {
var self = this;
var obj = $('#' + id);
var el = '';
$.each(obj.find("tr.rowtodelete"), function(i, o) {
for (var j=0; j < o.cells.length; j++){
for(var z =0 ; z < o.cells[j].children.length; z++ ){
el = o.cells[j].children[z];
self.filterElement(el,strBuffer,'delete',id);
}
}
});
},
getallupdate: function(strBuffer,id) {
var self = this;
var obj = $('#' + id);
$.each(obj.find("tr.rowtoupdate:visible"), function(i, o) {
for (var j=0; j < o.cells.length; j++){
for(var z =0 ; z < o.cells[j].children.length; z++ ){
el = o.cells[j].children[z];
self.filterElement(el,strBuffer,'update',id);
}
}
});
},
filterElement:function(element,strBuffer,status,id){
el = element;
disabled = element.disabled;
name = element.name;
val = element.value; if (!disabled && name){
switch (el.type)
{
case 'select-one':
case 'select-multiple':
for (var j = 0; j < el.options.length; j++) {
if (el.options[j].selected) {
if (navigator.userAgent.indexOf("MSIE")>0) {
strBuffer.append(status);
strBuffer.append('_');
strBuffer.append(id);
strBuffer.append('_');
strBuffer.append(encodeURIComponent(name));
strBuffer.append('=');
strBuffer.append(encodeURIComponent(el.options[j].attributes['value'].specified ? el.options[j].value : el.options[j].text));
strBuffer.append('&');
}
else {
strBuffer.append(status);
strBuffer.append('_');
strBuffer.append(id);
strBuffer.append('_');
strBuffer.append(encodeURIComponent(name));
strBuffer.append('=');
strBuffer.append(encodeURIComponent(el.options[j].hasAttribute('value') ? el.options[j].value : el.options[j].text));
strBuffer.append('&');
}
}
}
break;
case 'radio':
case 'checkbox':
if (el.checked) {
strBuffer.append(status);
strBuffer.append('_');
strBuffer.append(id);
strBuffer.append('_');
strBuffer.append(encodeURIComponent(name));
strBuffer.append('=');
strBuffer.append(encodeURIComponent(val));
strBuffer.append('&');
}else{
strBuffer.append(status);
strBuffer.append('_');
strBuffer.append(id);
strBuffer.append('_');
strBuffer.append(encodeURIComponent(name));
strBuffer.append('=');
strBuffer.append(encodeURIComponent('off'));
strBuffer.append('&');
}
break;
case 'file': case undefined: case 'reset': case 'button': break;
case 'submit':
default:
if (el.prikey){
strBuffer.append(status);
strBuffer.append('_');
strBuffer.append(id);
strBuffer.append('_');
strBuffer.append(encodeURIComponent(name));
strBuffer.append('=');
strBuffer.append(encodeURIComponent(element.realvalue));
strBuffer.append('&');
}else{
strBuffer.append(status);
strBuffer.append('_');
strBuffer.append(id);
strBuffer.append('_');
strBuffer.append(encodeURIComponent(name));
strBuffer.append('=');
strBuffer.append(encodeURIComponent(val));
strBuffer.append('&');
}
break;
}
}
}
});
Class("TableCtrl",
{
init: function(id) {
this.id = id;
this.initbindevent(id);
},
initbindevent : function(id){
var obj = $('#' + id).find("input[type!=checkbox],select,textarea");
$.each(obj, function(i, o) {
$(o).change(function() {
var $tr = $(o).parent().parent().eq(0);
if(!$tr.hasClass("template"))
$(o).parent().parent().eq(0).addClass("rowtoupdate");
});
});
},
setTableNameToElement: function(id){
var obj = $('#' + id).find("input[type!=checkbox],select,textarea");
$.each(obj, function(i, o) {
if(o.name){
o.name = id+"_"+o.name;
}
});
},
addrow: function(id) {
var $tr = $('#' + id).find("tr.template")
.clone(true)
.removeClass("template")
.addClass("rowtoadd")
.appendTo($('#' + id))
.toggle();
$tr.find("input[type!=checkbox],select,textarea").each( function(){
this.id=this.name+$('#' + id)[0].rows.length;
var cssclass= $(this).attr("class");
if(cssclass.indexOf("ignore")>=0){
var ss = cssclass.replace("ignore,","");
$(this).removeClass(cssclass).addClass(ss);
}
});
},
removerow: function(id) {
var obj = $('#' + id);
$.each(obj.find("tr.rowtoadd td>input:checked"), function(i, o) {
$(o).parent().parent().eq(0).remove();
});
$.each(obj.find("td>input:checked"), function(i, o) {
$(o).parent().parent().eq(0).addClass("rowtodelete").hide();
});
},
checkall: function(id) {
var obj = $('#' + id);
var checked = obj.find("th>input[type='checkbox']:first").get(0).checked;
$.each(obj.find("th>input[type='checkbox']:visible"), function(i, o) {
o.checked = checked;
});
},
getTableData: function(id){
var strBuffer = new StringBuffer();
this.getallnew(strBuffer,id);
this.getalldelete(strBuffer,id);
this.getallupdate(strBuffer,id);
data = strBuffer.toString();
return data.substr(0, data.length - 1);
},
getElementByNameInTable:function(id,elementName){
var $objs = $('#' + id).find("tr[class!='rowtodelete'][class!='template'] input[name='"+elementName+"']");
return $objs.toArray();
},
getAllSelectTableData:function(id){
var self = this;
var obj = $('#' + id);
var strBuffer = new StringBuffer();
$.each(obj.find("tr[class!='rowtodelete'] th>input:checked"), function(i, o) {
var tro = $(o).parent().parent()[0];
for (var j=0; j < tro.cells.length; j++){
for(var z =0 ; z < tro.cells[j].children.length; z++ ){
el = tro.cells[j].children[z];
self.filterElement(el,strBuffer,'checked',id);
}
}
});
var data = strBuffer.toString();
return data.substr(0, data.length - 1);
},
backdataSet:function(tablename,data){
var obj = $("[name='"+tablename+"']");
var el ='';
$.each(obj.find("tr.rowtoadd"), function(i, o) {
for (var j=0; j < o.cells.length; j++){
for(var z =0 ; z < o.cells[j].children.length; z++ ){
el = o.cells[j].children[z];
var elname = el.name;
if((data[tablename])[i][elname]){
$(el).val((data[tablename])[i][elname]);
}
}
}
$(o).removeClass("rowtoadd");
});
},
getallnew: function(strBuffer,id) {
var self = this;
var obj = $('#' + id);
var el = '';
$.each(obj.find("tr.rowtoadd"), function(i, o) {
for (var j=0; j < o.cells.length; j++){
for(var z =0 ; z < o.cells[j].children.length; z++ ){
el = o.cells[j].children[z];
self.filterElement(el,strBuffer,'insert',id);
}
}
});
},
getalldelete: function(strBuffer,id) {
var self = this;
var obj = $('#' + id);
var el = '';
$.each(obj.find("tr.rowtodelete"), function(i, o) {
for (var j=0; j < o.cells.length; j++){
for(var z =0 ; z < o.cells[j].children.length; z++ ){
el = o.cells[j].children[z];
self.filterElement(el,strBuffer,'delete',id);
}
}
});
},
getallupdate: function(strBuffer,id) {
var self = this;
var obj = $('#' + id);
$.each(obj.find("tr.rowtoupdate:visible"), function(i, o) {
for (var j=0; j < o.cells.length; j++){
for(var z =0 ; z < o.cells[j].children.length; z++ ){
el = o.cells[j].children[z];
self.filterElement(el,strBuffer,'update',id);
}
}
});
},
filterElement:function(element,strBuffer,status,id){
el = element;
disabled = element.disabled;
name = element.name;
val = element.value; if (!disabled && name){
switch (el.type)
{
case 'select-one':
case 'select-multiple':
for (var j = 0; j < el.options.length; j++) {
if (el.options[j].selected) {
if (navigator.userAgent.indexOf("MSIE")>0) {
strBuffer.append(status);
strBuffer.append('_');
strBuffer.append(id);
strBuffer.append('_');
strBuffer.append(encodeURIComponent(name));
strBuffer.append('=');
strBuffer.append(encodeURIComponent(el.options[j].attributes['value'].specified ? el.options[j].value : el.options[j].text));
strBuffer.append('&');
}
else {
strBuffer.append(status);
strBuffer.append('_');
strBuffer.append(id);
strBuffer.append('_');
strBuffer.append(encodeURIComponent(name));
strBuffer.append('=');
strBuffer.append(encodeURIComponent(el.options[j].hasAttribute('value') ? el.options[j].value : el.options[j].text));
strBuffer.append('&');
}
}
}
break;
case 'radio':
case 'checkbox':
if (el.checked) {
strBuffer.append(status);
strBuffer.append('_');
strBuffer.append(id);
strBuffer.append('_');
strBuffer.append(encodeURIComponent(name));
strBuffer.append('=');
strBuffer.append(encodeURIComponent(val));
strBuffer.append('&');
}else{
strBuffer.append(status);
strBuffer.append('_');
strBuffer.append(id);
strBuffer.append('_');
strBuffer.append(encodeURIComponent(name));
strBuffer.append('=');
strBuffer.append(encodeURIComponent('off'));
strBuffer.append('&');
}
break;
case 'file': case undefined: case 'reset': case 'button': break;
case 'submit':
default:
if (el.prikey){
strBuffer.append(status);
strBuffer.append('_');
strBuffer.append(id);
strBuffer.append('_');
strBuffer.append(encodeURIComponent(name));
strBuffer.append('=');
strBuffer.append(encodeURIComponent(element.realvalue));
strBuffer.append('&');
}else{
strBuffer.append(status);
strBuffer.append('_');
strBuffer.append(id);
strBuffer.append('_');
strBuffer.append(encodeURIComponent(name));
strBuffer.append('=');
strBuffer.append(encodeURIComponent(val));
strBuffer.append('&');
}
break;
}
}
}
});
解决方案 »
- 能否把javascript函数暴露在页面?
- web.xml配置
- 请教:JSF页面传递参数,后如何显示出来?
- ireport3.7.6报错,Chart theme 'generic' not found.
- 如何搭建STRUTS的环境?
- 这个JSP日历,非闰年的2月份一选择就自动跳到3月份,求助是什么原因啊
- 请问:JavaBean和Servlet在Eclipse中怎样编译?
- 关于配置tomcat,怎样才能只输入IP地址就能访问如 (127.0.0.1)
- 关于设置jsp页面为首页的问题
- How to connection Oracle database in Servlet????Thanks!!!
- 请教各位大神关于hibernate中many-to-many的问题
- 一个java与PPT的问题
当行数超过300条读取很慢
$("#nsrlxDm").removeClass("required");
var params = {
formName : "submitform"
};
if (Ctais.ValidatorCtrl.validate(params)== false) {
return;
}
$("#commitButton").attr("disabled","true");
var param = Ctais.TableCtrl.getAllSelectTableData("fsdxTable");
var options = {
url : "/Dxpt001Dxlr/saveDxxx.pfv",
dataparam : param,
formName : 'submitform',
sucess_callback : function(data) {
if (data.message != null && data.message != "") {
Ctais.msg.show({
style : "warning",
message : data.message
});
}
}
};
Ctais.AjaxCtrl.ajax(options);
}
加粗调用的顶部的代码getAllSelectTableData方法 读取table表如图
[/b]
直接把table读到一个数组里然后再一把提交不行么?