Ext.Grid之记录用户使用习惯—隐藏列

Ext.Grid的强大功能想必用过Ext的园友们都体会到,可以隐藏列,可以拖放,可以排序等等,但是如果用户隐藏了某一些列后,下次登录时还是要看到上次隐藏后的列该怎么办呢?这就涉及到一个用户使用习惯的问题。想到记录用户习惯,当然首选使用Cookie。但是问题来了,在什么时候记录Cookie?什么事件触发后我们去写Cookie?其实最完美的当然就是在隐藏列这一事件(暂且叫它事件吧,具体的我也不太清楚Ext隐藏列的原理)触发时把剩下的列写入Cookie,但是小生才疏学浅,没有找到这个“隐藏列”事件,没法重写,只好另辟蹊径。反反复复试了Grid自带的方法比如:Close,BeforeClose,打算在用户关闭Grid的时候记录,但是没有效果,最后才找到beforedestroy这一事件,匪夷所思,关闭grid的时候不是触发beforeclose或者close,偏偏来个beforedestroy(英文就是摧毁,销毁),难道是Ext的人的命名习惯?不解。说到这里思路就清楚了,实现原理及步骤如下:
1、在用户关闭Grid时,触发BeforeDestroy事件,判断那些列是隐藏的,写入Cookie:
 grid.on("beforedestroy", CloseWriteCookie, grid);
 // 按用户习惯,隐藏某列
 if (boolHasClosedGrid == false)// 首次浏览
 {
  HiddenMyColumn(grid, varHiddenColumn);
  // alert(varHiddenColumn);
 }
 // 关闭grid但未关闭浏览器
 else {
  HiddenMyColumn(grid, varHiddenColumnColseGrid);
 }
 1//写入CooKie事件
 2
 3function CloseWriteCookie(obj) {
 4 var cms = obj.getColumnModel(); // 获得网格的列模型
 5 var strHiddenColoumnIndex = "";// 存储当前网格已经显示的列名(列名之间用 "," 分隔)
 6 // alert(cms.getColumnCount());
 7 for (var i = 0; i < cms.getColumnCount(); i++{// 处理当前显示的列
 8
 9  if (cms.isHidden(i) && cms.getDataIndex(i) != ""{// 判断是否是隐藏列
10   strHiddenColoumnIndex += Ext.util.Format.trim(i) + ",";// 获得列序号数字从0开始
11  }

12 }

13 // 把隐藏列存到Cookie中的同时返回隐藏列的值。
14 Ext.Ajax.request({
15    timeout : 3000000,
16    url : '/ajax/SetUserColumnCookie.aspx',
17    params : "ParaCkUserColumn=Write&UserHiddenColumn="
18      + strHiddenColoumnIndex,
19    success : function(response, options) {
20     Ext.MessageBox.hide();
21     varHiddenColumnColseGrid = response.responseText// 把最新的隐藏列赋值给全局变量varHiddenColumnColseGrid
22     // alert(varHiddenColumnColseGrid);
23     boolHasClosedGrid = true;// 设置关闭grid但未关闭浏览器为真
24    }
,
25    failure : function(response, options) {
26     Ext.Msg.alert('错误', Ext.util.JSON
27         .decode(response.responseText).data.msg);
28
29    }

30   }

31
32 )
33}

34
35

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);

   }
  })

 1 // 隐藏列函数
 2 function HiddenMyColumn(vargrid, varColumnIndex) {
 3 
 4     if (varColumnIndex != "") {
 5         var cms = vargrid.getColumnModel(); // 获得网格的列模型
 6         var strarrayUserColumn = new Array();
 7         strarrayUserColumn = varColumnIndex.split(",");
 8         for (var i = 0; i < strarrayUserColumn.length; i++) {
 9             cms.setHidden(strarrayUserColumn[i], true);// 隐藏列模型
10         }
11     }
12 }

实现效果如下:不能上传图片了,提示空间不足什么的。下次贴图。欢迎各位批评指正。如果有更好的实现方法,请您不吝赐教。

 附上完整的JS文件吧,后台aspx,cs文件就不贴了,有需要联系我
TotalJS.js

var ds;
var varHiddenColumn = "";
var boolHasClosedGrid = false;
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 QueryWebTraceByAll() {
    
var varDefaultState = "";
    Ext.BLANK_IMAGE_URL 
= 'extjs/resources/images/default/s.gif';
    Ext.QuickTips.init();
    
// var fm = Ext.form;
    var sm = new Ext.grid.CheckboxSelectionModel();
    
var cm = new Ext.grid.ColumnModel([new Ext.grid.RowNumberer(), sm, {
                header : 
'编号',
                width : 
40,
                dataIndex : 
'Id',
                sortable : 
true
            }
{
                header : 
'域名',
                width : 
100,
                dataIndex : 
'HostName',
                renderer : change,
                sortable : 
true

            }
{
                header : 
'流量',
                width : 
50,
                dataIndex : 
'PageView',
                sortable : 
true
            }
{
                header : 
'测试域名',
                width : 
100,
                dataIndex : 
'TestHostName',
                renderer : change,
                sortable : 
true
            }
{
                header : 
'服务器IP',
                width : 
140,
                dataIndex : 
'WebSpace',
                sortable : 
true
            }
{
                header : 
'空间用户名',
                width : 
100,
                dataIndex : 
'WebSpaceUserName',
                sortable : 
true
            }
{
                header : 
'空间名',
                width : 
100,
                dataIndex : 
'WebSpaceNumber',
                sortable : 
true
            }
{
                header : 
"Ftp密码",
                width : 
100,
                dataIndex : 
'FtpPwd',
                sortable : 
true
            }
,
            
{
                header : 
'备案号',
                width : 
140,
                dataIndex : 
'BeiAn',
                sortable : 
true
            }
,// renderer:renderFoo,

            
{
                header : 
'域名服务商',
                width : 
140,
                dataIndex : 
'HostNameSP',
                sortable : 
true
            }
,// renderer:renderFoo,

            
{
                header : 
'域名注册时间',
                width : 
140,
                dataIndex : 
'HostNameRegDate',
                sortable : 
true
            }
,// renderer:renderFoo,

            
{
                header : 
'域名到期时间',
                width : 
140,
                dataIndex : 
'HostNameExpireDate',
                sortable : 
true
            }
,// renderer:renderFoo,

            
{
                header : 
'类型',
                width : 
50,
                dataIndex : 
'WebType',
                sortable : 
true
            }
{
                header : 
'主关键字',
                width : 
100,
                dataIndex : 
'KeyWords',
                sortable : 
true
            }
{
                header : 
'副关键词',
                width : 
100,
                dataIndex : 
'SubKeyWords',
                sortable : 
true
            }
{
                header : 
'状态',
                width : 
100,
                dataIndex : 
'State',
                sortable : 
true
            }
{
                header : 
'分配人',
                width : 
100,
                dataIndex : 
'Assumer',
                sortable : 
true
            }
{
                header : 
'制作人',
                width : 
40,
                dataIndex : 
'Producer',
                sortable : 
true
            }
{
                header : 
'模板',
                width : 
56,
                dataIndex : 
'Template',
                sortable : 
true
            }
{
                header : 
'负责人',
                width : 
40,
                dataIndex : 
'Maintainer',
                sortable : 
true
            }
{
                header : 
'组长',
                width : 
40,
                dataIndex : 
'TeamLeader',
                sortable : 
true
            }
{
                header : 
'维护人51la',
                width : 
65,
                dataIndex : 
'MaintainerStatisId',
                sortable : 
true
            }
{
                header : 
'网站51la',
                width : 
51,
                dataIndex : 
'StatisId',
                sortable : 
true
            }
{
                header : 
'密码',
                width : 
45,
                dataIndex : 
'MaintainerFivelaPwd',
                sortable : 
true
            }
{
                header : 
'收录',
                width : 
30,
                dataIndex : 
'Baidu',
                sortable : 
true
            }
{
                header : 
'分配时间',
                width : 
100,
                dataIndex : 
'ToTeamLeaderDate',
                sortable : 
true
            }
{
                header : 
'制作时间',
                width : 
100,
                dataIndex : 
'StartDoDate',
                sortable : 
true
            }
{
                header : 
'完成时间',
                width : 
100,
                dataIndex : 
'EndDoDate',
                sortable : 
true
            }
{
                header : 
'审核时间',
                width : 
100,
                dataIndex : 
'CheckDate',
                sortable : 
true
            }
{
                header : 
'组员评分',
                width : 
100,
                dataIndex : 
'Score',
                sortable : 
true
            }
{
                header : 
'分配人评分',
                width : 
100,
                dataIndex : 
'AssumerScore',
                sortable : 
true
            }
{
                header : 
'综合评分',
                width : 
100,
                dataIndex : 
'TotalScore',
                sortable : 
true
            }
]);

    
// proxy直接去读取josn数据【
    ds = new Ext.data.Store({
                proxy : 
new Ext.data.HttpProxy({
                            url : 
'WebTask/WebsiteGeneral/ShowWebSiteAsZWToLeader.aspx'
                        }
),
                reader : 
new Ext.data.JsonReader({
                            totalProperty : 
'totalProperty',
                            root : 
'Head',
                            successProperty : 
'success'
                        }
, [{
                                    name : 
'Id',
                                    mapping : 
'Id',
                                    type : 
'int'
                                }
{
                                    name : 
'HostName',
                                    mapping : 
'HostName',
                                    type : 
'string'
                                }
{
                                    name : 
'TestHostName',
                                    mapping : 
'TestHostName',
                                    type : 
'string'
                                }
{
                                    name : 
"FtpPwd",
                                    mapping : 
"FtpPwd",
                                    type : 
"string"
                                }
{
                                    name : 
'WebSpaceNumber',
                                    mapping : 
'WebSpaceNumber',
                                    type : 
'string'
                                }
{
                                    name : 
'WebSpaceUserName',
                                    mapping : 
'WebSpaceUserName',
                                    type : 
'string'
                                }
{
                                    name : 
'BeiAn',
                                    mapping : 
'BeiAn',
                                    type : 
'string'
                                }
{
                                    name : 
'State',
                                    mapping : 
'State',
                                    type : 
'string'
                                }
{
                                    name : 
'WebSpace',
                                    mapping : 
'WebSpace',
                                    type : 
'string'
                                }
{
                                    name : 
'Assumer',
                                    mapping : 
'Assumer',
                                    type : 
'string'
                                }
{
                                    name : 
'HostNameSP',
                                    mapping : 
'HostNameSP',
                                    type : 
'string'
                                }
{
                                    name : 
'HostNameRegDate',
                                    mapping : 
'HostNameRegDate',
                                    type : 
'string'
                                }
{
                                    name : 
'HostNameExpireDate',
                                    mapping : 
'HostNameExpireDate',
                                    type : 
'string'
                                }
{
                                    name : 
'MaintainerStatisId',
                                    mapping : 
'MaintainerStatisId',
                                    type : 
'string'
                                }
{
                                    name : 
'StatisId',
                                    mapping : 
'StatisId',
                                    type : 
'string'
                                }
{
                                    name : 
'MaintainerFivelaPwd',
                                    mapping : 
'MaintainerFivelaPwd',
                                    type : 
'string'
                                }
{
                                    name : 
'Baidu',
                                    mapping : 
'Baidu',
                                    type : 
'string'
                                }
{
                                    name : 
'PageView',
                                    mapping : 
'PageView',
                                    type : 
'string'
                                }
{
                                    name : 
'WebType',
                                    mapping : 
'WebType',
                                    type : 
'string'
                                }
{
                                    name : 
'KeyWords',
                                    mapping : 
'KeyWords',
                                    type : 
'string'
                                }
{
                                    name : 
'SubKeyWords',
                                    mapping : 
'SubKeyWords',
                                    type : 
'string'
                                }
{
                                    name : 
'StartTaskDate',
                                    mapping : 
'StartTaskDate',
                                    type : 
'string'
                                }
{
                                    name : 
'CheckDate',
                                    mapping : 
'CheckDate',
                                    type : 
'string'
                                }
{
                                    name : 
'StartDoDate',
                                    mapping : 
'StartDoDate',
                                    type : 
'string'
                                }
{
                                    name : 
'EndDoDate',
                                    mapping : 
'EndDoDate',
                                    type : 
'string'
                                }
{
                                    name : 
'TeamLeader',
                                    mapping : 
'TeamLeader',
                                    type : 
'string'
                                }
{
                                    name : 
'Maintainer',
                                    mapping : 
'Maintainer',
                                    type : 
'string'
                                }
{
                                    name : 
'Producer',
                                    mapping : 
'Producer',
                                    type : 
'string'
                                }
{
                                    name : 
'Template',
                                    mapping : 
'Template',
                                    type : 
'string'
                                }
{
                                    name : 
'ToTeamLeaderDate',
                                    mapping : 
'ToTeamLeaderDate',
                                    type : 
'string'
                                }
{
                                    name : 
'ToTeamDate',
                                    mapping : 
'ToTeamDate',
                                    type : 
'string'
                                }
{
                                    name : 
'Score',
                                    mapping : 
'Score',
                                    type : 
'string'
                                }
{
                                    name : 
'AssumerScore',
                                    mapping : 
'AssumerScore',
                                    type : 
'string'
                                }
{
                                    name : 
'TotalScore',
                                    mapping : 
'TotalScore',
                                    type : 
'string'
                                }
]),
                remoteSort : 
true
            }
);

    
var store = new Ext.data.Store({
        proxy : 
new Ext.data.HttpProxy({
                    url : 
"WebTask/WebsiteGeneral/GetEmployeeAsGroup.aspx?type=z"
                }
), // 数据源
        reader : new Ext.data.JsonReader({
                    totalProperty : 
"totalPorperty",
                    root : 
"Head",
                    successProperty : 
'success',
                    fields : [
{
                                name : 
'id',
                                mapping : 
'id',
                                type : 
'string'
                            }
{
                                name : 
'username',
                                mapping : 
'username',
                                type : 
'string'
                            }
]
                }
)
            
// 如何解析
    }
);

    store.load();

    
var storeddl = new Ext.data.Store({
        proxy : 
new Ext.data.HttpProxy({
                    url : 
"WebTask/WebsiteGeneral/GetParaList.aspx?MenuId=0010"
                }
), // 下拉框数据源
        reader : new Ext.data.JsonReader({
                    totalProperty : 
"totalPorperty",
                    root : 
"Head",
                    successProperty : 
'success',
                    fields : [
{
                                name : 
'ParaName',
                                mapping : 
'ParaName',
                                type : 
'string'
                            }
{
                                name : 
'ParaValue',
                                mapping : 
'ParaValue',
                                type : 
'string'
                            }
]
                }
)
            
// 如何解析
        }
);
    
// 状态数据集,非数据库
    var DdlState = new Ext.data.SimpleStore({
                fields : [
'ParaName''ParaValue'],
                data : [[
'所有'''], ['准备制作''准备制作'], ['正在制作中''正在制作中'],
                        [
'已制作完成''已制作完成'], ['已审核''已审核'],
                        [
'已分配给组长''已分配给组长'], ['已分配给组员''已分配给组员']]
            }
);
    storeddl.load();

    
// 网站制作状态静态数据
    var liebie = new Ext.form.ComboBox({
                id : 
'dropdownliststate',
                emptyText : 
'请选择网站制作状态',
                mode : 
'local'// 数据模式,local为本地模式
                readOnly : true,
                hidden : 
true,
                displayField : 
'ParaName',
                valueField : 
'ParaValue',
                triggerAction : 
'all',
                name : 
'identity'// 作为form提交时传送的参数
                store : DdlState,
                listeners : 
{
                    select : 
{
                        fn : 
function(combo, record, index) {
                            
// 先清理数据
                            ds.removeAll();
                            ds.baseParams 
= {
                                paraname : grid.topToolbar.items.items[
0].value,
                                paravalue : record.get(
'ParaValue')
                            }
;

                            ds.load(
{
                                        callback : 
function(r, options, success) {
                                            
if (success == false{
                                                
// 如果没有数据就清空
                                                ds.removeAll();
                                                Ext.MessageBox.alert(
'提示',
                                                        
'Sorry,没有符合条件的数据');
                                            }

                                        }

                                    }
);
                            ds.reload(
{
                                        params : 
{
                                            start : 
0,
                                            limit : 
20
                                        }

                                    }
);
                        }

                    }

                }

            }
);

    
var grid = new Ext.grid.EditorGridPanel({
        renderTo : 
'grid3',
        ds : ds,
        sm : sm,
        stripeRows : 
true,

        cm : cm,
        width : 
700,
        height : 
280,

        loadMask : 
true,
        tbar : 
new Ext.Toolbar({
            items : [
new Ext.form.ComboBox({
                        id : 
'ComSearch',
                        emptyText : 
'请选择搜索项目',
                        mode : 
'remote'// 数据模式,local为本地模式
                        readOnly : true,
                        displayField : 
'ParaName',
                        valueField : 
'ParaValue',

                        triggerAction : 
'all',
                        name : 
'identity'// 作为form提交时传送的参数
                        store : storeddl,
                        listeners : 
{
                            select : 
{
                                fn : 
function(combo, record, index) {
                                    
if (record.get('ParaValue'== 'State'{
                                        liebie.show();
                                        Ext.get(
'txtsearchword')
                                                .setDisplayed(
'none');
                                        Ext.get(
'btnSearch')
                                                .setDisplayed(
'none');
                                    }
 else {
                                        liebie.hide();
                                        Ext.get(
'txtsearchword')
                                                .setDisplayed(
'block');
                                        Ext.get(
'btnSearch')
                                                .setDisplayed(
'block');
                                    }

                                }

                            }

                        }


                    }
),

                    
// 网站状态静态数据
                    liebie, new Ext.form.TextField({
                        id : 
'txtsearchword',
                        fieldLabel : 
'搜索文字',
                        width : 
150,
                        name : 
'SearchWord',
                        allowBlank : 
false,
                        blankText : 
'请输入搜索文字',
                        listeners : 
{
                            specialKey : 
function(field, e) {
                                
if (e.getKey() == Ext.EventObject.ENTER) {
                                    ds.removeAll();
                                    ds.baseParams 
= {
                                        paraname : grid.topToolbar.items.items[
0].value,
                                        paravalue : Ext.get(
'txtsearchword').dom.value
                                    }
;

                                    ds.load(
{
                                        callback : 
function(r, options, success) {
                                            
if (success == false{
                                                Ext.MessageBox.alert(
'提示',
                                                        
'Sorry,没有符合条件的数据');
                                            }

                                        }

                                    }
);
                                    ds.reload(
{
                                                params : 
{
                                                    start : 
0,
                                                    limit : 
20
                                                }

                                            }
);
                                }

                            }

                        }

                    }
),

                    
{
                        id : 
'btnSearch',
                        text : 
'搜索',
                        iconCls : 
'search',
                        handler : 
function() {

                            ds.removeAll();

                            ds.baseParams 
= {
                                paraname : grid.topToolbar.items.items[
0].value,
                                paravalue : Ext.get(
'txtsearchword').dom.value
                            }
;

                            ds.load(
{
                                        callback : 
function(r, options, success) {
                                            
if (success == false{
                                                
// 如果为空就清空原来数据

                                                Ext.MessageBox.alert(
'提示',
                                                        
'Sorry,没有符合条件的数据');
                                            }

                                        }

                                    }
);
                            ds.reload(
{
                                        params : 
{
                                            start : 
0,
                                            limit : 
20
                                        }

                                    }
);
                        }

                    }
]
        }
),

        bbar : 
new Ext.PagingToolbar({
            pageSize : 
20,
            store : ds,
            displayInfo : 
true,
            displayMsg : 
'显示第 {0} 条到 {1} 条记录,一共 {2} 条',
            emptyMsg : 
"没有记录",
            items : [
{
                text : 
'导出Excel',
                iconCls : 
'add',
                tooltip : 
"点击导出Excel文件",
                handler : 
function() {
                    
// 导出Excel文件
                    var cms = grid.getColumnModel(); // 获得网格的列模型
                    var strColoumnNames = "";// 存储当前网格已经显示的列名(列名之间用 "," 分隔)
                    var strColoumnNamesHeader = "";
                    
var strAllSql = "";
                    
for (var i = 0; i < cms.getColumnCount(); i++{// 处理当前显示的列
                        if (!cms.isHidden(i) && cms.getDataIndex(i) != ""{// 判断是否是隐藏列及是否列名为空(因为如果有选择框和默认序号,则为空)
                            strColoumnNames = Ext.util.Format.trim(cms
                                    .getDataIndex(i));
// 获得列名
                            // 判断是否是综合评分这列,如果是要把列名换成原始的
                            strColoumnNamesHeader = escape(Ext.util.Format
                                    .trim(cms.getColumnHeader(i)));
// 获得列标题
                            strAllSql += strColoumnNames + " as "
                                    
+ strColoumnNamesHeader + ",";// 拼接Sql查询语句,格式
                            // 字段 as
                            // 中文标题
                        }

                    }

                    
// self表示在本窗口打开
                    var varparaname = grid.topToolbar.items.items[0].value;
                    
var varparavalue = Ext.util.Format.trim(Ext
                            .get(
'txtsearchword').dom.value);
                    
var varparanametext = Ext.get('ComSearch').dom.value
                    
var gridtoexcelwindow;
                    
if (typeof(varparaname) == "undefined"{
                        varparaname 
= "State";
                        varparavalue 
= varDefaultState;
                        varparanametext 
= "默认首要业务数据";
                    }

                    gridtoexcelwindow 
= window
                            .open(    
"Ajax/GridToExcel.aspx?sql=" + strAllSql
                                            
+ "&FromTable=WebTrace&ParaName="
                                            
+ escape(varparaname)
                                            
+ "&ParaNameText="
                                            
+ escape(varparanametext)
                                            
+ "&ParaValue="
                                            
+ escape(varparavalue), "_self",
                                    
"menubar=0,scrollbar=0,resizable=0,channelmode=0,location=0,status=0");
                    gridtoexcelwindow.focus();
                }

            }
]
        }
)
    }
);
    
// el:指定html元素用于显示grid
    grid.render();// 渲染表格
    // 

    ds.baseParams 
= {
        paraname : 
'State',
        paravalue : varDefaultState
    }
;
    ds.load(
{
                callback : 
function(r, options, success) {
                    
if (success == false{
                        ds.removeAll();
                        Ext.MessageBox.alert(
'提示''Sorry,没有符合条件的数据');
                    }

                }

            }
);
    ds.reload(
{
                params : 
{
                    start : 
0,
                    limit : 
20
                }

            }
);
    
var win = new Ext.Window({
        layout : 
'fit',
        maximizable : 
true,
        collapsible : 
true,
        width : 
1000,
        height : 
600,
        modal : 
true,
        title : 
"公共查询界面:在这里您可以查询您需要的网站并可以导出所需数据<br/><font color='#FF0000'><b>小提示:<br/>1、您可以点击任一列名右侧出现的箭头,在出现的下拉框中,隐藏某些您不需要的列。您再次进入此页面时将保持您上次保留的列。<br/>2、搜索支持回车键。<br/>3、在窗体底部有'导出Excel'按钮,你可以导出您需要的数据</b></font>",
        items : grid
    }
);
    win.show();
    grid.on(
"afteredit", afterEdit1, grid);
    grid.on(
"beforedestroy", CloseWriteCookie, grid);

    
// 按用户习惯,隐藏某列
    if (boolHasClosedGrid == false)// 首次浏览
    {
        HiddenMyColumn(grid, varHiddenColumn);
        
// alert(varHiddenColumn);
    }

    
// 关闭grid但未关闭浏览器
    else {
        HiddenMyColumn(grid, varHiddenColumnColseGrid);
    }

}

// 隐藏列函数
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[i], 
true);// 隐藏列模型
        }

    }

}

// 关闭时写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);

                }

            }


    )
}

// 编辑时的检验是否合法,不合法不更新
function afterEdit1(obj) {
    
var r = obj.record;// 获取被修改的行
    var l = obj.field;// 获取被修改的列
    var o = obj.originalValue;
    
var id = r.get("Id");
    
var lie = r.get(l);
    Ext.Ajax.request(
{
                url : 
'/Ajax/WebsiteOper.aspx?type=3',
                params : 
"id=" + id + "&name=" + l + '&value=' + lie
            }
);
    
var cursor = this.getBottomToolbar().cursor;
    ds.load(
{
                params : 
{
                    start : cursor,
                    limit : 
this.getBottomToolbar().pageSize
                }

            }
);

}


function DEL(Obj) {
    
var cursor = Obj.getBottomToolbar().cursor;
    ds.load(
{
                params : 
{
                    start : cursor,
                    limit : Obj.getBottomToolbar().pageSize
                }

            }
);
}

原文地址:https://www.cnblogs.com/showker/p/1554162.html