EXTJS GRID COLUMN CODE Summary
/*
// value: 当前的值
// cellMeta: 单元格式ID
// record: 当前行的所有数据
// rowIndex: 当前行的行号(分页后的)
// columnIndex: 列号
// store: 数据集
*/
renderer:function(value, cellMeta, record, rowIndex, columnIndex, store)
{
// 得到创建者信息
var creator = record.data['card_admin'];
// 是否显示密码(boolean)
var isShowPassword = 自己的逻辑判断(creator);
return "<span style='color:#000000;'>"+isShowPassword ? value : ''+"</span>"}
}
EXTJS 动态改变grid列名与相应的值
function createRecordValue(){ //动态生成recordValue
var tempValue = new Array();
var j = 0;
tempValue[j] = {name:'UserId'};
for(var i = 0 ;i < amdValue.length;i++){
tempValue[++j] = {name: "N"+amdValue[i]}; //列名
tempValue[++j] = {name: "V"+amdValue[i]};//列名对应的值
}
return tempValue;
}
function createColumn(){//动态生成列名,amdValue为要显示的列的数组
var tempColumn = new Array();
var j = 0;
tempColumn[j] = {header:'身份证号',dataIndex:'UserId',sortable:true,renderer:getUserInfo};
for(var i = 0;i < amdValue.length;i++){
tempColumn[++j] = {header:"N"+amdValue[i],dataIndex:"V"+amdValue[i],id:"V"+amdValue[i],sortable:true};
}
return tempColumn;
}
//动态设置列名
var index = cm.getIndexById("V"+amdValue[i]);
var str = r[0].get("N"+amdValue[i]);//r[]后台返回的记录集;amdValue[i]是要显示的列的关键字
cm.setColumnHeader(index,str);
//刷新CM,STORE
grid.reconfigure(store, cm);
1、在用户关闭Grid时,触发BeforeDestroy事件,判断那些列是隐藏的,写入Cookie:
grid.on("beforedestroy", CloseWriteCookie, grid);
// 按用户习惯,隐藏某列
if (boolHasClosedGrid == false)// 首次浏览
{
HiddenMyColumn(grid, varHiddenColumn);
// alert(varHiddenColumn);
}
// 关闭grid但未关闭浏览器
else {
HiddenMyColumn(grid, varHiddenColumnColseGrid);
}
1//写入CooKie事件
function CloseWriteCookie(obj) {
var cms = obj.getColumnModel(); // 获得网格的列模型
var strHiddenColoumnIndex = "";// 存储当前网格已经显示的列名(列名之间用 "," 分隔)
// alert(cms.getColumnCount());
for (var i = 0; i < cms.getColumnCount(); i++) {// 处理当前显示的列
if (cms.isHidden(i) && cms.getDataIndex(i) != "") {// 判断是否是隐藏列
strHiddenColoumnIndex += Ext.util.Format.trim(i) + ",";// 获得列序号数字从0开始
}
}
// 把隐藏列存到Cookie中的同时返回隐藏列的值。
Ext.Ajax.request({
timeout : 3000000,
url : '/ajax/SetUserColumnCookie.aspx',
params : "ParaCkUserColumn=Write&UserHiddenColumn="
+ strHiddenColoumnIndex,
success : function(response, options) {
Ext.MessageBox.hide();
varHiddenColumnColseGrid = response.responseText// 把最新的隐藏列赋值给全局变量varHiddenColumnColseGrid
// alert(varHiddenColumnColseGrid);
boolHasClosedGrid = true;// 设置关闭grid但未关闭浏览器为真
},
failure : function(response, options) {
Ext.Msg.alert('错误', Ext.util.JSON
.decode(response.responseText).data.msg);
}
}
)
}
2、用户再次打开这个页面时先用Ajax读Cookie中的隐藏列,然后调用HiddenColumn函数,执行隐藏列。
Ext.Ajax.request({
timeout : 3000000,
url : '/ajax/SetUserColumnCookie.aspx',
params : "ParaCkUserColumn=Read",
success : function(response, options) {
Ext.MessageBox.hide();
varHiddenColumn = response.responseText
// alert(varHiddenColumn);
},
failure : function(response, options) {
Ext.Msg.alert('错误',
Ext.util.JSON.decode(response.responseText).data.msg);
}
})
// 隐藏列函数
function HiddenMyColumn(vargrid, varColumnIndex) {
if (varColumnIndex != "") {
var cms = vargrid.getColumnModel(); // 获得网格的列模型
var strarrayUserColumn = new Array();
strarrayUserColumn = varColumnIndex.split(",");
for (var i = 0; i < strarrayUserColumn.length; i++) {
cms.setHidden(strarrayUserColumn, true);// 隐藏列模型
}
}
}
posted on 2012-07-19 16:07 restService 阅读(456) 评论(0) 编辑 收藏 举报