x291944973
x291944973
采纳率60%
2016-01-11 03:49

mvc模式的extjs4中pannel多选问题(在线等 急)

已采纳

需求:我需要在查询列表面板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高手指教。
  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

1条回答

  • showbo GoCityPass新加坡曼谷通票 5年前

    Ext.widget创建新的对象,又不是你显示的,给控件widget起id,通过Ext.getCmp获取

    点赞 1 评论 复制链接分享

相关推荐