Gridview 在ExtJS 4.1.3中选中复选框时,如何禁用/灰显除顶部空白行和复选框模型之外的整个网格
我有一个带有复选框选择模型的Gridview 在ExtJS 4.1.3中选中复选框时,如何禁用/灰显除顶部空白行和复选框模型之外的整个网格,gridview,extjs,extjs4,extjs4.1,Gridview,Extjs,Extjs4,Extjs4.1,我有一个带有复选框选择模型的网格,只要我选中任何复选框,就会在网格顶部和标题行下方添加一个空行。当选中checkbox时,我想禁用/灰显除顶部空白行(第1行)和复选框模型(第1列)之外的整个网格。 我试过使用grid.disable(true)但它禁用了整个网格 如何限制第一行和第一列 这是我的代码: var mystore = new Ext.data.ArrayStore({ fields: datastore.fields, data: datastore.arrData
网格
,只要我选中任何复选框,就会在网格顶部和标题行下方添加一个空行。当选中checkbox
时,我想禁用/灰显除顶部空白行(第1行)和复选框模型(第1列)之外的整个网格。
我试过使用grid.disable(true)
但它禁用了整个网格
如何限制第一行和第一列
这是我的代码:
var mystore = new Ext.data.ArrayStore({
fields: datastore.fields,
data: datastore.arrData
});
var sm = Ext.create('Ext.selection.CheckboxModel', {
mode: 'SIMPLE',
checkOnly: true,
renderer: function (v, p, record) {
if (record.raw[record.raw.length - 1] == '')
return '<div class="d-icon-right-list info-icon" > </div>';
else
return '<div class="x-grid-row-checker"> </div>';
},
listeners: {
selectionchange: function (sm, selected, eOpts) {
listCB = selected;
var gridID = Ext.getCmp('CiEditGrid');
if (selected.length > 0) {
gridID.getView().removeRowCls(0, 'hidden');
gridID.getView().addRowCls(0, 'first_row');
} else {
gridID.getView().addRowCls(0, 'hidden');
}
},
beforeselect: function (selModel, record, index) {
var gridID = Ext.getCmp('CiEditGrid');
popupIndex = index;
if (!((ColumnIndex == undefined || ColumnIndex == 0)))
return false;
},
beforedeselect: function (selModel, record, index) {
if (!((ColumnIndex == undefined || ColumnIndex == 0) || (index == 0 && ColumnIndex != 0)))
return false;
}
}
});
Ext.tip.QuickTipManager.init();
var CiGrid = Ext.create('Ext.grid.Panel', {
store: mystore,
border: false,
columns: datastore.columns,
selType: 'cellmodel',
selModel: sm,
id: 'CiEditGrid',
height: 775,
columnLines: true,
enableColumnHide: false,
viewConfig: {
getRowClass: function (record, rowIndex, rowParams, store, index) {
if (listCB.length == 0 && rowIndex == 0 && record.raw[record.raw.length - 1] == '') {
return "hidden";
} else if (listCB.length != 0 && rowIndex == 0 && record.raw[record.raw.length - 1] == '')
return "first_row";
},
forceFit: false,
deferEmptyText: false,
emptyText: '<div class="emptyTextClass">' + noRecordsFoundMsg + '</div>'
},
lockedViewConfig: {
emptyText: ''
},
listeners: {
afterrender: function (grid, eOpts) {
var gridIndxArray = grid.columns;
for (var i = 0; i < gridIndxArray.length; i++) {
var Indx = i - 1;
if (Indx == -1)
Indx = 0;
ColumnIndexArray.push({
dataIndx: gridIndxArray[i].dataIndex,
StoreIndx: Indx
});
}
lastDataIndex = ColumnIndexArray[ColumnIndexArray.length - 1].dataIndx;
},
columnmove: function (ct, column, fromIdx, toIdx) {
isColumnreconfigured = true;
},
itemmouseenter(grid, record, item, index, e, eOpts) {
if (index == 0)
Ext.fly(item).set({
'data-qtip': MultiEditRowTooltip
});
},
sortchange(ct, column, direction, eOpts) {
console.log(column, ct);
},
itemclick: function (data, record, item, index, e, eOpts) { // data,td, cellIndex, record, tr, rowIndex,e,eOpts
popupIndex = index;
var position = data.getPositionByEvent(e);
ColumnIndex = position.column;
RowIndex = position.row;
if (index == 0) {
multiCol.push({
colIndex: ColumnIndex
});
}
EditedValues.push({
colvalue: ColumnIndex,
rowvalue: popupIndex
});
if (isColumnreconfigured) {
for (var i = 0; i < ColumnIndexArray.length; i++) {
if (this.getView().getGridColumns()[ColumnIndex + 2].dataIndex == ColumnIndexArray[i].dataIndx) {
ColumnIndex = ColumnIndexArray[i].StoreIndx;
break;
}
}
}
var colHeader = this.columns[ColumnIndex + 1];
if ((typeof (colHeader.editor) != 'undefined' && colHeader.editor.xtype == 'textareafield') || (typeof (colHeader.field) != 'undefined' && colHeader.field.xtype == 'textareafield')) {
var header = colHeader.text;
var dataindex = colHeader.dataIndex;
var isReadonly = colHeader.isReadonly;
maxLengthForPopup = colHeader.length;
dataIndexForPopup = dataindex;
var old = this.getStore().data.getAt(index).get(dataindex);
showExpansionWindow(record, old, header, maxLengthForPopup, isReadonly);
}
}
},
cls: 'custom-dirty',
layout: 'fit',
border: false,
autoWidth: true,
plugins: [cellEditing],
renderTo: 'grid'
});
var mystore=new Ext.data.ArrayStore({
字段:datastore.fields,
数据:datastore.arrData
});
var sm=Ext.create('Ext.selection.CheckboxModel'{
模式:“简单”,
checkOnly:对,
渲染器:函数(v、p、记录){
if(record.raw[record.raw.length-1]='')
返回“”;
其他的
返回“”;
},
听众:{
selectionchange:功能(sm、selected、eOpts){
listCB=已选择;
var gridID=Ext.getCmp('CiEditGrid');
如果(已选定。长度>0){
gridID.getView().removeowcls(0,“隐藏”);
gridID.getView().addRowCls(0,“第一行”);
}否则{
gridID.getView().addRowCls(0,“隐藏”);
}
},
beforeselect:功能(选择模型、记录、索引){
var gridID=Ext.getCmp('CiEditGrid');
popupIndex=指数;
如果(!((ColumnIndex==undefined | | ColumnIndex==0)))
返回false;
},
beforedeselect:函数(选择模型、记录、索引){
如果(!((ColumnIndex==未定义的| | ColumnIndex==0)| |(index==0&&ColumnIndex!=0)))
返回false;
}
}
});
Ext.tip.QuickTipManager.init();
var CiGrid=Ext.create('Ext.grid.Panel'{
商店:mystore,
边界:错,
columns:datastore.columns,
selType:'cellmodel',
型号:sm,
id:“CiEditGrid”,
身高:775,
专栏:没错,
enableColumnHide:false,
视图配置:{
getRowClass:函数(记录、行索引、行参数、存储、索引){
if(listCB.length==0&&rowIndex==0&&record.raw[record.raw.length-1]==“”){
返回“隐藏”;
}else if(listCB.length!=0&&rowIndex==0&&record.raw[record.raw.length-1]='')
返回“第一行”;
},
forceFit:false,
deferEmptyText:false,
清空文本:“”+noRecordsFoundMsg+“”
},
lockedViewConfig:{
emptyText:'
},
听众:{
afterrender:函数(网格、eOpts){
var gridIndxArray=grid.columns;
对于(var i=0;i
提供一个代码,显示您的工作,并具体描述问题所在。@MarthyM添加了代码,我在这里添加了CB模型,并在选择任何CB时添加了一个特殊样式的行。现在我想在选中任何复选框后立即禁用整个网格,但只有CB selection列和特殊样式的行应该是可编辑的。请提供一个代码来显示您的工作,并具体描述问题所在。@MarthyM添加了代码,在这里,我添加了CB模型,并在选择任何CB时添加了一个特殊样式的行。现在我想去