extjs中grid中checkbox的用法,ext中grid獲取checkbox的值
阿新 • • 發佈:2019-01-31
轉自:http://blog.csdn.net/simaweier/article/details/8111923
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;
}
});
}
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
} ]
);
亦或這樣寫:
我在用到這部分知識的時候是這樣寫的:
var sm = new Ext.grid.CheckboxSelectionModel({
// singleSelect: true,
listeners : {
// 選中
'rowselect' : function(grid, rowIndex, e) {
// 使用這種方法會在先點選最後一組資料的時候報錯
// var row=grid.getSelections();
// var val=row[rowIndex].get('id');
var grid = Ext.getCmp('shopGrid');
var val = grid.getStore().getAt(rowIndex).get('id');
sendUsersId.push(val);// 存放使用者id
// alert(sendUsersId.toString());
},
// 取消選中
'rowdeselect' : function(grid, rowIndex, e) {
var grid = Ext.getCmp('shopGrid');
var val = grid.getStore().getAt(rowIndex).get('id');
sendUsersId.remove(val);// 移除使用者id
// alert(sendUsersId.toString());
}
}
});