文辉居士

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编辑  收藏  举报

导航


我是有底线的赠送场