热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

EasyUIDataGrid动态新增Toolbar

easyuidatagrid是一个弹性蛮大的元件,但是官方文件有点不足,是比较可惜的一点。下面,一条小龙会介绍一下,如何动态

easyui datagrid 是一个弹性蛮大的元件,但是官方文件有点不足,是比较可惜的一点。下面,一条小龙会介绍一下,如何动态新增 toolbar button。这个技巧读者可以举一反三应用在任何想动态新增的部分上。这边尽量简化好来介绍其中的关键点。

一般写 Javascript 应用的程式,实务上一条小龙 自己开发时都会希望能尽量把商业逻辑放在server 端来控制,client 端就是变成单纯的控件应用。这样的好处是后面比较好维护,因为后面在维护时,只要专注于 server 端的逻辑的变化就好,而不用 Client Server 两边比较来得知要如何改。


另一个好处是,让后续开发人员只需专注Server 端的开发技巧即可,而不必为了增加一个 button 这种常用到的功能,也要后端开发人员去了解 EasyUI 后才有办法去开发,如此一来就可以减少很多开发成本。

一般程式开发中,大家都知道要降低程式间的耦合性,也就是要降低程式间的关联性,尽量让各程式独立来发展,这个道理应用在这,就可以了解Client Server 端切割清楚,也会有助于,后续程式的稳定性。

下面,来介绍一下 EasyUI 的基本概念,也就是 EasyUI 的元件一定要先初始化,才能应用,而一但初始化,想再去改变它,就只能透过 EasyUI 元件所提供的 Function 来操作,一但没有对应 Function 可以操作,就只能想办法在一开始初始化中 就要定义好,以上是我们在操作 EasyUI 的重要观念。

要动态化操作前,首先要先知道如何用 静态网页来操作,没问题后,再来想办法用 后端程式 来产生相对应的 JS,以下就是静态网页的操作方式。

1 $(function () {
2 AddButton("btnAlert", "alert test", "icon-edit");
3 var config = {};
4 config.toolbar = toolbar;
5 $('#dg').datagrid(config);
6 loaddata();
7 });
8 var toolbar = [];
9 function AddButton(btnID, caption, icon) {
10 if (toolbar.length > 0) {
11 toolbar[toolbar.length] = "-";
12 }
13 toolbar[toolbar.length] = {
14 text: caption,
15 iconCls: icon
16 };
17 }
18
19 function loaddata() {
20 var rawData = { "total": 28, "rows": [
21 { "productid": "FI-SW-01", "unitcost": 10.00, "status": "P", "listprice": 36.50, "attr1": "Large", "itemid": "EST-1" },
22 { "productid": "K9-DL-01", "unitcost": 12.00, "status": "P", "listprice": 18.50, "attr1": "Spotted Adult Female", "itemid": "EST-10" },
23 { "productid": "RP-SN-01", "unitcost": 12.00, "status": "P", "listprice": 28.50, "attr1": "Venomless", "itemid": "EST-11" },
24 { "productid": "RP-SN-01", "unitcost": 12.00, "status": "P", "listprice": 26.50, "attr1": "Rattleless", "itemid": "EST-12" },
25 { "productid": "RP-LI-02", "unitcost": 12.00, "status": "P", "listprice": 35.50, "attr1": "Green Adult", "itemid": "EST-13" },
26 { "productid": "FL-DSH-01", "unitcost": 12.00, "status": "P", "listprice": 158.50, "attr1": "Tailless", "itemid": "EST-14" },
27 { "productid": "FL-DSH-01", "unitcost": 12.00, "status": "P", "listprice": 83.50, "attr1": "With tail", "itemid": "EST-15" },
28 { "productid": "FL-DLH-02", "unitcost": 12.00, "status": "P", "listprice": 63.50, "attr1": "Adult Female", "itemid": "EST-16" },
29 { "productid": "FL-DLH-02", "unitcost": 12.00, "status": "P", "listprice": 89.50, "attr1": "Adult Male", "itemid": "EST-17" },
30 { "productid": "AV-CB-01", "unitcost": 92.00, "status": "P", "listprice": 63.50, "attr1": "Adult Male", "itemid": "EST-18" }
31 ]
32 };
33 $('#dg').datagrid('loadData', rawData);
34 }
35
36

"dg" style="width:700px;height:auto"
37 title="DataGrid" iconCls="icon-edit" singleSelect="true">
38
39
40
41
42
43
44
45
46
47
48
"itemid" width="80">Item ID "productid" width="100">Product "listprice" width="80" align="right" editor="{type:'numberbox',options:{precision:1}}">List Price "unitcost" width="80" align="right" editor="numberbox">Unit Cost "attr1" width="250" editor="text">Attribute "status" width="60" align="center" editor="{type:'checkbox',options:{on:'P',off:''}}">Status
View Code

 

上述静态网页,这就是一条小龙为了做动态产生 button,做的一个概念网页,先把你可以想像的操作用静态网页来实验,实验成功在用后端来产生。该静态网页,重要的点就在于 AddButton 这个 Function ,如此实验即可得知,后面用后端程式只要产生呼叫 AddButton 这个 function 就能动态产生 button 了。

所以读者了解上述程式,就可以 接着来看下面与 ASP.NET 结合后的一个概念程式

1 <%&#64; Page Language&#61;"C#" AutoEventWireup&#61;"True" %>
2
3
14
15
16 "content-type" content&#61;"text/html; charset&#61;utf-8" />
17
18 "stylesheet" type&#61;"text/css" href&#61;"./JS/EasyUI/themes/default/easyui.css">
19 "stylesheet" type&#61;"text/css" href&#61;"./JS/EasyUI/themes/icon.css">
20
21
22
23
24
25
26
27
28 "text/css" href&#61;"./css/fg.menu.css" media&#61;"screen" rel&#61;"stylesheet" />
29 "text/css" href&#61;"./css/theme/ui.all.css" media&#61;"screen" rel&#61;"stylesheet" />
30
31
69
70 "Form1" runat&#61;"server">
71
72

"dg" style&#61;"width:700px;height:auto"
73 title&#61;"DataGrid" iconCls&#61;"icon-edit" singleSelect&#61;"true">
74
75
76
77
78
79
80
81
82
83
84
"itemid" width&#61;"80">Item ID "productid" width&#61;"100">Product "listprice" width&#61;"80" align&#61;"right" editor&#61;"{type:&#39;numberbox&#39;,options:{precision:1}}">List Price "unitcost" width&#61;"80" align&#61;"right" editor&#61;"numberbox">Unit Cost "attr1" width&#61;"250" editor&#61;"text">Attribute "status" width&#61;"60" align&#61;"center" editor&#61;"{type:&#39;checkbox&#39;,options:{on:&#39;P&#39;,off:&#39;&#39;}}">Status

85
86
87
View Code

 

这个程式主要应用了上一篇 如何用 Javascript 动态呼叫函数 的技巧&#xff0c;在 DataGrid init 前去呼叫 onBeforeInit 这个 function&#xff0c;这个就是一条小龙在前端框架中&#xff0c;为后端程式预留弹性的空间&#xff0c;当然后续读者在应用时&#xff0c;可以将这些init 分得更细&#xff0c;让后端程式有更明确的方式来呼叫。一条小龙在这边只是介绍其中的概念&#xff0c;所以会比较粗略一点。

转:https://www.cnblogs.com/babydragoner/archive/2013/05/14/3077963.html



推荐阅读
  • 本文介绍了如何利用Shell脚本高效地部署MHA(MySQL High Availability)高可用集群。通过详细的脚本编写和配置示例,展示了自动化部署过程中的关键步骤和注意事项。该方法不仅简化了集群的部署流程,还提高了系统的稳定性和可用性。 ... [详细]
  • 如何在Linux服务器上配置MySQL和Tomcat的开机自动启动
    在Linux服务器上部署Web项目时,通常需要确保MySQL和Tomcat服务能够随系统启动而自动运行。本文将详细介绍如何在Linux环境中配置MySQL和Tomcat的开机自启动,以确保服务的稳定性和可靠性。通过合理的配置,可以有效避免因服务未启动而导致的项目故障。 ... [详细]
  • 本文介绍了如何使用Python的Paramiko库批量更新多台服务器的登录密码。通过示例代码展示了具体实现方法,确保了操作的高效性和安全性。Paramiko库提供了强大的SSH2协议支持,使得远程服务器管理变得更加便捷。此外,文章还详细说明了代码的各个部分,帮助读者更好地理解和应用这一技术。 ... [详细]
  • 在Linux系统中避免安装MySQL的简易指南
    在Linux系统中避免安装MySQL的简易指南 ... [详细]
  • SecureCRT是一款功能强大的终端仿真软件,支持SSH1和SSH2协议,适用于在Windows环境下高效连接和管理Linux服务器。该工具不仅提供了稳定的连接性能,还具备丰富的配置选项,能够满足不同用户的需求。通过SecureCRT,用户可以轻松实现对远程Linux系统的安全访问和操作。 ... [详细]
  • 在《Linux高性能服务器编程》一书中,第3.2节深入探讨了TCP报头的结构与功能。TCP报头是每个TCP数据段中不可或缺的部分,它不仅包含了源端口和目的端口的信息,还负责管理TCP连接的状态和控制。本节内容详尽地解析了TCP报头的各项字段及其作用,为读者提供了深入理解TCP协议的基础。 ... [详细]
  • 本文介绍了如何利用Struts1框架构建一个简易的四则运算计算器。通过采用DispatchAction来处理不同类型的计算请求,并使用动态Form来优化开发流程,确保代码的简洁性和可维护性。同时,系统提供了用户友好的错误提示,以增强用户体验。 ... [详细]
  • 在Cisco IOS XR系统中,存在提供服务的服务器和使用这些服务的客户端。本文深入探讨了进程与线程状态转换机制,分析了其在系统性能优化中的关键作用,并提出了改进措施,以提高系统的响应速度和资源利用率。通过详细研究状态转换的各个环节,本文为开发人员和系统管理员提供了实用的指导,旨在提升整体系统效率和稳定性。 ... [详细]
  • 本指南介绍了如何在ASP.NET Web应用程序中利用C#和JavaScript实现基于指纹识别的登录系统。通过集成指纹识别技术,用户无需输入传统的登录ID即可完成身份验证,从而提升用户体验和安全性。我们将详细探讨如何配置和部署这一功能,确保系统的稳定性和可靠性。 ... [详细]
  • 本文详细介绍了一种利用 ESP8266 01S 模块构建 Web 服务器的成功实践方案。通过具体的代码示例和详细的步骤说明,帮助读者快速掌握该模块的使用方法。在疫情期间,作者重新审视并研究了这一未被充分利用的模块,最终成功实现了 Web 服务器的功能。本文不仅提供了完整的代码实现,还涵盖了调试过程中遇到的常见问题及其解决方法,为初学者提供了宝贵的参考。 ... [详细]
  • 本文介绍了如何利用 Delphi 中的 IdTCPServer 和 IdTCPClient 控件实现高效的文件传输。这些控件在默认情况下采用阻塞模式,并且服务器端已经集成了多线程处理,能够支持任意大小的文件传输,无需担心数据包大小的限制。与传统的 ClientSocket 相比,Indy 控件提供了更为简洁和可靠的解决方案,特别适用于开发高性能的网络文件传输应用程序。 ... [详细]
  • 深入解析C#中app.config文件的配置与修改方法
    在C#开发过程中,经常需要对系统的配置文件进行读写操作,如系统初始化参数的修改或运行时参数的更新。本文将详细介绍如何在C#中正确配置和修改app.config文件,包括其结构、常见用法以及最佳实践。此外,还将探讨exe.config文件的生成机制及其在不同环境下的应用,帮助开发者更好地管理和维护应用程序的配置信息。 ... [详细]
  • Java环境中Selenium Chrome驱动在大规模Web应用扩展时的性能限制分析 ... [详细]
  • 尽管我们尽最大努力,任何软件开发过程中都难免会出现缺陷。为了更有效地提升对支持部门的协助与支撑,本文探讨了多种策略和最佳实践,旨在通过改进沟通、增强培训和支持流程来减少这些缺陷的影响,并提高整体服务质量和客户满意度。 ... [详细]
  • 深入解析:React与Webpack配置进阶指南(第二部分)
    在本篇进阶指南的第二部分中,我们将继续探讨 React 与 Webpack 的高级配置技巧。通过实际案例,我们将展示如何使用 React 和 Webpack 构建一个简单的 Todo 应用程序,具体包括 `TodoApp.js` 文件中的代码实现,如导入 React 和自定义组件 `TodoList`。此外,我们还将深入讲解 Webpack 配置文件的优化方法,以提升开发效率和应用性能。 ... [详细]
author-avatar
一心向应丨
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有