asp.net gridview中用checkbox全选的几种实现的区别_asp.net教程-查字典教程网
asp.net gridview中用checkbox全选的几种实现的区别
asp.net gridview中用checkbox全选的几种实现的区别
发布时间:2016-12-29 来源:查字典编辑
摘要:1、ext的gridExt.grid.CheckboxColumn=function(config){config.id=config.id...

1、ext的grid

Ext.grid.CheckboxColumn = function(config){

config.id = config.id || 'ck';

config.columnId = config.id || 'ck';

return Ext.applyIf(config||{},{

init:function(grid){

grid.on('cellclick', this.onCellClick, this);

grid.on('headerclick',this.onHeaderClick,this);

}

,dataIndex:''

,header:'<div></div>'

,enableHeaderControl:true

,masterValue:false

,width:40

,align:'center'

,fixed:true

,headerUnchecked:'<div></div>'

,headerChecked:'<div></div>'

,onHeaderClick:function(grid,columnIndex,event){

var cIndex = grid.getColumnModel().getIndexById(this.columnId);

var column = grid.getColumnModel().getColumnById(this.columnId);

if(cIndex == columnIndex && this.enableHeaderControl!==false){

var newValue = (typeof column.masterValue == "undefined")?this.masterValue:!column.masterValue;

column.masterValue = newValue;

var newHeader = newValue==true?this.headerChecked:this.headerUnchecked;

if(column.header != newHeader){

column.header = newValue==true?this.headerChecked:this.headerUnchecked;

grid.getColumnModel().fireEvent("headerchange",cIndex,newHeader);

}

grid.getView().updateHeaders();

if(this.dataIndex != ''){

var ct = grid.getStore().getCount();

for(var i=0;i<ct;i++){

this.toggleCheck(grid,i,columnIndex,newValue);

}

}

}

}

,onCellClick:function(grid,rowIndex,columnIndex,event){

var cIndex = grid.getColumnModel().getIndexById(this.columnId);

if(cIndex == columnIndex) this.toggleCheck(grid,rowIndex,columnIndex);

}

,toggleCheck:function(grid,rowIndex,columnIndex,newValue){

var td = grid.getView().getCell(rowIndex,columnIndex);

var record = grid.getStore().getAt(rowIndex);

var startValue = record.data[this.dataIndex];

if(this.dataIndex != ''){

var newValue = newValue||!Ext.fly(td).hasClass('x-grid3-check-col-on');

var e = {

grid: grid,

record: record,

field: this.dataIndex,

value: newValue,

originalValue: startValue,

row: rowIndex,

column: columnIndex,

cancel: false

};

if( (grid.fireEvent("beforeedit",e)!==false && !e.cancel)&&

(grid.fireEvent("validateedit",e)!==false && !e.cancel)){

record.set(this.dataIndex,newValue);

delete e.cancel;

grid.fireEvent("afteredit",e);

};

//计算选择列

//SetTransportWAndB()

//SetTransportInfo(grid);

}

}

,renderer:function(value,meta,record){

meta.css = 'x-grid3-check-col-td x-grid3-check-col';

if(value==true || value=='true' || value=='on' || value==1 || value=='1'|| value=="True"|| value=="true") meta.css += ' x-grid3-check-col-on';

return '<div> </div>';

}

});

}

这是ext的grid单写checkbox框的实现,后面说明几种情况的效率

2、gridview的两种实现

a、

function CA1(){

var frm=document.Form1;

for (var i=0;i<frm.elements.length;i++)

{

var e=frm.elements[i];

if ((e.name!='Checkbox2') && (e.type=='checkbox'))

{

e.checked=frm.Checkbox2.checked;

if (frm.Checkbox2.checked)

{

hL(e);

}//endif

else

{

dL(e);

}//endelse

}//endif

}//endfor

}

b、

function selectAll(oCheckbox)

{

for(i=1;i<document.all.GridViewGoodsInfo.rows.length;i++)

{

//document.all.GridView1.rows(i).cell(0).children(0).checked=oCheckbox.checked;

GridViewGoodsInfo.rows[i].cells[0].getElementsByTagName("INPUT")[0].checked = oCheckbox.checked; }

}

加上ext的grid自带选择框的四种方案中,ext自带方式效率最低,显示500多条记录全选需要时间最长,需要2分钟多钟,才能完成,修改为第一种方案后,1000条数据用时12秒多,在gridview的两种方法里,a的用时最少1000条5秒钟完成,b的稍慢些,6-7秒完成,以上是测试结果,环境不同,效果也不同,这仅是我个人测试的结果,供大家参考

相关阅读
推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
  • 大家都在看
  • 小编推荐
  • 猜你喜欢
  • 最新asp.net教程学习
    热门asp.net教程学习
    编程开发子分类