ExtJS中GridPanel默认选中某些列
解决方法:
filterItem_grid.getSelectionModel().selectRow(rowIndex,true);
filterItem_grid为默认的grid名,rowIndex表示被选中的列号(第几行被选中,开始行=0)
示例:
{dataIndex : 'selectFlag',header:'是否选中',sortable:true,
renderer: function(v, metaData, record, rowIndex, colIndex, store) {
if(v==1){ // 选择逻辑 --- 该值==1选中,否则不处理
filterItem_grid.getSelectionModel().selectRow(rowIndex,true);
}
return v;
}
}
如果不想使用该列的值做判断,也可以在其他列的的时候做判断,只需要根据
renderer: function(v, metaData, record, rowIndex, colIndex, store) {
if(record.data['selectFlag']==1){ // 选择逻辑 --- 该值==1选中,否则不处理
filterItem_grid.getSelectionModel().selectRow(rowIndex,true);
}
return v;
}
注意: -- 第二个参数一定要选中哦
selectRow( Number row , Boolean keepExisting ) : void
选择一行。Selects a row. 选择一行。Selects a row. 参数项:row : Number
要选择行的索引。The index of the row to selectkeepExisting : Boolean
(optional) (可选的)表示为保持现有的选区。True to keep existing selections2.具体的应用,我加了 ajax做了相应的业务处理。columns : [{
header : 'roleCode',
width : 30,
hidden : true,
dataIndex : 'roleCode',
renderer : function(v, metaData, record, rowIndex, colIndex,
store) {
var userNo_ = Ext.getCmp("RightUserNo_Id").getValue();
var oldCodes_ = [];
// 动态返回当前用户拥有哪些角色信息
Ext.Ajax.request({
method : 'POST',
url : context
+ '/mainManage/roleManager_doShowRightCurrentUsersOwnRoles.action?userNo='
+ userNo_,
success : function(response, opts) {
// 处理后
var roleCodes = Ext.decode(response.responseText);
if (isNotVal(roleCodes)) {
Ext.Array.each(roleCodes, function(name, index,
countriesItSelf) {
code_ = roleCodes[index].roleCode;// 当前tab对象
oldCodes_.push(code_);
if (record.data['roleCode'] == code_) { // 选择逻辑
Ext.getCmp("RightRoleInfoGridPanel_Id").getSelectionModel().select(rowIndex, true);
}
});
var oldCodes_Ids = "" + oldCodes_.join(",");
//Ext.Msg.alert("msg",oldCodes_Ids);
Ext.getCmp("RightOldRoleCodes_Id").setValue(oldCodes_Ids);
}
},
failure : function(response, opts) {
Ext.Msg.alert("信息提示", "后台获取数据失败!");
}
});
return v;
}
}, {
header : '角色列表',
width : 400,
dataIndex : 'roleName'
}]
});