需求:我需要在查询列表面板panel中添加多选项,并可以通过点击查询面板panel上的按钮获取查询列表面板的所有选中值。
现象:方法一、我使用selModel : new Ext.selection.CheckboxModel(),点击查询面板的按钮可以获取到多选值,通过弹出框显示出来,但是关闭弹出框以后,只能通过表头的多选框进行全选或取消全选,单击列表中的个别行或行前的多选框就没反应;
方法二、我使用selModel : {selType : 'checkboxmodel'},multiSelect:true,点击查询面板的按钮就获取不到多选值了,总提示获取到的值为空。
注意:获取选中项方法我使用的是Ext.widget("bfbRefundSettlementGridView").getSelectionModel().getSelection();不支持getSelections()方法,也不支持getSelection(),也不支持Ext.widget("bfbRefundSettlementGridView").getSelectionModel().getSelection()[0].data方法。
部分代码如下:
//定义组件
Ext.define('MB.view.bfbRefundSettlement.BfbRefundSettlementGridView', {
extend : "Ext.grid.Panel",
alias : 'widget.bfbRefundSettlementGridView',
store: "MB.store.BfbRefundSettlementStore",
selModel : {
selType : 'checkboxmodel'
},
multiSelect:true,//允许多选
autoRender:true,
columnLines: true,
width: '100%',
loadMask: true, // 读取数据时的遮罩和提示功能即加载loding...
frame: true,
resizable: true,
forceFit: false,
height:500,
initComponent : function() {
Ext.QuickTips.init();
var sm = new Ext.selection.CheckboxModel();
var me = this;
me.columns = [
{ text:'序号', xtype: 'rownumberer', width:50 },
{ header: '批次号', dataIndex: 'billNo',width: 150,align: 'center'},···
···
//controller中的按钮方法:
var grid = Ext.widget("bfbRefundSettlementGridView");
var records = grid.getSelectionModel().getSelection();
if(records.length==0){
Ext.MessageBox.show({
title:"提示",
msg:"请先选择您要操作的行!"
});
return;
}else{
for(var i = 0; i < records.length; i++){
ids += records[i].get("billNo");
if(i<records.length-1){
ids = ids + ",";
}
}
Ext.MessageBox.alert('提示',ids);
}
或者使用方法一 ,使得弹出提示框后仍可以选中获取消个别行,或者使用方法二,可以获取选中行。我看不出问题到底出在哪里,还请各位ext高手指教。