投放本站广告请联系:
extjscn#126.com
ExtJs4新发现05_grid获取checkbox的值
grid每列前面加checkbox: (我用的而是第一种,后台一个string数组接受就可以了)
一般的grid使用一个Ext.grid.ColumnModel就可以了,要加入一个多选的列,一种方法是加入一个多选列模板Ext.grid.CheckboxSelectionModel:
var sm = new Ext.grid.CheckboxSelectionModel(); var cm = new Ext.grid.ColumnModel( [ sm, {id:'company',header: "Company", width: 60, sortable: true, dataIndex: 'company'}, ] );
另外,实例化EditorGridPanel时还必须指定这个sm为selModel.
如果不指定EditorGridPanel的selModel,将无法勾选checkbox。
grid = new Ext.grid.rGridPanel( { id:'editGridTestAjax', width:700, height:500, el:'topic-grid', store:ds, cm:cm, clickToEdit:2,//双击后进入编辑状态 selModel:sm //这个 selModel 可简写为sm } );
获取checkbox的值
function modfiy(){ if (grid.getSelectionModel().hasSelection()){ var records=grid.getSelectionModel().getSelections(); var mycars=new Array(); for(var i=0;i<records.length;i++){ mycars[i]=records[i].data.xwbh; } alert(mycars.length); return mycars }else{ alert('请选中要操作的记录!'); } }; function deleteall(){ var values=modfiy(); Ext.MessageBox.confirm( "请确认", "是否要删除选中信息", function(button,text){ if(button=='yes'){ Ext.Ajax.request({ url:'news_query.do', method:'post', params:{values:values'}, success:function(req){ var responseObj = Ext.util.JSON.decode(req.responseText); if(responseObj.success == 'true'){ Ext.Msg.alert("成功提示", responseObj.infor); }else{ Ext.Msg.alert("错误提示", responseObj.infor); return; } } }); }else{ return; } }); } //处理checkbox的勾选事件 grid.getSelectionModel().on('rowselect', function(sm, rowIdx, r){ alert('勾选了checkbox后,获得选中行的name:'+grid.store.getAt(rowIdx).get('name')); }); //处理checkbox的取消勾选事件 grid.getSelectionModel().on('rowdeselect', function(sm, rowIdx, r){ alert('取消勾选checkbox后,获得的record 中的name:'+grid.store.getAt(rowIdx).get('name')); });
另一种方法是在ColumnModel中自己写一个checkbox列
function changeCheck(value,cellmeta,record,rowIndex,columnIndex,store){ return "<input type='checkbox' name='adds_checkbox' onclick=oneclick(this) id='adds_checkbox_'"+value+"></input>"; } //上面的oneclick方法定义在Ext.onReady()外面 var cm = new Ext.grid.ColumnModel( [ {//自定义的多选列 header:"<input id='allcheckbox' type='checkbox' onclick=checkall(this)></input>", dataIndex:'addsid', renderer:changeCheck, width:20, sortable:false }, ... ] );
grid每列前面加checkbox: (我用的而是第一种,后台一个string数组接受就可以了)
一般的grid使用一个Ext.grid.ColumnModel就可以了,要加入一个多选的列,一种方法是加入一个多选列模板Ext.grid.CheckboxSelectionModel:
var sm = new Ext.grid.CheckboxSelectionModel(); var cm = new Ext.grid.ColumnModel( [ sm, {id:'company',header: "Company", width: 60, sortable: true, dataIndex: 'company'}, ] );
另外,实例化EditorGridPanel时还必须指定这个sm为selModel.
如果不指定EditorGridPanel的selModel,将无法勾选checkbox。
grid = new Ext.grid.rGridPanel( { id:'editGridTestAjax', width:700, height:500, el:'topic-grid', store:ds, cm:cm, clickToEdit:2,//双击后进入编辑状态 selModel:sm //这个 selModel 可简写为sm } );
获取checkbox的值
function modfiy(){ if (grid.getSelectionModel().hasSelection()){ var records=grid.getSelectionModel().getSelections(); var mycars=new Array(); for(var i=0;i<records.length;i++){ mycars[i]=records[i].data.xwbh; } alert(mycars.length); return mycars }else{ alert('请选中要操作的记录!'); } }; function deleteall(){ var values=modfiy(); Ext.MessageBox.confirm( "请确认", "是否要删除选中信息", function(button,text){ if(button=='yes'){ Ext.Ajax.request({ url:'news_query.do', method:'post', params:{values:values'}, success:function(req){ var responseObj = Ext.util.JSON.decode(req.responseText); if(responseObj.success == 'true'){ Ext.Msg.alert("成功提示", responseObj.infor); }else{ Ext.Msg.alert("错误提示", responseObj.infor); return; } } }); }else{ return; } }); } //处理checkbox的勾选事件 grid.getSelectionModel().on('rowselect', function(sm, rowIdx, r){ alert('勾选了checkbox后,获得选中行的name:'+grid.store.getAt(rowIdx).get('name')); }); //处理checkbox的取消勾选事件 grid.getSelectionModel().on('rowdeselect', function(sm, rowIdx, r){ alert('取消勾选checkbox后,获得的record 中的name:'+grid.store.getAt(rowIdx).get('name')); });
另一种方法是在ColumnModel中自己写一个checkbox列
function changeCheck(value,cellmeta,record,rowIndex,columnIndex,store){ return "<input type='checkbox' name='adds_checkbox' onclick=oneclick(this) id='adds_checkbox_'"+value+"></input>"; } //上面的oneclick方法定义在Ext.onReady()外面 var cm = new Ext.grid.ColumnModel( [ {//自定义的多选列 header:"<input id='allcheckbox' type='checkbox' onclick=checkall(this)></input>", dataIndex:'addsid', renderer:changeCheck, width:20, sortable:false }, ... ] );
作者: middlekingt
原文: http://blog.csdn.net/middlekingt/article/details/8228577
- 要发表评论,请先登录