extjs gridpanel不能选中多行

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了extjs gridpanel不能选中多行相关的知识,希望对你有一定的参考价值。

var cm=new Ext.grid.ColumnModel([
new Ext.grid.RowNumberer(),
new Ext.grid.CheckboxSelectionModel(singleSelect:false),

header:"ID",dataIndex:"id",sortable: true
,
header:"用户名",dataIndex:"adminName",sortable: true
,
header:"密码",dataIndex:"adminPwd",sortable: true
,
header:"出生日期",dataIndex:"bornDate",sortable: true
,renderer:function(v)
return v.format("Y-m-d");

,
header:"邮箱",dataIndex:"email",sortable: true
,
header:"权限",dataIndex:"role",sortable: true

]);
不知道该怎么改?

第一、这个sm,必须在ColumnModel和Gridpanel里都有,而且是同一个,而且也不能和其他Gridpanel共用同一个SM。
第二、要想多选必须点复选框而不能点行。
第三、如果你的grid行支持拖拽那么也不能多选,这是Extjs的一个问题,貌似没法解决。
第四、如果以上三种都不行,你在选行的时候按住Shift或是ctrl就可以了!
参考技术A function deletefileItems()
var gsm = fileGrid.getSelectionModel();//获取选择列
var rows = gsm.getSelections();//根据选择列获取到所有的行
if (rows.length > 0)
//当有选择的数据的时候
for (var i = 0; i < rows.length; i++)
//循环迭代所有的选择的row
var row = rows[i];
var filePath = row.get('filePath');//这个就是你想要的
Ext.Ajax.request(
//省略ajax请求后台
);

else
Ext.Msg.alert('提示', '请选择要删除的记录');

;
说明:
var filePath = row.get('filePath');
利用row.get('字段名称');
可以获得你想要的字段值
参考技术B var sm = new Ext.grid.CheckboxSelectionModel();
var cm = new Ext.grid.ColumnModel([new Ext.grid.RowNumberer(), sm)
var grid = new Ext.grid.GridPanel(
cm:cm,
sm:sm
)
sm 必须有,如果只在cm中写了sm 复选框就不能多选。
如果只在grid中加了sm ,就不会显示复选框追问

我试了这种方法 但还是只能选择一个

追答

你确定是按我这种方式试了
在我这里可以选择多个,
看看你gridpanel里的属性

ExtJS 3.4.0 GridPanel 有条件地禁用行

【中文标题】ExtJS 3.4.0 GridPanel 有条件地禁用行【英文标题】:ExtJS 3.4.0 GridPanel conditional disabling of rows 【发布时间】:2013-07-08 06:57:15 【问题描述】:

我有一个带有 CheckColumn 的 GridPanel。如果在数据加载时未选中该复选框,我需要禁用整行,从而完全防止数据修改。我尝试在 viewConfig 中使用 getRowClass 方法如下:

        viewConfig: 
            getRowClass: function (record, rowIndex, rowPrms, ds) 
                //If the Sign-Off checkbox is unchecked, disable entire row.
                if (record.get('signOff') == 0) return 'disabled-row';
            
        

这不起作用。有什么指点吗?

【问题讨论】:

【参考方案1】:

反映您的变化。您需要在网格中包含一个配置,即disableSelection : true

【讨论】:

这仍然不能阻止我选中复选框。我也需要禁用复选框选择。【参考方案2】:

我发现 checkColumn 里面没有 checkBox 对象。它只播放使用 css 选中/取消选中的各种复选框图像。我创建了自己的禁用版本的复选框图像,添加了一些自定义 css,并有条件地将它们加载到 checkColumn.Prototype 的渲染器中。问题解决了!

【讨论】:

以上是关于extjs gridpanel不能选中多行的主要内容,如果未能解决你的问题,请参考以下文章

extjs gridpanel 操作行 得到选中行

extjs里如何自动选中第一行数据

ExtJs如何在Window窗口中加载页面上的GridPanel??

Extjs GridPanel在有分页的情况下服务端统计合计实现方式

ExtJS 3 - 始终在 GridPanel 列标题中显示菜单图标?

(Extjs)对于GridPanel的各种操作