FineUI 官方论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

本论坛已关闭(禁止注册、发帖和回复)
请移步 三石和他的朋友们

FineUI首页 WebForms - MVC & Core - JavaScript 常见问题 - QQ群 - 十周年征文活动

FineUI(开源版) 下载源代码 - 下载空项目 - 获取ExtJS - 文档 在线示例 - 版本更新 - 捐赠作者 - 教程

升级到 ASP.NET Core 3.1,快、快、快! 全新ASP.NET Core,比WebForms还简单! 欢迎加入【三石和他的朋友们】(基础版下载)

搜索
查看: 13687|回复: 13
打印 上一主题 下一主题

要分組和鎖定列很簡單,主要是ExtJS是支持的。只要糾正/...

[复制链接]
跳转到指定楼层
楼主
发表于 2014-4-25 15:34:06 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式
要分組和鎖定列很簡單,主要是ExtJS是支持的。只要糾正/替換一下產生的JS就可以了。
1.不修改FineUI空間本身,方便日後升級;
2.只找下JS做修正,簡單容易。

先增加幾個函數:
  1. public static class GridHelp
  2.     {
  3. /// <summary>
  4.         /// Grid功能重置
  5.         /// </summary>
  6.         public static Dictionary<string, string> GridReset = new Dictionary<string, string>();

  7.         /// <summary>
  8.         /// Grid欄位鎖定(類似Excel列凍結)
  9.         /// </summary>
  10.         /// <param name="g">表格</param>
  11.         /// <param name="ColumnID">唯一標識</param>
  12.         public static void GridFieldLock(FineUI.Grid g, String[] ColumnIDs)
  13.         {
  14.             String GridFieldLockMark = "{1C1A60AC-9E4B-4688-991F-BE95290BD1E9}";
  15.             String GridFieldUnLockMark = "{1D1CE2BE-C0E1-4DFB-A3AA-FF30A8DE73A5}";
  16.             foreach (GridColumn gc in g.Columns)
  17.             {
  18.                 g.FindColumn(gc.ColumnID).HeaderText += GridFieldUnLockMark;
  19.             }
  20.             foreach (String gid in ColumnIDs)
  21.             {
  22.                 g.FindColumn(gid).HeaderText = g.FindColumn(gid).HeaderText.Replace(GridFieldUnLockMark, "");
  23.                 g.FindColumn(gid).HeaderText += GridFieldLockMark;
  24.             }

  25.             GridReset.Add(GridFieldLockMark + """, "",locked:true,lockable:false");
  26.             GridReset.Add(GridFieldUnLockMark + """, "",lockable:false");
  27.         }

  28.         /// <summary>
  29.         /// Grid設置分組
  30.         /// </summary>
  31.         /// <param name="g">表格</param>
  32.         /// <param name="FirstColumnID">第一列ColumnI</param>
  33.         /// <param name="GroupColumnID">需要分組列的ColumnI</param>
  34.         /// <param name="Collapsed">是否不展開</param>
  35.         public static void GridFieldGroup(FineUI.Grid g, String FirstColumnID, String GroupColumnID, Boolean Collapsed)
  36.         {
  37.             string GridMark = "features:[{ftype:'grouping',groupHeaderTpl:'X1',hideGroupedHeader:true,enableGroupingMenu:false,startCollapsed:X2}],";
  38.             GridMark = GridMark.Replace("X1", "{name}").Replace("X2", Collapsed ? "true" : "false");
  39.             GridReset.Add("id:"" + g.ClientID + "",", "id:"" + g.ClientID + ""," + GridMark);

  40.             GridMark = ("Ext.create('Ext.data.ArrayStore',{fields:[{name:"X"}").Replace("X", FirstColumnID);
  41.             GridReset.Add(GridMark, GridMark.Replace("fields:", ("groupField:'X',fields:").Replace("X", GroupColumnID)));
  42.         }
  43.     }
复制代码
然後重寫WebFrom頁面事件:
  1. protected override void Render(System.Web.UI.HtmlTextWriter writer)
  2. {
  3.             StringWriter sw = new StringWriter();
  4.             base.Render(new System.Web.UI.HtmlTextWriter(sw));
  5.             String html = sw.ToString();

  6.             if (GridHelp.GridReset.Count > 0)
  7.             {
  8.                 foreach (KeyValuePair<string, string> dict in GridHelp.GridReset)
  9.                 {
  10.                     html = html.Replace(dict.Key, dict.Value);
  11.                 }
  12.             }

  13.             writer.Write(html);
  14.         }
复制代码
OK,接下來直接使用:
            if (!IsPostBack)
            {

                GridHelp.GridFieldLock(Grid1, new string[] { "f1", "f2", "f3", "f4" });
                GridHelp.GridFieldGroup(Grid1, "f1", "fx", true);

            }
沙发
 楼主| 发表于 2014-5-7 22:32:08 | 显示全部楼层
本帖最后由 Herry 于 2014-5-7 22:36 编辑

4版,不修改FineUI本身,要用protected override void Render(System.Web.UI.HtmlTextWriter writer)调整,protected override void Render(System.Web.UI.HtmlTextWriter writer) 可以放在BasePage里面。web.config中FineUI的Debug设置为false.
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|FineUI 官方论坛 ( 皖ICP备2021006167号-1 )

GMT+8, 2024-5-12 16:38 , Processed in 0.048166 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表