FineUI Grid 缓存列显示隐藏状态
当列表字段过多时,需要隐藏掉一些,但是再次打开页面又显示出来了,FineUI没有提供缓存功能,那么自己动手,打开【ext-part2.js】找到
“if (Ext.grid.column.RowNumberer)”这里添加一个if代码如下
if(Ext.grid.header.Container){ Ext.override(Ext.grid.header.Container,{ onColumnCheckChange:function(checkItem, checked){ var header =Ext.getCmp(checkItem.headerId); header[checked ?'show':'hide'](); F.customEvent("HeaderSelectedEven:id="+checkItem.headerId+";state="+checked+";grid="+this.grid.id); } }); }
效果是这样的
然后在页面的load事件里写
下面我们看WebBase里面的代码
/// <summary> /// 功能描述:保存dgv隐藏表头id /// 作 者:huangzh /// 创建日期:2015-11-20 14:16:06 /// 任务编号: /// </summary> /// <param name="strPageName">strPageName</param> /// <param name="strDgvName">strDgvName</param> /// <param name="strValues">strValues</param> public static void SaveDGVHideComs(string strPageName, string strDgvName, string strValues) { HttpCookie cookie = new HttpCookie(strPageName + "_" + strDgvName); cookie.Expires = DateTime.Now.AddMonths(12); cookie.Value = strValues; HttpContext.Current.Response.Cookies.Add(cookie); } /// <summary> /// 功能描述:获取DGV隐藏表头id /// 作 者:huangzh /// 创建日期:2015-11-20 14:15:55 /// 任务编号: /// </summary> /// <param name="strPageName">strPageName</param> /// <param name="strDgvName">strDgvName</param> /// <returns>返回值</returns> public static string GetDGVHideComs(string strPageName, string strDgvName) { HttpCookie cookie = HttpContext.Current.Request.Cookies[strPageName + "_" + strDgvName]; if (cookie != null) { return cookie.Value; } else { return ""; } } /// <summary> /// 功能描述:检查DGV隐藏表头 /// 作 者:huangzh /// 创建日期:2015-11-20 14:15:34 /// 任务编号: /// </summary> /// <param name="strPageName">strPageName</param> /// <param name="strDgvName">strDgvName</param> /// <param name="streventArgument">streventArgument</param> public static void CheckDGVHideComs(string strPageName, string strDgvName, string streventArgument) { if (streventArgument.StartsWith("HeaderSelectedEven:")) { string strValues = streventArgument.Substring("HeaderSelectedEven:".Length); string[] values = strValues.Split(';'); string strid = values[0].Split('=')[1]; string strstate = values[1].Split('=')[1]; string strDgvIds = values[2].Split('=')[1]; string[] names = strDgvIds.Split('_'); if (strDgvName == names[names.Length - 1]) { string strValue = GetDGVHideComs(strPageName, strDgvName); List<string> lstValues = strValue.Split(',').ToList(); if (strstate.ToLower() == "true") { if (lstValues.Contains(strid)) { lstValues.Remove(strid); } } else { if (!lstValues.Contains(strid)) { lstValues.Add(strid); } } strValue = string.Join(",", lstValues); SaveDGVHideComs(strPageName, strDgvName, strValue); } } } /// <summary> /// 功能描述:设置dgv隐藏表头 /// 作 者:huangzh /// 创建日期:2015-11-20 14:20:11 /// 任务编号: /// </summary> /// <param name="dgv">dgv</param> /// <param name="strPageName">strPageName</param> public static void SetDGVHideCom(FineUI.Grid dgv, string strPageName) { string strValue = GetDGVHideComs(strPageName, dgv.ID); if (!string.IsNullOrEmpty(strValue)) { dgv.HiddenColumns = strValue.Split(','); } }
代码就这么多,我们看下效果吧
作者:冰封一夏
出处:http://www.cnblogs.com/bfyx/
HZHControls官网:http://www.hzhcontrols.cn
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,
且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
GitHub:https://github.com/kwwwvagaa/NetWinformControl
码云:https://gitee.com/kwwwvagaa/net_winform_custom_control.git