发现Ext中文官网论坛上一些Ext的好文章,真是相见恨晚啊,比自己看Document要快十倍,extit 简直是太伟大了。一点一点的学习,一点一点的摘抄到我的Blog,纯属收藏,急于看别的内容的朋友,请直接到论坛上去看:原文:http://www.cnblogs.com/mogen_yin/archive/2008/12/04/1347246.html

其实这篇所用到的代码在其它博客中都有完全一样的,可是有些朋友刚刚入手,你在一篇里实现了太多的功能,他们学习的复杂度就增加,所以,为了一个简单和清晰,我将以前实现过的示例剥离出来,仅仅就是一个实现绑定的功能。希望真的对你们有所帮助或者启发。
效果图如下:

显示列表页面的html代码

  1. <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="gridDynamic3.aspx.cs" Inherits="WebExt.Sample3.gridDynamic3" %>
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml" >
  4. <head id="Head1" runat="server">
  5. <title>动态生成GridPanel</title>
  6. <link rel="Stylesheet" type="text/css" href="../ExtJS/resources/css/ext-all.css" />
  7. <link rel="Stylesheet" type="text/css" href="../ExtJS/resources/css/xtheme-green.css" />
  8. <script type="text/javascript" src="../ExtJS/adapter/ext/ext-base.js"></script>
  9. <script type="text/javascript" src="../ExtJS/ext-all.js"></script>
  10. <script type="text/javascript" src="../ExtJS/ext-lang-zh_CN.js"></script>
  11. </head>
  12. <body>
  13. <form id="form1" runat="server">
  14. <div>
  15. <div id="grid_div"></div>
  16. <script type="text/javascript">
  17. //这里主要实现一个从后台获取数据列,然后动态添加到ColumnModel中,再也不用手动配置的方式
  18. function ready()
  19. {
  20. //声明函数变量
  21. var data;
  22. //动态添加列,这是关键代码
  23. var addColumn = function()
  24. {
  25. this.fields = '';
  26. this.columns = '';
  27. this.addColumns=function(name,caption)
  28. {
  29. if(this.fields.length > 0)
  30. {
  31. this.fields += ',';
  32. }
  33. if(this.columns.length > 0)
  34. {
  35. this.columns += ',';
  36. }
  37. this.fields += '{name:"' + name + '"}';
  38. this.columns += '{header:"' + caption + '",dataIndex:"' + name + '",width:100,sortable:true}';
  39. };
  40. };
  41. //从服务器端获取列,然后动态添加到ColumnModel中
  42. Ext.Ajax.request
  43. ({
  44. url:"jsonGridDynamic.aspx?param=column",
  45. success:function(response,option)
  46. {
  47. if(response.responseText=="")
  48. {
  49. return;
  50. }
  51. data = new addColumn();
  52. var res = Ext.util.JSON.decode(response.responseText);
  53. for(var i=0;i<res.length;i++)
  54. {
  55. for(var p in res[i])
  56. {
  57. data.addColumns(p,p);
  58. }
  59. }
  60. //动态生成GridPanel
  61. makeGrid();
  62. },
  63. failure:function()
  64. {
  65. Ext.Msg.alert("消息","查询出错---->请打开数据库查看数据表名字是否正确");
  66. }
  67. });
  68. //动态生成GridPanel
  69. var makeGrid = function()
  70. {
  71. var cm = new Ext.grid.ColumnModel(eval('([' + data.columns + '])'));
  72. cm.defaultSortable = true;
  73. var fields = eval('([' + data.fields + '])');
  74. var newStore = new Ext.data.Store
  75. ({
  76. proxy:new Ext.data.HttpProxy({url:"jsonGridDynamic.aspx?param=data"}),
  77. reader:new Ext.data.JsonReader({totalProperty:"totalPorperty",root:"root",fields:fields})
  78. });
  79. newStore.load({params:{start:0,limit:16}});
  80. var pagingBar = new Ext.PagingToolbar
  81. ({
  82. displayInfo:true,
  83. emptyMsg:"没有数据显示",
  84. displayMsg:"显示从{0}条数据到{1}条数据,共{2}条数据",
  85. store:newStore,
  86. pageSize:16
  87. });
  88. var gridPanel = new Ext.grid.GridPanel
  89. ({
  90. title:"动态生成grid",
  91. cm:cm,
  92. id:"grid_panel",renderTo:"grid_div",
  93. store:newStore,
  94. frame:true,
  95. border:true,
  96. layout:"fit",
  97. pageSize:16,
  98. width:500,
  99. height:400,
  100. viewConfig:{forceFit:true},
  101. bbar:pagingBar
  102. });
  103. };
  104. }
  105. Ext.onReady(ready);
  106. </script>
  107. </div>
  108. </form>
  109. </body>
  110. </html>

复制代码

jsonGridDynamic.aspx页面的html代码 再强调下 就一行 多余的务必删除 经常有人问我 前台获取数据总是提示少一个括弧,就是因为处理Ext请求的页面没有将多余的html代码删除掉

  1. <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="jsonGridDynamic.aspx.cs" Inherits="WebExt.Sample3.jsonGridDynamic" %>

复制代码

jsonGridDynamic.aspx.cs页面的后台代码

  1. public partial class jsonGridDynamic : System.Web.UI.Page
  2. {
  3. protected void Page_Load(object sender, EventArgs e)
  4. {
  5. #region 分页
  6. int pagesize = 20;
  7. int start = 1;
  8. string field, asc_desc;
  9. if (string.IsNullOrEmpty(Request["sort"]))
  10. {
  11. field = "ID";
  12. asc_desc = "desc";
  13. }
  14. else
  15. {
  16. field = Request["sort"];
  17. asc_desc = Request["dir"];
  18. }
  19. if (!string.IsNullOrEmpty(Request["limit"]))
  20. {
  21. pagesize = int.Parse(Request["limit"]);
  22. start = int.Parse(Request["start"]);
  23. }
  24. start = start / pagesize;
  25. start += 1;
  26. #endregion
  27. string param = Request["Param"];
  28. switch (param)
  29. {
  30. case "data":
  31. Response.Write(Select(field, asc_desc, pagesize, start));
  32. break;
  33. case "column":
  34. Response.Write(GetDataColumn());
  35. break;
  36. default:
  37. break;
  38. }
  39. }
  40. //获取数据
  41. string Select(string field, string asc_desc, int pagesize, int start)
  42. {
  43. string json = "";
  44. try
  45. {
  46. DataSet ds = ExtUtil.PaginationByTableName(field, asc_desc, pagesize, start, "TypeTable");//获取集合
  47. if (ds != null && ds.Tables[0].Rows.Count > 0)
  48. {
  49. json = ExtUtil.GetJsonString(ds);//获取Json字符串
  50. int count = ExtUtil.GetCountByTableName("TypeTable");//获取行数
  51. json = "{totalPorperty:" + count + ",root:" + json + "}";
  52. }
  53. }
  54. catch (Exception ee)
  55. {
  56. string error = ee.Message;
  57. }
  58. return json;
  59. }
  60. //获取数据列
  61. string GetDataColumn()
  62. {
  63. DataSet ds = ExtBusiness.GetMoreRow();//获取dataset集合
  64. //只要ds不为null,则不管该表是否有数据,都有数据列生成
  65. if (ds != null)
  66. {
  67. List<Hashtable> htList = new List<Hashtable>();
  68. foreach (DataColumn col in ds.Tables[0].Columns)
  69. {
  70. Hashtable ht = new Hashtable();
  71. ht.Add(col.ColumnName, col.ColumnName);
  72. htList.Add(ht);
  73. }
  74. try
  75. {
  76. string json = JavaScriptConvert.SerializeObject(htList);//获取Json字符串
  77. return json;
  78. }
  79. catch (Exception ee)
  80. {
  81. string error = ee.Message;
  82. }
  83. }
  84. return "";
  85. }
  86. }

复制代码

转载于:https://www.cnblogs.com/fmxyw/archive/2009/04/30/1447135.html

ext2.2打造全新功能grid系列--仅仅动态生成GridPanel相关推荐

  1. EXTJS学习系列提高篇:第二十五篇(转载)作者殷良胜,ext2.2打造全新功能grid系列--右键菜单篇...

    本文介绍如何在grid列表里 在某行上面单击右键弹出菜单的功能 先看看效果图: 如上图所示,具体菜单的功能没有去实现,这里和前几篇的后台都极为类似,有需要后台代码的朋友只需要浏览前几篇即可. 下面仅仅 ...

  2. grid系列--删除

    來源:http://www.cnblogs.com/wenjl520/archive/2008/12/23/1325655.html <!DOCTYPE html PUBLIC "-/ ...

  3. 用ExtJs+Linq+Wcf打造简单grid

    本系列文章列表 1)Ajax访问Xml Web Service的安全问题以及解决方案 2)Ajax与WCF交互-WCF之美 3) Ajax与Wcf交互-JSON 4) ExtJs与WCF交互:生成树 ...

  4. Ext2.0框架的Grid使用介绍(转)

     Ext2.0框架的Grid使用介绍 最近空闲时间在学习Ext2.0框架,只有一个字的感叹"强",我从未想到JS代码能够写出这么绚丽的Web页面出来,以前看到YUI,惊若天人,如今 ...

  5. Unity3D的坑系列:动态加载dll

    Unity3D的坑系列:动态加载dll 我现在参与的项目是做MMO手游,目标平台是Android和iOS,iOS平台不能动态加载dll(什么原因找乔布斯去),可以直接忽略,而在Android平台是可以 ...

  6. 音视频开发(2)---red5+java打造直播平台系列 初级

    red5+java打造直播平台系列 初级 red5+java打造直播平台系列 (搭建调测) 前言:如今各式各样的直播平台,像雨后春笋般冒出来.本系列重零开始,基于RED5为服务器,通过JAVA编写后台 ...

  7. [Ext JS 4] 实战之Grid, Tree Gird 动态添加列续(性能考虑)

    前言 延续: [Ext JS 4] 实战之Grid, Tree Gird 动态添加列 这一篇. 在上一篇中有提到在grid 中如何进行带隐藏栏位的动态添加方式.归纳一下思路就是: 先显示,后隐藏. 当 ...

  8. [Ext JS 4] 实战之Grid, Tree Gird 动态添加行

    前言 在 [Ext JS 4] 实战之Grid, Tree Gird 动态添加列 这一篇中,有介绍到如何动态添加一列 -- 设置新columns 后调用reconfigure 方法. 这里来承接这一篇 ...

  9. 在线报表设计实战系列 – 制作动态列与静态列混排的报表(5)

    在线报表设计实战系列 – 制作动态列与静态列混排的报表(5) 葡萄城报表是一套强大的报表开发和系统搭建工具,既能与您开发的报表软件项目紧密集成,也可独立部署运行,支持多数据源,具有无编码.灵活.稳定等 ...

最新文章

  1. 算法导论 6.2-5
  2. 白话Elasticsearch47-深入聚合数据分析之Cardinality Aggs-cardinality算法之优化内存开销以及HLL算法
  3. 一个例子探究jQuery的Ajax应用(一)
  4. 2、Flutter 的安装和idea配置
  5. 常用的web安全处理
  6. Linux基础命令---fold
  7. spring boot中的注解
  8. linux 0755,linux audit审计(7-1)--读懂audit日志
  9. 在python中对文件操作的一般步骤是_文件操作(一) 笔记------python
  10. db2如何锁定一张表_如何通过一张表,提高20%的工作效率?
  11. 联想拯救者R720笔记本换三星970 EVO PLUS 500G固态硬盘与加装联想内存条16GX2,固态硬盘降温设置方法
  12. 零成本、零流量,我是如何空手反套白狼?
  13. 每日一题系列:考拉有n个字符串,任意两个字符串长度都是不同的。考拉最近学习到两种字符串的排序方法
  14. 电脑开始菜单没有了关机选项,怎么办
  15. 工人滹沱河剧集ujiuedgfwer
  16. 筑梦数字时代,城链科技战略峰会西安站顺利落幕
  17. 智慧出击,浪潮云海为海上风电打个样
  18. JAVA spring hessian_Springboot写的Hessian例子
  19. python随堂检测4
  20. Cisco AnyConnect Client设置默认网关(域名+IP)

热门文章

  1. java super extends_Java继承extends与super关键字
  2. 自学java的注意,自学Java开发注意事项
  3. in最多可以放多少?_车子不开,最多可以停放多少天?维修工:别超过这个时间...
  4. 开发日记-20190828 关键词 读书笔记《Unix环境高级编程(第二版)》DAY 4
  5. Spark中Task,Partition,RDD、节点数、Executor数、core数目(线程池)、mem数
  6. 循环遍历Java字符串字符的规范方法——类似python for ch in string
  7. python中set和frozenset方法和区别
  8. DDos攻击,使用深度学习中 栈式自编码的算法
  9. OCWA提高组模拟赛一 Solution
  10. RabbitMQ Node.js 示例