<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title type="text">博客园_leo's Space</title><subtitle type="text"/><id>http://feed.cnblogs.com/blog/u/65588/rss</id><updated>2012-03-20T13:15:47Z</updated><author><name>谢略</name><uri>http://www.cnblogs.com/leoxie2011/</uri></author><generator>feed.cnblogs.com</generator><link rel="alternate" type="text/html" href="http://www.cnblogs.com/leoxie2011/"/><link rel="self" type="application/atom+xml" href="http://feed.cnblogs.com/blog/u/65588/rss"/><entry><id>http://www.cnblogs.com/leoxie2011/archive/2012/03/20/2408542.html</id><title type="text">通用权限管理设计 之 数据权限</title><summary type="text">阅读目录前言初步分析通用查询机制数据权限规则实际应用结语前言前一篇文章《通用权限管理设计 之 数据库设计方案》介绍了【主体】- 【领域】 - 【权限】( who、what、how问题原型 ) 的设计思想本文将对这种设计思想作进一步的扩展，介绍数据权限的设计方案。权限控制可以理解，分为这几种 ：【功能权限】：能做什么的问题，如增加产品。【数据权限】：能看到哪些数据的问题，如查看本人的所有订单。【字段权限】：能看到哪些信息的问题，如供应商账户，看不到角色、 部门等信息。上面提到的那种设计就是【功能权限】，这种设计有一定的局限性，对于主体，只能明确地指定。对于不明确的，在这里可能就没办法处理。比如下</summary><published>2012-03-20T13:04:00Z</published><updated>2012-03-20T13:04:00Z</updated><author><name>谢略</name><uri>http://www.cnblogs.com/leoxie2011/</uri></author><link rel="alternate" href="http://www.cnblogs.com/leoxie2011/archive/2012/03/20/2408542.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/leoxie2011/archive/2012/03/20/2408542.html"/><content type="html">&lt;div class="category"&gt;&lt;p&gt;&lt;strong&gt;&lt;strong&gt;阅读目录&lt;/strong&gt;&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="#label1"&gt;前言&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="#label2"&gt;初步分析&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="#label3"&gt;通用查询机制&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="#label4"&gt;数据权限规则&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="#label5"&gt;实际应用&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="#label6"&gt;结语&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;p&gt;&lt;a name="label1"&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;前言&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 13px;"&gt;前一篇文章《&lt;a href="http://www.cnblogs.com/leoxie2011/archive/2011/05/19/2050626.html"&gt;通用权限管理设计 之 数据库设计方案&lt;/a&gt;》介绍了【主体】- 【领域】 - 【权限】( who、what、how问题原型 ) 的设计思想&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 13px;"&gt;本文将对这种设计思想作进一步的扩展，介绍数据权限的设计方案。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 13px;"&gt;权限控制可以理解，分为这几种 ：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 13px;"&gt;&lt;span style="color: #ff0000;"&gt;【功能权限】：&lt;/span&gt;能做什么的问题，如增加产品。&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 13px;"&gt;&lt;span style="color: #ff0000;"&gt;【数据权限】：&lt;/span&gt;能看到哪些数据的问题，如查看本人的所有订单。&lt;br /&gt;&lt;span style="color: #ff0000;"&gt;【字段权限】：&lt;/span&gt;能看到哪些信息的问题，如供应商账户，看不到角色、 部门等信息。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 13px;"&gt;上面提到的那种设计就是【功能权限】，这种设计有一定的局限性，对于主体，只能明确地指定。对于不明确的，在这里可能就没办法处理。比如下面这几种情况：&lt;/span&gt;&lt;/p&gt;&lt;blockquote style='border:2px solid #EFEFEF;color:#333333;padding:5px 10px;'&gt;&lt;p&gt;&lt;span style="font-size: 13px;"&gt;数据仅当前部门及上级可见&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 13px;"&gt;数据仅当前用户(本人)可见&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;span style="font-size: 13px;"&gt;类似这样的就需要用到上面提的数据权限。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 13px; color: #ff0000;"&gt;上一篇文章我用一个表五个字段完成了【功能权限】的设计思路&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 13px; color: #ff0000;"&gt;本文我将介绍如何利用一个表两个字段完成这个【数据权限】的设计思路&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;a name="label2"&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;初步分析&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 13px;"&gt;【数据权限】是在【功能权限】的基础上面进一步的扩展，比如可以查看订单属于【功能权限】的范围，但是可以查看哪些订单就是【数据权限】的工作了。&lt;/span&gt;&lt;/p&gt;&lt;blockquote style='border:2px solid #EFEFEF;color:#333333;padding:5px 10px;'&gt;&lt;p&gt;&lt;span style="font-size: 13px;"&gt;在设计中，我们规定好如果没有设置了数据权限规则，那么视为允许查看全部的数据。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 13px;"&gt;&lt;strong&gt;几个概念&lt;/strong&gt;&lt;br /&gt;&lt;span&gt;【资源】：数据权限的控制对象，业务系统中的各种资源。比如订单单据、销售单等。属于上面提到的【领域】中的一种&lt;/span&gt;&lt;br /&gt;&lt;span&gt;【主体】：用户、部门、角色等。&lt;br /&gt;【条件规则】：用于检索数据的条件定义&lt;br /&gt;【数据规则】：用于【数据权限】的条件规则&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&amp;nbsp;&lt;br /&gt;&lt;span style="font-size: 13px;"&gt;&lt;strong&gt;&lt;span data-mce-=""&gt;应用场景&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 13px;" data-mce-=""&gt;1，订单，可以由本人查看&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 13px;" data-mce-=""&gt;2，销售单，可以由本人或上级领导查看&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 13px;" data-mce-=""&gt;3，销售单，销售人员可以查看自己的，销售经理只查看 销售金额大于100,000的。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 13px;"&gt;我们能想到直接的方法，在访问数据的入口加入SQL Where条件来实现，组织sql语句：&lt;/span&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;1&lt;/span&gt;，&lt;span style="color: #0000ff;"&gt;where&lt;/span&gt; UserID &lt;span style="color: #808080;"&gt;=&lt;/span&gt; {CurrentUserID}&lt;br /&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;2&lt;/span&gt;，&lt;span style="color: #0000ff;"&gt;where&lt;/span&gt; UserID &lt;span style="color: #808080;"&gt;=&lt;/span&gt; {CurrentUserID}  &lt;span style="color: #808080;"&gt;or&lt;/span&gt; {CurrentUserID} &lt;span style="color: #808080;"&gt;in&lt;/span&gt; (领导)&lt;br /&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;3&lt;/span&gt;，&lt;span style="color: #0000ff;"&gt;where&lt;/span&gt; UserID &lt;span style="color: #808080;"&gt;=&lt;/span&gt; {CurrentUserID}  &lt;span style="color: #808080;"&gt;or&lt;/span&gt; ({CurrentUserID} &lt;span style="color: #808080;"&gt;in&lt;/span&gt; (销售经理)  &lt;span style="color: #808080;"&gt;and&lt;/span&gt; 销售金额 &lt;span style="color: #808080;"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color: #800000; font-weight: bold;"&gt;100000&lt;/span&gt;)&lt;/div&gt;&lt;blockquote style='border:2px solid #EFEFEF;color:#333333;padding:5px 10px;'&gt;&lt;p&gt;&lt;span style="font-size: 13px;"&gt;&lt;span style="font-size: 13px;"&gt;这些一个一个的"条件"，本文简单理解为一个【数据规则】，通常会与原来我们前台的业务过滤条件合并再检索出数据。&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;span style="font-size: 13px;"&gt;&lt;span style="font-size: 13px;"&gt;这是一种最直接的实现方式，在【资源】上面加一个【数据规则】（比如上面的三点）。这样设计就是&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 13px;"&gt;&lt;span style="font-size: 13px;"&gt;&lt;span style="color: #ff0000;"&gt;【资源】 - 【数据规则】&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 13px;"&gt;&lt;span style="font-size: 13px;"&gt;我又觉得不同的人应该对应不同的规则，那么也可以理解为，一个用户对应不同的角色，每一个角色有不一样的【数据规则】，那么设计就变成&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 13px; color: #ff0000;"&gt;&lt;span style="font-size: 13px;"&gt;【资源】 - 【主体】 - 【数据规则】&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 13px;"&gt;根据提供者的不同，准备不同的权限应对策略。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 13px;"&gt;这里可以简单地介绍一下，&lt;/span&gt;&lt;span style="font-size: 13px;"&gt;这个方案至少需要2张表，一个是 &amp;nbsp;【资源，主体，规则关系表】、一个是【数据规则表】&lt;/span&gt;&lt;/p&gt;&lt;blockquote style='border:2px solid #EFEFEF;color:#333333;padding:5px 10px;'&gt;&lt;p&gt;关系表不能直接保存角色，因为你不确定什么时候业务需要按照【部门】或者【分公司】来定义数据规则&lt;/p&gt;&lt;p&gt;于是可以用 &amp;nbsp;Master、MasterKey &amp;nbsp;类似这样的两个字段来确定一个【主体】&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;span style="font-size: 13px;"&gt;用XML方式的话是这样配置的(放在数据库也类似)：&lt;/span&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;?&lt;/span&gt;&lt;span style="color: #ff00ff;"&gt;xml version="1.0" encoding="utf-8"&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;?&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;settings&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;rule &lt;/span&gt;&lt;span style="color: #ff0000;"&gt;view&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="订单"&lt;/span&gt;&lt;span style="color: #ff0000;"&gt; role&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="销售人员"&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;      销售员 = {CurrentUserID}&lt;br /&gt;  &lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;rule&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;rule &lt;/span&gt;&lt;span style="color: #ff0000;"&gt;view&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="订单"&lt;/span&gt;&lt;span style="color: #ff0000;"&gt; role&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="总销售经理"&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;     销售金额 &amp;gt; 100000&lt;br /&gt;  &lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;rule&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;rule &lt;/span&gt;&lt;span style="color: #ff0000;"&gt;view&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="订单"&lt;/span&gt;&lt;span style="color: #ff0000;"&gt; role&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="区域销售经理"&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    销售金额 &amp;gt; 100000  and 区域 = {当前用户所属区域}&lt;br /&gt;  &lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;rule&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;settings&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&lt;span style="font-size: 13px;"&gt;对于这种方式有兴趣的朋友也可以试一下，两种方式的【数据规则】是一样的，但是&lt;/span&gt;&lt;span style="font-size: 13px;"&gt;本文没有采用第二种设计方式，因为它多了一层处理逻辑，我以为应该设计越简单越好，&lt;/span&gt;&lt;span style="font-size: 13px;"&gt;就采用第一种方式：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 13px; color: #ff0000;"&gt;【资源】 - 【数据规则】&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 13px;"&gt;当然，上面是用SQL的方式来确定条件规则的，我们当然不会这么做。SQL虽然灵活，但是我们很难去维护，也不知道SQL在我们的界面UI上面如何体现。难不成直接用一个文本框来显示。这样对应一个开发人员来说不是问题，可是对应系统管理员，很容易出问题。&lt;span style="color: #ff0000;"&gt;所以我们需要有另一方式来确定这一规则，并最终可以转换成我们的SQL语句。&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 13px;"&gt;&lt;span style="color: #ff0000;"&gt;我们的设计关键在于如何规范好这些【数据规则】&lt;/span&gt;&amp;nbsp;，这个规则必须是对前端友好的，而且是对后台友好的，JSON显然是很好的方式。&lt;/span&gt;&lt;/p&gt;&lt;blockquote style='border:2px solid #EFEFEF;color:#333333;padding:5px 10px;'&gt;&lt;p&gt;&amp;nbsp;规则说明：&lt;/p&gt;&lt;p&gt;1，数据权限规则总是：｛属性 条件 允许值｝&lt;/p&gt;&lt;p&gt;2，数据权限规则可以合并。比如 （ {当前用户 属于 销售人员} and {订单销售员 等于 &amp;nbsp;当前用户} ) &amp;nbsp; Or {当前用户 &amp;nbsp;属于 销售经理}&lt;/p&gt;&lt;p&gt;&lt;span style="color: #ff0000;"&gt;3，最终我们会用JSON格式&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;span style="font-size: 13px;"&gt;在检索数据时会先判断有没有注册了某某【资源】的【条件规则】，如果有，那么加载这个【条件规则】并合并到我们前台的【搜索条件】（你的业务界面应该有一个搜索框吧）&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 13px;"&gt;&amp;nbsp;如下图定义了客户信息的搜索框，我们搜索客户ID包括AN，我们组织成的规则将会是：&lt;/span&gt;&lt;/p&gt;&lt;blockquote style='border:2px solid #EFEFEF;color:#333333;padding:5px 10px;'&gt;&lt;p&gt;{"rules":[{"field":"CustomerID","op":"like","value":"AN","type":"string"}],"op":"and"}&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;img style="border: 1px solid #aaa; padding: 6px;" src="http://pic002.cnblogs.com/images/2012/109724/2012031801322986.png" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 13px;"&gt;为了更好地理解【数据规则】，这里介绍一下【通用查询机制】&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="font-size: 13px;"&gt;&lt;a name="label3"&gt;&lt;/a&gt;【通用查询机制】&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 13px;"&gt;权限控制总离不开一些条件的限制(比如查看当前部门的单据)，如果没有完善的通用查询规则机制，那么在做权限条件过滤的时候你会觉得很别扭。这里介绍一个通用查询方案，然后再介绍如何实现【数据规则】。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 13px;"&gt;早些时候我写过一篇关于ligerGrid结合.net设计通用处理类的文章《&lt;a href="http://www.cnblogs.com/leoxie2011/archive/2011/05/28/2061406.html"&gt; jQuery liger ui ligerGrid 打造通用的分页排序查询表格(提供下载)&lt;/a&gt; 》。里面提到的过滤信息是直接的SQL语句。这是不可靠，而且不安全的。&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 13px;"&gt;在前端传输给后台的过滤信息不应该是直接的SQL，而应该是一组过滤规则。在ligerui V1.1.8 已经加入了一个条件过滤器插件，这个插件组成的规则数据才是我受推荐的：&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 13px;"&gt;比如如下&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;blockquote style='border:2px solid #EFEFEF;color:#333333;padding:5px 10px;'&gt;&lt;p&gt;&lt;span style="font-size: x-small;"&gt;&lt;span data-mce-=""&gt;{"rules":&lt;/span&gt;&lt;br /&gt;&lt;span data-mce-=""&gt;[&lt;/span&gt;&lt;br /&gt;&lt;span data-mce-=""&gt;{"field":"OrderDate","op":"less","value":"2012-01-01"},&lt;/span&gt;&lt;br /&gt;&lt;span data-mce-=""&gt;{"field":"CustomerID","op":"equal","value":"VINET"}&lt;/span&gt;&lt;br /&gt;&lt;span data-mce-=""&gt;]&lt;/span&gt;&lt;br /&gt;&lt;span data-mce-=""&gt;,"op":"and"}&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;blockquote style='border:2px solid #EFEFEF;color:#333333;padding:5px 10px;'&gt;&lt;p&gt;&lt;span style="font-size: x-small;"&gt;&lt;span data-mce-=""&gt;规则描述：&lt;/span&gt;&lt;br /&gt;&lt;span data-mce-=""&gt;查找顾客VINET所有订单时间小于2011-01-01的单据&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;br /&gt;&lt;span style="font-size: 13px;"&gt;这样的数据是安全的，而且是通用的(你甚至可以再加一个OR子查询)。无论是在前端还是后台，无论你使用什么样的组件，都可以很好地利用。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 13px;"&gt;通用后台的翻译，就可以生成这样SQL的参数：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #0000ff;"&gt;Text&lt;/span&gt;:&lt;br /&gt;(&lt;span style="color: #ff0000;"&gt;[&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;OrderDate&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;]&lt;/span&gt; &lt;span style="color: #808080;"&gt;&amp;lt;&lt;/span&gt; &lt;span style="color: #008000;"&gt;@p1&lt;/span&gt; &lt;span style="color: #808080;"&gt;and&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;[&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;CustomerID&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;]&lt;/span&gt; &lt;span style="color: #808080;"&gt;=&lt;/span&gt; &lt;span style="color: #008000;"&gt;@p2&lt;/span&gt;)&lt;br /&gt;Parameters:&lt;br /&gt;p1:&lt;span style="color: #800000; font-weight: bold;"&gt;2012&lt;/span&gt;&lt;span style="color: #808080;"&gt;-&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;01&lt;/span&gt;&lt;span style="color: #808080;"&gt;-&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;01&lt;/span&gt;&lt;br /&gt;p2:VINET&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 13px;"&gt;下面来点复杂的：查找 顾客VINET或者TOMSP，所有订单时间小于2011-01-01的单据&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;blockquote style='border:2px solid #EFEFEF;color:#333333;padding:5px 10px;'&gt;&lt;p&gt;&lt;span style="font-size: x-small;"&gt;&lt;span data-mce-=""&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span data-mce-=""&gt;"rules":[{"field":"OrderDate","op":"less","value":"2012-01-01"}],&lt;/span&gt;&lt;br /&gt;&lt;span data-mce-=""&gt;"groups":[&lt;/span&gt;&lt;br /&gt;&lt;span data-mce-=""&gt;{"rules":[{"field":"CustomerID","op":"equal","value":"VINET"}, {"field":"CustomerID","op":"equal","value":"TOMSP"}],"op":"or"}&lt;/span&gt;&lt;br /&gt;&lt;span data-mce-=""&gt;],&lt;/span&gt;&lt;br /&gt;&lt;span data-mce-=""&gt;"op":"and"&lt;/span&gt;&lt;br /&gt;&lt;span data-mce-=""&gt;}&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&amp;nbsp;&lt;span style="font-size: 13px;"&gt;翻译结果：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #0000ff;"&gt;Text&lt;/span&gt;:(&lt;span style="color: #ff0000;"&gt;[&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;OrderDate&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;]&lt;/span&gt; &lt;span style="color: #808080;"&gt;&amp;lt;&lt;/span&gt; &lt;span style="color: #008000;"&gt;@p1&lt;/span&gt; &lt;span style="color: #808080;"&gt;and&lt;/span&gt; (&lt;span style="color: #ff0000;"&gt;[&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;CustomerID&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;]&lt;/span&gt; &lt;span style="color: #808080;"&gt;=&lt;/span&gt; &lt;span style="color: #008000;"&gt;@p2&lt;/span&gt; &lt;span style="color: #808080;"&gt;or&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;[&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;CustomerID&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;]&lt;/span&gt; &lt;span style="color: #808080;"&gt;=&lt;/span&gt; &lt;span style="color: #008000;"&gt;@p3&lt;/span&gt;))&lt;br /&gt;Parameters:&lt;br /&gt;p1:&lt;span style="color: #800000; font-weight: bold;"&gt;2012&lt;/span&gt;&lt;span style="color: #808080;"&gt;-&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;01&lt;/span&gt;&lt;span style="color: #808080;"&gt;-&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;01&lt;/span&gt;&lt;br /&gt;p2:VINET&lt;br /&gt;p3:TOMSP&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 13px;"&gt;&lt;span style="color: #ff0000;"&gt;这个过滤规则分为三个部分：【分组】、【规则】(字段、值、操作符)、【操作符】(and or)&lt;/span&gt;，而自身就是一个分组。&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 13px;"&gt;这种简单的结构就可以满足全部的情况。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 13px;"&gt;当然，上面提到的这些条件都是在前台定义(可能是用户在搜索框自己输入的)的，而在后台，我们可能会定义一下【隐藏条件】，比如说 【员工只能查看自己的】，要怎么做呢，其实很简单，只需要在后台接收到这个过滤条件(前台toJSON，后台解析JSON)以后，再加上一个过滤规则(隐藏条件)：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;blockquote style='border:2px solid #EFEFEF;color:#333333;padding:5px 10px;'&gt;&lt;p&gt;&lt;span style="font-size: x-small;"&gt;{field:'EmployeeID',op:'equal',value:5}&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 13px;"&gt;可以将原来的过滤规则当做一个分组加入进行：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;blockquote style='border:2px solid #EFEFEF;color:#333333;padding:5px 10px;'&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;span data-mce-=""&gt;{op:'and',groups:[&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;span data-mce-=""&gt;{"rules":[{"field":"OrderDate","op":"less","value":"2012-01-01"}],&lt;/span&gt;&lt;br /&gt;&lt;span data-mce-=""&gt;"groups":[&lt;/span&gt;&lt;br /&gt;&lt;span data-mce-=""&gt;{"rules":[{"field":"CustomerID","op":"equal","value":"VINET"},{"field":"CustomerID","op":"equal","value":"TOMSP"}],"op":"or"}&lt;/span&gt;&lt;br /&gt;&lt;span data-mce-=""&gt;],"op":"and"}&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;span data-mce-=""&gt;],rules:[{field:'EmployeeID',op:'equal',value:5}]&lt;/span&gt;&lt;br /&gt;&lt;span data-mce-=""&gt;}&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 13px;"&gt;翻译如下：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #0000ff;"&gt;Text&lt;/span&gt;:&lt;br /&gt;(&lt;span style="color: #ff0000;"&gt;[&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;EmployeeID&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;]&lt;/span&gt; &lt;span style="color: #808080;"&gt;=&lt;/span&gt; &lt;span style="color: #008000;"&gt;@p1&lt;/span&gt; &lt;span style="color: #808080;"&gt;and&lt;/span&gt; (&lt;span style="color: #ff0000;"&gt;[&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;OrderDate&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;]&lt;/span&gt; &lt;span style="color: #808080;"&gt;&amp;lt;&lt;/span&gt; &lt;span style="color: #008000;"&gt;@p2&lt;/span&gt; &lt;span style="color: #808080;"&gt;and&lt;/span&gt; (&lt;span style="color: #ff0000;"&gt;[&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;CustomerID&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;]&lt;/span&gt; &lt;span style="color: #808080;"&gt;=&lt;/span&gt; &lt;span style="color: #008000;"&gt;@p3&lt;/span&gt; &lt;span style="color: #808080;"&gt;or&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;[&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;CustomerID&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;]&lt;/span&gt; &lt;span style="color: #808080;"&gt;=&lt;/span&gt; &lt;span style="color: #008000;"&gt;@p4&lt;/span&gt;)))&lt;br /&gt;Parameters:&lt;br /&gt;p1:&lt;span style="color: #800000; font-weight: bold;"&gt;5&lt;/span&gt;&lt;br /&gt;p2:&lt;span style="color: #800000; font-weight: bold;"&gt;2012&lt;/span&gt;&lt;span style="color: #808080;"&gt;-&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;01&lt;/span&gt;&lt;span style="color: #808080;"&gt;-&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;01&lt;/span&gt;&lt;br /&gt;p3:VINET&lt;br /&gt;p4:TOMSP&lt;/div&gt;&lt;p&gt;&lt;span style="font-size: 13px;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;span style="font-size: 13px;"&gt;这样的【条件规则】才是我们想要的，不仅在前端可以很好地解析，&lt;/span&gt;&lt;span style="font-size: 13px;"&gt;也可以在后台进行处理。在后台我们会定义跟这种数据结构对应的类，那么再定义一个翻译成SQL的类：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;img style="border: 1px solid #aaa; padding: 6px;" src="http://pic002.cnblogs.com/images/2012/109724/2012031812364735.png" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;a name="label4"&gt;&lt;/a&gt;数据权限规则&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 13px;"&gt;说了这些，可以开始介绍如何实现【数据规则】了：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 13px;"&gt;上面提到的【隐藏条件】，就是我介绍的【数据规则】&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 13px;"&gt;试想一些，这样 前台的过滤规则，再加上我们之间定义好的 【数据权限】控制 过滤条件。不就达到目的了吗。&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 13px;"&gt;先看看我们在数据库里保存的这些【数据规则】：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;img style="border: 1px solid #aaa; padding: 12px;" src="http://pic002.cnblogs.com/images/2012/109724/2012031801472149.png" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;看不明白？那来个清楚一点的：&lt;/p&gt;&lt;p&gt;&lt;img style="border: 1px solid #aaa; padding: 6px;" src="http://pic002.cnblogs.com/images/2012/109724/2012031801500593.png" alt="" /&gt;&lt;/p&gt;&lt;blockquote style='border:2px solid #EFEFEF;color:#333333;padding:5px 10px;'&gt;&lt;p&gt;&lt;span style="font-size: x-small;"&gt;规则描述&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: x-small;"&gt;订单：【订单管理员和演示角色可以查看所有的】，【订单查看员】只能查看自己的&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: x-small;"&gt;产品：【基础信息录入员和演示角色可以查看所有的】，【供应商】只能查看自己的&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: x-small;"&gt;{CurrentEmployeeID}表示当前的员工。&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: x-small;"&gt;实质上，我们还可以根据当前用户信息定义需要的参数，比如：&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: x-small;"&gt;{CurrentUserID} 当前用户Id ，对应表【CF_User】&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: x-small;"&gt;{CurrentRoleID} 当前角色Id ，对应表 【CF_Role】&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: x-small;"&gt;{CurrentDeptID} 当前用户部门Id，对应表【CF_Department】&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: x-small;"&gt;{CurrentEmployeeID} 当前用户员工Id，对应表【Employees】(CF_User.EmployeeID)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: x-small;"&gt;{CurrentSupplierID} 当前用户供应商Id，对应表【Suppliers】(CF_User.SupplierID)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&amp;nbsp;在数据库中我们直接保存这些用户参数，在&amp;ldquo;翻译&amp;rdquo;规则成为SQL时，会替换掉：&lt;/p&gt;&lt;p&gt;&lt;img style="border: 1px solid #aaa; padding: 6px;" src="http://pic002.cnblogs.com/images/2012/109724/2012031802035751.png" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 13px;"&gt;比如查看订单，我们得到的SQL，可能是这样的：&lt;/span&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #0000ff;"&gt;Text&lt;/span&gt;:     &lt;span style="color: #0000ff;"&gt;SELECT&lt;/span&gt; &lt;span style="color: #808080;"&gt;*&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;FROM&lt;/span&gt; (&lt;span style="color: #0000ff;"&gt;SELECT&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;TOP&lt;/span&gt; &lt;span style="color: #800000; font-weight: bold;"&gt;20&lt;/span&gt; &lt;span style="color: #808080;"&gt;*&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;FROM&lt;/span&gt; (&lt;span style="color: #0000ff;"&gt;SELECT&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;TOP&lt;/span&gt; &lt;span style="color: #800000; font-weight: bold;"&gt;40&lt;/span&gt; &lt;span style="color: #808080;"&gt;*&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;FROM&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;[&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;Orders&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;]&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;WHERE&lt;/span&gt; ( &lt;span style="color: #800000; font-weight: bold;"&gt;1&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;1&lt;/span&gt;  &lt;span style="color: #808080;"&gt;and&lt;/span&gt; ((&lt;span style="color: #008000;"&gt;@p1&lt;/span&gt; &lt;span style="color: #808080;"&gt;in&lt;/span&gt; (&lt;span style="color: #008000;"&gt;@p2&lt;/span&gt;,&lt;span style="color: #008000;"&gt;@p3&lt;/span&gt;)) &lt;span style="color: #808080;"&gt;or&lt;/span&gt; (&lt;span style="color: #008000;"&gt;@p4&lt;/span&gt; &lt;span style="color: #808080;"&gt;=&lt;/span&gt; &lt;span style="color: #008000;"&gt;@p5&lt;/span&gt; &lt;span style="color: #808080;"&gt;and&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;[&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;EmployeeID&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;]&lt;/span&gt; &lt;span style="color: #808080;"&gt;=&lt;/span&gt; &lt;span style="color: #008000;"&gt;@p6&lt;/span&gt;))) &lt;span style="color: #0000ff;"&gt;ORDER&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;BY&lt;/span&gt; OrderID &lt;span style="color: #0000ff;"&gt;ASC&lt;/span&gt;) &lt;span style="color: #0000ff;"&gt;AS&lt;/span&gt; tmptableinner &lt;span style="color: #0000ff;"&gt;ORDER&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;BY&lt;/span&gt; OrderID &lt;span style="color: #0000ff;"&gt;DESC&lt;/span&gt;) &lt;span style="color: #0000ff;"&gt;AS&lt;/span&gt; tmptableouter &lt;span style="color: #0000ff;"&gt;ORDER&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;BY&lt;/span&gt; OrderID &lt;span style="color: #0000ff;"&gt;ASC&lt;/span&gt;     &lt;br /&gt;Parameters:&lt;br /&gt;&lt;span style="color: #008000;"&gt;@p1&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;[&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;Int32&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;]&lt;/span&gt; &lt;span style="color: #808080;"&gt;=&lt;/span&gt; &lt;span style="color: #800000; font-weight: bold;"&gt;7&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000;"&gt;@p2&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;[&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;Int32&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;]&lt;/span&gt; &lt;span style="color: #808080;"&gt;=&lt;/span&gt; &lt;span style="color: #800000; font-weight: bold;"&gt;2&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000;"&gt;@p3&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;[&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;Int32&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;]&lt;/span&gt; &lt;span style="color: #808080;"&gt;=&lt;/span&gt; &lt;span style="color: #800000; font-weight: bold;"&gt;6&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000;"&gt;@p4&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;[&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;Int32&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;]&lt;/span&gt; &lt;span style="color: #808080;"&gt;=&lt;/span&gt; &lt;span style="color: #800000; font-weight: bold;"&gt;7&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000;"&gt;@p5&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;[&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;Int32&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;]&lt;/span&gt; &lt;span style="color: #808080;"&gt;=&lt;/span&gt; &lt;span style="color: #800000; font-weight: bold;"&gt;7&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000;"&gt;@p6&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;[&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;Int32&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;]&lt;/span&gt; &lt;span style="color: #808080;"&gt;=&lt;/span&gt; &lt;span style="color: #800000; font-weight: bold;"&gt;1&lt;/span&gt;&lt;/div&gt;&lt;blockquote style='border:2px solid #EFEFEF;color:#333333;padding:5px 10px;'&gt;&lt;p&gt;&lt;span style="font-size: 13px;"&gt;&lt;span style="font-size: 13px;"&gt;{CurrentRuleID} 替换为 7&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: x-small;"&gt;{CurrentEmployeeID} 替换为1&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&amp;nbsp;&lt;span style="font-size: 13px;"&gt;下图是我们设计【数据权限】的界面，可以选择所有的字段，包括几个用户信息：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;img style="border: 1px solid #aaa; padding: 6px;" src="http://pic002.cnblogs.com/images/2012/109724/2012031812561685.png" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 13px;"&gt;这些字段不仅仅只是在文本框中输入值，那么可以自定义数据来源：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #ff00ff;"&gt;var&lt;/span&gt; fieldEditors &lt;span style="color: #808080;"&gt;=&lt;/span&gt; {};&lt;br /&gt;fieldEditors&lt;span style="color: #ff0000;"&gt;[&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'Orders'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;]&lt;/span&gt; &lt;span style="color: #808080;"&gt;=&lt;/span&gt; {&lt;br /&gt;    &lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;ShipCity&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;: { type: &lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;combobox&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;, &lt;br /&gt;        options: {&lt;br /&gt;            width: &lt;span style="color: #800000; font-weight: bold;"&gt;200&lt;/span&gt;,&lt;br /&gt;            url: "..&lt;span style="color: #808080;"&gt;/&lt;/span&gt;handler&lt;span style="color: #808080;"&gt;/&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;select&lt;/span&gt;.ashx?&lt;span style="color: #0000ff;"&gt;view&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;Orders&lt;span style="color: #808080;"&gt;&amp;amp;&lt;/span&gt;idfield&lt;span style="color: #808080;"&gt;=&lt;/span&gt;ShipCity&lt;span style="color: #808080;"&gt;&amp;amp;&lt;/span&gt;textfield&lt;span style="color: #808080;"&gt;=&lt;/span&gt;ShipCity&lt;span style="color: #808080;"&gt;&amp;amp;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;distinct&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;true"&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;};&lt;/div&gt;&lt;p&gt;&lt;span style="font-size: 13px;"&gt;效果界面：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;img style="border: 1px solid #aaa; padding: 6px;" src="http://pic002.cnblogs.com/images/2012/109724/2012031814031163.png" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;a name="label5"&gt;&lt;/a&gt;实际应用&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 13px;"&gt;既然是数据权限控制，如果有一个统一的数据接收入口，我们倒是可以利用这个入口做一些工作。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 13px;"&gt;比如【&lt;a href="http://www.cnblogs.com/leoxie2011/archive/2012/03/18/2400367.html"&gt;ligerRM权限管理系统&lt;/a&gt;】统一使用 grid.ashx 这个数据处理程序作为列表数据的接收入口。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 13px;"&gt;有了统一的接口，方便做权限的控制，使用过 ligerGrid Javascript表格，或者类似插件的朋友，应该比较清楚服务器的交互原理。 &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 13px;"&gt;在grid.ashx中，我们会通过 &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 13px; color: #ff0000;"&gt;【视图/表名 】、 【排序信息】、【分页信息】、【过滤信息】&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 13px;"&gt;这几个指标来获取指定的数据。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;span style="font-size: 13px;"&gt;而在实际的业务中，可能会引入权限的控制。比如某某【资源】，只能由当前用户自身才能查看，或者只能由当前用户部门及上级部门才能查看。对于这些控制，我们采用对这些可能做权限控制的【资源】注册一组【条件规则】的方式来进行。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;img style="border: 1px solid #aaa; padding: 6px;" src="http://pic002.cnblogs.com/images/2012/109724/2012031802114223.png" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;我们将找到view定义好的【数据权限规则】，然后和用户在前台搜索框输入的【搜索规则】合并：&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;img style="border: 1px solid #aaa; padding: 6px;" src="http://pic002.cnblogs.com/images/2012/109724/2012031802144047.png" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 13px;"&gt;上面的代码就是数据条件合并的例子，这样便得到了我们最终需要的 过滤规则。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;a name="label6"&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;结语&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;本文提出了数据权限的一种实现思路，只是本人在做一个web应用时构思的方案，谈不上规范，欢迎提出你的建议意见。&lt;/p&gt;&lt;p&gt;可以在&lt;a href="http://case.ligerui.com"&gt;http://case.ligerui.com&lt;/a&gt;体验实际的应用效果。&lt;/p&gt;&lt;img src="http://www.cnblogs.com/leoxie2011/aggbug/2408542.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/leoxie2011/archive/2012/03/20/2408542.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/leoxie2011/archive/2012/03/18/2400367.html</id><title type="text">分享一个基于ligerui的系统应用案例ligerRM V2(权限管理系统)(提供下载)</title><summary type="text">阅读目录简介系统特色系统介绍 - 首页系统介绍 - 列表页系统介绍 - 明细页(表单)系统介绍 - 菜单/按钮系统介绍 - 权限中心系统介绍 - 数据权限系统介绍 - 字段权限系统介绍 - 下拉框应用细节结语简介ligerRM V2是基于 ligerui的web应用系统。以权限管理作为设计重点，引入Northwind作为主要的数据演示模块。权限方面，在上一个版本的基础上面加多了数据权限控制。后台方面采用dot net 3.5框架开发。系统演示：http://case.ligerui.com前台插件：jQuery、jQuery.ligerui、jQuery.form.js、jquery.vali</summary><published>2012-03-18T13:49:00Z</published><updated>2012-03-18T13:49:00Z</updated><author><name>谢略</name><uri>http://www.cnblogs.com/leoxie2011/</uri></author><link rel="alternate" href="http://www.cnblogs.com/leoxie2011/archive/2012/03/18/2400367.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/leoxie2011/archive/2012/03/18/2400367.html"/><content type="html">&lt;p&gt;&lt;a name="labelTop"&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="category"&gt;&lt;p&gt;&lt;strong&gt;&lt;strong&gt;阅读目录&lt;/strong&gt;&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="#label1"&gt;简介&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="#label2"&gt;系统特色&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="#label3"&gt;系统介绍 - 首页&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="#label4"&gt;系统介绍 - 列表页&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="#label5"&gt;系统介绍 - 明细页(表单)&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="#label6"&gt;系统介绍 - 菜单/按钮&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="#label7"&gt;系统介绍 - 权限中心&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="#label8"&gt;系统介绍 - 数据权限&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="#label9"&gt;系统介绍 - 字段权限&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="#label10"&gt;系统介绍 - 下拉框应用细节&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="#label11"&gt;结语&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div data-mce-=""&gt;&lt;a name="label1"&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;简介&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 13px;"&gt;ligerRM V2是基于 ligerui的web应用系统。以权限管理作为设计重点，引入Northwind作为主要的数据演示模块。权限方面，在上一个版本的基础上面加多了数据权限控制。后台方面采用dot net 3.5框架开发。&lt;/span&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size: 13px;"&gt;系统演示：&lt;a href="http://case.ligerui.com"&gt;http://case.ligerui.com&amp;nbsp;&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: 13px;"&gt;前台插件：jQuery、jQuery.ligerui、jQuery.form.js、jquery.validation&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: 13px;"&gt;数据交互：liger.Data（一个小型的ORM组件）&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: 13px;"&gt;源码下载：&lt;a href="http://code.google.com/p/ligerui/downloads/detail?name=ligerRMV2.7z&amp;amp;can=2&amp;amp;q="&gt;ligerRMV2&amp;nbsp;&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;span style="font-size: 13px;"&gt;演示账户：&lt;/span&gt;&lt;/p&gt;&lt;table class="l-grid-body-table" cellspacing="0" cellpadding="0"&gt;&lt;tbody&gt;&lt;tr class="l-grid-row l-grid-row-alt"&gt;&lt;td class="l-grid-row-cell"&gt;&lt;div class="l-grid-row-cell-inner"&gt;&lt;strong&gt;账户&lt;/strong&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class="l-grid-row-cell"&gt;&lt;div class="l-grid-row-cell-inner"&gt;&lt;strong&gt;名字&lt;/strong&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class="l-grid-row-cell"&gt;&lt;div class="l-grid-row-cell-inner"&gt;&lt;strong&gt;头衔&lt;/strong&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class="l-grid-row-cell"&gt;&lt;div class="l-grid-row-cell-inner"&gt;&lt;strong&gt;密码&lt;/strong&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr id="maingrid|2|r1002" class="l-grid-row l-grid-row-alt"&gt;&lt;td id="maingrid|2|r1002|c101" class="l-grid-row-cell "&gt;&lt;div class="l-grid-row-cell-inner"&gt;test3&lt;/div&gt;&lt;/td&gt;&lt;td id="maingrid|2|r1002|c102" class="l-grid-row-cell "&gt;&lt;div class="l-grid-row-cell-inner"&gt;录入员1&lt;/div&gt;&lt;/td&gt;&lt;td id="maingrid|2|r1002|c103" class="l-grid-row-cell "&gt;&lt;div class="l-grid-row-cell-inner"&gt;基础数据录入员1&lt;/div&gt;&lt;/td&gt;&lt;td class="l-grid-row-cell "&gt;&lt;div class="l-grid-row-cell-inner"&gt;1&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr id="maingrid|2|r1003" class="l-grid-row"&gt;&lt;td id="maingrid|2|r1003|c101" class="l-grid-row-cell "&gt;&lt;div class="l-grid-row-cell-inner"&gt;test2&lt;/div&gt;&lt;/td&gt;&lt;td id="maingrid|2|r1003|c102" class="l-grid-row-cell "&gt;&lt;div class="l-grid-row-cell-inner"&gt;录入员2&lt;/div&gt;&lt;/td&gt;&lt;td id="maingrid|2|r1003|c103" class="l-grid-row-cell "&gt;&lt;div class="l-grid-row-cell-inner"&gt;客户数据录入员2&lt;/div&gt;&lt;/td&gt;&lt;td class="l-grid-row-cell "&gt;&lt;div class="l-grid-row-cell-inner"&gt;1&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr id="maingrid|2|r1004" class="l-grid-row l-grid-row-alt"&gt;&lt;td id="maingrid|2|r1004|c101" class="l-grid-row-cell "&gt;&lt;div class="l-grid-row-cell-inner"&gt;test1&lt;/div&gt;&lt;/td&gt;&lt;td id="maingrid|2|r1004|c102" class="l-grid-row-cell "&gt;&lt;div class="l-grid-row-cell-inner"&gt;高级演示账号1&lt;/div&gt;&lt;/td&gt;&lt;td id="maingrid|2|r1004|c103" class="l-grid-row-cell "&gt;&lt;div class="l-grid-row-cell-inner"&gt;高级演示账号1&lt;/div&gt;&lt;/td&gt;&lt;td class="l-grid-row-cell "&gt;&lt;div class="l-grid-row-cell-inner"&gt;1&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr id="maingrid|2|r1005" class="l-grid-row"&gt;&lt;td id="maingrid|2|r1005|c101" class="l-grid-row-cell "&gt;&lt;div class="l-grid-row-cell-inner"&gt;test4&lt;/div&gt;&lt;/td&gt;&lt;td id="maingrid|2|r1005|c102" class="l-grid-row-cell "&gt;&lt;div class="l-grid-row-cell-inner"&gt;订单查看员1&lt;/div&gt;&lt;/td&gt;&lt;td id="maingrid|2|r1005|c103" class="l-grid-row-cell "&gt;&lt;div class="l-grid-row-cell-inner"&gt;订单查看员1 - Sales Representative&lt;/div&gt;&lt;/td&gt;&lt;td class="l-grid-row-cell "&gt;&lt;div class="l-grid-row-cell-inner"&gt;1&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr id="maingrid|2|r1006" class="l-grid-row l-grid-row-alt l-selected"&gt;&lt;td id="maingrid|2|r1006|c101" class="l-grid-row-cell "&gt;&lt;div class="l-grid-row-cell-inner"&gt;test5&lt;/div&gt;&lt;/td&gt;&lt;td id="maingrid|2|r1006|c102" class="l-grid-row-cell "&gt;&lt;div class="l-grid-row-cell-inner"&gt;供应商1&lt;/div&gt;&lt;/td&gt;&lt;td id="maingrid|2|r1006|c103" class="l-grid-row-cell "&gt;&lt;div class="l-grid-row-cell-inner"&gt;供应商1 - Exotic Liquids44&lt;/div&gt;&lt;/td&gt;&lt;td class="l-grid-row-cell "&gt;&lt;div class="l-grid-row-cell-inner"&gt;1&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div data-mce-=""&gt;&lt;a name="label2"&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;系统特色&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 13px;"&gt;1，不采用code-behind机制，不使用任何服务器控件，全面将工作放在前台实现，后台只处理数据部分。页面还是用aspx后缀，继承于统一的页面基类(为了方便权限的控制)。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 13px;"&gt;2， 极大得避免代码冗余。无论是列表页面还是明细页面，你看到的代码都是极其简洁的，就算是表单，甚至不需要任何的html代码，而是定义【有用的信息】，对【布局】、【数据】有用的 【数据结构】，当然表格、搜索框 都是如此。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 13px;"&gt;3，统一的数据提交/接收接口，所有的数据请求通过ajax实现，经过 handler/*.ashx处理，针对前台数据请求类型的不同，一共有6个：&lt;/span&gt;&lt;/p&gt;&lt;blockquote style='border:2px solid #EFEFEF;color:#333333;padding:5px 10px;'&gt;&lt;p&gt;&lt;span style="font-size: 13px;"&gt;ajax.ashx ---- 通用的数据请求入口（表单提交入口、表单加载入口、常用的数据加载入口等等)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 13px;"&gt;grid.ashx ---- 通用的ligerGrid表格数据加载入口&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 13px;"&gt;treegrid.ashx ---- 通用的ligerGrid表格树格式数据加载入口&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 13px;"&gt;tree.ashx ---- 通用的ligerTree树格式数据加载入口&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 13px;"&gt;select.ashx ---- 通用的ligerComboBox数据加载入口&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 13px;"&gt;validate.ashx ---- 通用的验证数据验证入口(针对jQuery.validation remote验证)&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;br /&gt;&lt;span style="font-size: 13px;"&gt;4，完善的数据权限控制机制。除了基本的 (用户角色) =&amp;gt; (模块功能) 这类的功能权限控制，还在数据请求入口做了一点小动作，根据【当前的用户信息】和【配置好的数据权限规则】筛选过滤数据。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 13px;"&gt;5，自动的搜索框、自动的表单。 表单和搜索框不再需要一堆复杂冗余的html，而是定义好字段的信息(字段名、宽度、类型等)就可以自动完成页面的构造。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 13px;"&gt;6，自动的表格，同样地表格也只是需要一些配置信息，就可以自动完成。并利用过滤器插件，拥有高级自定义查询功能，和历史查询功能。&lt;/span&gt;&lt;/p&gt;&lt;div data-mce-=""&gt;&lt;a name="label3"&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;系统介绍 - 首页&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;带权限控制的模块&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 13px;"&gt;加载首页时，系统会根据用户的信息加载权限许可的菜单模块：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;img style="border: 1px solid #aaa; padding: 6px;" src="http://pic002.cnblogs.com/images/2012/109724/2012031615350059.jpg" alt="" /&gt;&lt;/p&gt;&lt;div data-mce-=""&gt;&lt;a name="label4"&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;系统介绍 - 列表页(配置的搜索框、表格、动态的按钮(权限控制))&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 13px;"&gt;搜索框、表格不再是一堆html拼出来，而是只定义了与【布局】和【数据】配置信息的。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 13px;"&gt;操作按钮是根据当前页面的权限控制，加载有权限许可的操作按钮。&lt;/span&gt;&lt;/p&gt;&lt;blockquote style='border:2px solid #EFEFEF;color:#333333;padding:5px 10px;'&gt;&lt;p&gt;&lt;span style="font-size: 13px;"&gt;具体的做法是判断页面的MenuNo(菜单唯一编码)，根据MenuNo和当前用户信息加载权限许可的按钮,MenuNo的获取规则：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 13px;"&gt;优先级一：如果页面定义了ID为&amp;ldquo;MenuNo&amp;rdquo;的隐藏域，那么读取这个隐藏域的值，比如：&amp;lt;ipnut type="hidden" id="MenuNo" value="OrderManageOrders" /&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 13px;"&gt;优先级二：根据页面URL的QueryString，Name为MenuNo的值&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 13px;"&gt;优先级三：根据页面URL进行匹配，/OrderManage/Orders.aspx，MenuNo就是OrderManageOrders&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;span style="font-size: 13px;"&gt;界面效果：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;img style="border: 1px solid #aaa; padding: 6px;" src="http://pic002.cnblogs.com/images/2012/109724/2012031615313057.jpg" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 13px;"&gt;相关代码：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;img style="border: 1px solid #aaa; padding: 6px;" src="http://pic002.cnblogs.com/images/2012/109724/2012031700574836.png" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 13px;"&gt;搜索框表单元素并不是都以文本框的形式，而是支持日期、下拉框等等类型，这些编辑器是可以扩展的，理论上是通用的。比如发货城市，可以配置为下拉框选择：&lt;/span&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;display: "城市", name: "ShipCity", newline: true, labelWidth: &lt;span style="color: #800000; font-weight: bold;"&gt;100&lt;/span&gt;, width: &lt;span style="color: #800000; font-weight: bold;"&gt;220&lt;/span&gt;, &lt;span style="color: #ff00ff;"&gt;space&lt;/span&gt;: &lt;span style="color: #800000; font-weight: bold;"&gt;30&lt;/span&gt;, type: "&lt;span style="color: #0000ff;"&gt;select&lt;/span&gt;", cssClass: "field", options:{ &lt;br /&gt;               url: "..&lt;span style="color: #808080;"&gt;/&lt;/span&gt;handler&lt;span style="color: #808080;"&gt;/&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;select&lt;/span&gt;.ashx?&lt;span style="color: #0000ff;"&gt;view&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;Orders&lt;span style="color: #808080;"&gt;&amp;amp;&lt;/span&gt;idfield&lt;span style="color: #808080;"&gt;=&lt;/span&gt;ShipCity&lt;span style="color: #808080;"&gt;&amp;amp;&lt;/span&gt;textfield&lt;span style="color: #808080;"&gt;=&lt;/span&gt;ShipCity&lt;span style="color: #808080;"&gt;&amp;amp;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;distinct&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;true"&lt;br /&gt;}&lt;/div&gt;&lt;p&gt;&lt;span style="font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;div data-mce-=""&gt;&lt;a name="label4"&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;系统介绍 - 明细页(自动创建表单、表单自动加载、表单提交)&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 13px;"&gt;表单应该包括三个部分,表单结构、表单数据、表单提交 ：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 13px;"&gt;&lt;span style="color: #ff0000;"&gt;表单结构：&lt;/span&gt;为了样式的统一，代码的简洁，表单同样也是通过&amp;ldquo;配置&amp;rdquo;出来的（利用了ligerForm插件）&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 13px;"&gt;&lt;span style="color: #ff0000;"&gt;表单数据：&lt;/span&gt;通过指定一个视图/表名、主键字段名、主键值加载到一条记录以后，利用JS访问每一个属性加载到相应的控件上面，并更新控件的样式。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 13px;"&gt;&lt;span style="color: #ff0000;"&gt;表单提交：&lt;/span&gt;利用jquery.validate做表单验证，利用jQuery.form.js做ajax提交数据&lt;/span&gt;&lt;/p&gt;&lt;blockquote style='border:2px solid #EFEFEF;color:#333333;padding:5px 10px;'&gt;&lt;p&gt;&lt;span style="font-size: 13px;"&gt;&lt;span&gt;说明两点：&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 13px;"&gt;&lt;span&gt;1，更新控件的样式：表单的文本框、下拉框都是用ligerui内置的表单元素组件，这些组件都有updateStyle方法，就是当值改变时，界面上面没有及时反应，可调用这个方法&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 13px;"&gt;&lt;span&gt;2，表单提交的统一入口是ajax.ashx，我们会传入type和method，利用反射的机制找到相应的方法，将请求的数据(Request.Form)传给那个方法。比如增加订单的签名：AjaxResult AddOrders(NameValueCollection form)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;span style="font-size: 13px;"&gt;界面如下：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;img style="border: 1px solid #aaa; padding: 6px;" src="http://pic002.cnblogs.com/images/2012/109724/2012031615373810.jpg" alt="" /&gt;&lt;/p&gt;&lt;div data-mce-=""&gt;&lt;a name="label6"&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;系统介绍 - 菜单/按钮&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 13px;"&gt;&lt;span style="font-size: 13px;"&gt;菜单的编辑保存，采用表格【行编辑】模式，并且支持提交前验证，图标在dialog中选取，使得操作更加简单。&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;img style="border: 1px solid #aaa; padding: 6px;" src="http://pic002.cnblogs.com/images/2012/109724/2012031700160495.png" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&lt;img style="border: 1px solid #aaa; padding: 6px;" src="http://pic002.cnblogs.com/images/2012/109724/2012031700113695.png" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&lt;img style="border: 1px solid #aaa; padding: 6px;" src="http://pic002.cnblogs.com/images/2012/109724/2012031700164862.png" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 13px;"&gt;按钮的编辑模式同菜单一样，采用表格的【行编辑模式】。对应字段信息不多的，我也比较推荐这种方式，而不是再打开一个页面。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 13px;"&gt;如果需要全表格同时编辑，那么可以采用表格的【单元格编辑模式】，比如系统中【订单编辑页-订单明细表格】&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;img style="border: 1px solid #aaa; padding: 6px;" src="http://pic002.cnblogs.com/images/2012/109724/2012031700212691.png" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;img style="border: 1px solid #aaa; padding: 6px;" src="http://pic002.cnblogs.com/images/2012/109724/2012031700213873.png" alt="" /&gt;&lt;/p&gt;&lt;div data-mce-=""&gt;&lt;a name="label7"&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;系统介绍 - 权限中心&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 13px;"&gt;&lt;span style="font-size: 13px;"&gt;设计思想同上一个版本一样，采用 &amp;nbsp;【用户】、【角色】 &amp;nbsp; =》 【模块】、【功能】 的权限控制。不清楚的朋友可以参考我之前的一篇介绍：《&lt;a id="cb_post_title_url" class="postTitle2" href="http://www.cnblogs.com/leoxie2011/archive/2011/05/19/2050626.html"&gt;通用权限管理设计 之 数据库结构设计&lt;/a&gt;》&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 13px;"&gt;&lt;span style="font-size: 13px;"&gt;在界面上仅仅只是用了一个页面，就完成了全部的权限控制，操作很简洁。&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 13px;"&gt;设计规则上，角色可以授权权限许可。而用户，是在角色的基础上面，单独设置为许可、或者禁止。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;img style="border: 1px solid #aaa; padding: 6px;" src="http://pic002.cnblogs.com/images/2012/109724/2012031700262656.png" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 13px;"&gt;可以单独给用户设置权限（许可或者禁止）&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;img style="border: 1px solid #aaa; padding: 6px;" src="http://pic002.cnblogs.com/images/2012/109724/2012031700284582.png" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 13px;"&gt;&lt;span style="font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div data-mce-=""&gt;&lt;a name="label8"&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;系统介绍 - 数据权限&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 13px;"&gt;这个版本新增的功能，可以在功能权限(上面提到的)的基础上进一步的权限控制扩展，比如销售员只能查看到自己的销售订单。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 13px;"&gt;&lt;span style="font-size: 13px;"&gt;使用了ligerFilter过滤器插件，这是一个通用条件查询组件。可以自定义编辑器的类型，如下图选择角色的下拉框。&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;img style="border: 1px solid #aaa; padding: 6px;" src="http://pic002.cnblogs.com/images/2012/109724/2012031700344553.png" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 13px;"&gt;下图是编辑页面,定义了数据权限规则：【订单查看员只能查看自己的】、【订单管理员和演示角色可以看到全部的】。&lt;/span&gt;&lt;/p&gt;&lt;blockquote style='border:2px solid #EFEFEF;color:#333333;padding:5px 10px;'&gt;&lt;p&gt;&lt;span style="font-size: 13px;"&gt;管理员永远不会受到数据权限的限制&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 13px;"&gt;注意到有5个可选择的用户信息参数，根据业务需求这里可以扩展&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;img style="border: 1px solid #aaa; padding: 6px;" src="http://pic002.cnblogs.com/images/2012/109724/2012031700345662.png" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 13px;"&gt;5个用户信息参数在组织最终的数据库执行语句时将会返回以下的匹配关系，这里是可以很好地扩展的。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;img style="border: 1px solid #aaa; padding: 6px;" src="http://pic002.cnblogs.com/images/2012/109724/2012031710020392.png" alt="" data-mce-="" /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;span style="font-size: 13px;"&gt;数据权限的限制总是：｛字段名 条件 允许值｝&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 13px;"&gt;下图列出了订单表的所有字段，并且加入几个用户参数方便做权限的具体分配。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;img style="border: 1px solid #aaa; padding: 6px;" src="http://pic002.cnblogs.com/images/2012/109724/2012031700350864.png" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 13px;"&gt;利用ligerFilter编辑器可自定义的特性，这里当前用户信息可以在下拉框中选择，你甚至可以改成在弹出窗口中选择。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;img style="border: 1px solid #aaa; padding: 6px;" src="http://pic002.cnblogs.com/images/2012/109724/2012031700351775.png" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;div data-mce-=""&gt;&lt;a name="label9"&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;系统介绍 - 字段权限&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 13px;"&gt;如果说数据权限是对功能权限在纵向的扩展，那么字段权限就是在横向的扩展。可以禁止指定用户/角色 对某些字段的访问，这个功能同样是本版本增加的：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;img style="border: 1px solid #aaa; padding: 6px;" src="http://pic002.cnblogs.com/images/2012/109724/2012031800411249.png" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&lt;img style="border: 1px solid #aaa; padding: 6px;" src="http://pic002.cnblogs.com/images/2012/109724/2012031800412672.png" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;div data-mce-=""&gt;&lt;a name="label10"&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;系统介绍 - 下拉框应用细节&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 13px;"&gt;下拉框在系统中的应用都很经典，比如下拉框树，下拉框表格，下拉框在弹出窗口中选取数据。这里介绍几个应用的细节&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 13px;"&gt;&lt;span style="font-size: 13px;"&gt;用户在部门树中选择：&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;img style="border: 1px solid #aaa; padding: 6px;" src="http://pic002.cnblogs.com/images/2012/109724/2012031701122961.png" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 13px;"&gt;&lt;span style="font-size: 13px;"&gt;实则上系统针对下拉框选取数据的各种情况都通用化了，只需要简单的配置信息就可以实现在指定数据源中选择,比如上图，只需要这样配置：&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;img style="border: 1px solid #aaa; padding: 6px;" src="http://pic002.cnblogs.com/images/2012/109724/2012031701152792.png" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 13px;"&gt;上图是下拉框树的实例，再看看普通下拉框的：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;img style="border: 1px solid #aaa; padding: 6px;" src="http://pic002.cnblogs.com/images/2012/109724/2012031701170811.png" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 13px;"&gt;这两种情况都是加载全部数据的，如果下拉框的数据来源很大，我们当然不想在一次性加载全部数据中，而是可以在弹出的、分页的、可过滤的表格中选取数据，这样会让表单的应用变得更加人性化。基于这种需求，在这个系统对下拉框插件中扩展了openSelect方法，只需要指定grid的配置参数，search的配置参数（可选），返回的字段名，就可以快速实现这个应用。可以参考系统中【订单中选择客户】、【产品中选择供应商】。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;img style="border: 1px solid #aaa; padding: 6px;" src="http://pic002.cnblogs.com/images/2012/109724/2012031700423420.png" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 13px;"&gt;Code：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;img style="border: 1px solid #aaa; padding: 6px;" src="http://pic002.cnblogs.com/images/2012/109724/2012031701195211.png" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;div data-mce-=""&gt;&lt;a name="label11"&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;结语&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 13px;"&gt;这个版本对于【增删改】常用的操作封装得更加彻底，大大强化了客户端javascript的处理能力，而服务器端只是起到数据处理的作用。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 13px;"&gt;系统中大量使用了grid、tree以及各种表单插件，更大程度地展示了ligerui的很多功能的使用。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 13px;"&gt;还有很多的细节和使用技巧，比如订单明细编辑表格中引入产品、Tab选项延时加载。都有待你的体验和建议。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;欢迎反馈：&amp;nbsp;&lt;a href="http://bbs.ligerui.com"&gt;http://bbs.ligerui.com&lt;/a&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/leoxie2011/aggbug/2400367.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/leoxie2011/archive/2012/03/18/2400367.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/leoxie2011/archive/2012/03/18/2404927.html</id><title type="text">jQuery LigerUI 使用教程表格篇(3) 复选框、多表头、分组、汇总和明细</title><summary type="text">阅读目录复选框多表头分组汇总明细复选框grid可以设置复选框模式进行多选，只需要简单的配置checked:true获取选中行如果要获取选中的行，可以用getSelecteds方法：var rows = g.getSelecteds();alert(rows.length);默认选中有的时候我们想让某一些行初始化的时候就选中，可以用isChecked参数，这是一个函数，使用例子： $("#maingrid4").ligerGrid({ checkbox: true, columns: [ { display...</summary><published>2012-03-18T10:31:00Z</published><updated>2012-03-18T10:31:00Z</updated><author><name>谢略</name><uri>http://www.cnblogs.com/leoxie2011/</uri></author><link rel="alternate" href="http://www.cnblogs.com/leoxie2011/archive/2012/03/18/2404927.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/leoxie2011/archive/2012/03/18/2404927.html"/><content type="html">&lt;p&gt;&lt;a name="#lable1Grid01_Top"&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="category"&gt;&lt;p&gt;&lt;strong&gt;&lt;strong&gt;阅读目录&lt;/strong&gt;&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="#lable1Grid03_1"&gt;复选框&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="#lable1Grid03_2"&gt;多表头&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="#lable1Grid03_3"&gt;分组&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="#lable1Grid03_4"&gt;汇总&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="#lable1Grid03_5"&gt;明细&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;p&gt;&lt;a name="lable1Grid03_1"&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;复选框&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;grid可以设置复选框模式进行多选，只需要简单的配置&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;checked:&lt;span style="color: #0000ff;"&gt;true&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;获取选中行&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;如果要获取选中的行，可以用getSelecteds方法：&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #ff00ff;"&gt;var&lt;/span&gt; rows &lt;span style="color: #808080;"&gt;=&lt;/span&gt; g.getSelecteds();&lt;br /&gt;alert(rows.length);&lt;/div&gt;&lt;p&gt;&lt;strong&gt;默认选中&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;有的时候我们想让某一些行初始化的时候就选中，可以用isChecked参数，这是一个函数，使用例子：&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt; $("#maingrid4").ligerGrid({&lt;br /&gt;                checkbox: &lt;span style="color: #0000ff;"&gt;true&lt;/span&gt;,&lt;br /&gt;                columns: [&lt;br /&gt;                { display: '主键', name: 'CustomerID', align: 'left', width: 120 },&lt;br /&gt;                { display: '公司名', name: 'CompanyName', minWidth: 60 },&lt;br /&gt;                { display: '联系名', name: 'ContactName', width: 50,align:'left' } &lt;br /&gt;                { display: '城市', name: 'City' }&lt;br /&gt;                ],  pageSize:30,&lt;br /&gt;                data: CustomersData,  &lt;br /&gt;                width: '100%', height: '100%', isChecked: f_isChecked&lt;br /&gt;            });&amp;nbsp;&lt;br /&gt; &lt;span style="color: #0000ff;"&gt;function&lt;/span&gt; f_isChecked(rowdata)&lt;br /&gt;        {&lt;br /&gt;            &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; (rowdata.CustomerID.indexOf('AN') == 0) &lt;br /&gt;                &lt;span style="color: #0000ff;"&gt;return&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;true&lt;/span&gt;;&lt;br /&gt;            &lt;span style="color: #0000ff;"&gt;return&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;false&lt;/span&gt;;&lt;br /&gt;        }&lt;/div&gt;&lt;p&gt;&lt;strong&gt;锁定列&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;如果启动了固定列功能，frozen:true。那么复选框列默认是锁定的，可以通过设置frozenCheckbox参数来解除&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;frozenCheckbox:&lt;span style="color: #0000ff;"&gt;false&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&lt;img style="border: 1px solid #aaa; padding: 6px;" src="http://pic002.cnblogs.com/images/2012/109724/2012031817355451.png" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;相关事件&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;img style="border: 1px solid #aaa; padding: 6px;" src="http://pic002.cnblogs.com/images/2012/109724/2012031817225054.png" alt="" /&gt;&lt;/p&gt;&lt;p&gt;如果你不知道事件如何使用，可以参考&lt;/p&gt;&lt;p&gt;&lt;a id="cb_post_title_url" class="postTitle2" href="http://www.cnblogs.com/leoxie2011/archive/2012/01/16/2324106.html"&gt;jQuery LigerUI 使用教程入门篇&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a id="cb_post_title_url" class="postTitle2" href="http://www.cnblogs.com/leoxie2011/archive/2012/01/17/2324485.html"&gt;jQuery LigerUI 使用教程表格篇(1)&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a name="lable1Grid03_2"&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;多表头&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;将columns配置为树的格式就可以变成多表头。比如:&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;columns: [&lt;br /&gt;                { display: '公司信息', columns:&lt;br /&gt;                [&lt;br /&gt;                    &lt;br /&gt;                    { display: '公司名', name: 'CompanyName', minWidth: 60,width:300  } &lt;br /&gt;                ]&lt;br /&gt;                },&lt;br /&gt;                { display: '个人信息', columns:&lt;br /&gt;                [&lt;br /&gt;                    { display: '主键', name: 'CustomerID', align: 'left', width: 120 }, &lt;br /&gt;                    { display: '联系名', name: 'ContactName', width: 50, align: 'left' },&lt;br /&gt;                    { display: '城市', name: 'City', headerText: '44444' }&lt;br /&gt;                ]&lt;br /&gt;                }&lt;br /&gt;                ]&lt;/div&gt;&lt;p&gt;columns可以无限级扩展，也就是说可以三级多表头，也可以是四级多表头，只要你愿意。&lt;/p&gt;&lt;p&gt;&lt;img style="border: 1px solid #aaa; padding: 6px;" src="http://pic002.cnblogs.com/images/2012/109724/2012031818344747.png" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&lt;a name="lable1Grid03_3"&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;分组&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;分组只需要简单得配置一个参数groupColumnName，插件就可以自动完成。配置groupColumnDisplay可以用于显示分组时的名字：&lt;/p&gt;&lt;p&gt;&lt;img style="border: 1px solid #aaa; padding: 6px;" src="http://pic002.cnblogs.com/images/2012/109724/2012031818124039.png" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&lt;img style="border: 1px solid #aaa; padding: 6px;" src="http://pic002.cnblogs.com/images/2012/109724/2012031818131623.png" alt="" /&gt;&lt;/p&gt;&lt;p&gt;也可以自定义分组显示的格式：&lt;/p&gt;&lt;p&gt;&lt;img style="border: 1px solid #aaa; padding: 6px;" src="http://pic002.cnblogs.com/images/2012/109724/2012031818135482.png" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&lt;img style="border: 1px solid #aaa; padding: 6px;" src="http://pic002.cnblogs.com/images/2012/109724/2012031818140861.png" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&lt;a name="lable1Grid03_4"&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;汇总&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;汇总有两种方式，一种是针对全部数据的汇总，一直是针对当前页进行汇总&lt;/p&gt;&lt;p&gt;1，全部数据的汇总： 一般你绑定的表格数据有Rows和Total属性，你可以增加其他的属性，用于统计使用，比如加上 SumAmount。&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;totalRender: f_totalRender&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;function&lt;/span&gt; f_totalRender(data, currentPageData)&lt;br /&gt; {&lt;br /&gt;        &lt;span style="color: #0000ff;"&gt;return&lt;/span&gt; "总金额数量:"+data.SumAmount; &lt;br /&gt; }&lt;/div&gt;&lt;p&gt;&lt;img style="border: 1px solid #aaa; padding: 6px;" src="http://pic002.cnblogs.com/images/2012/109724/2012031817504777.png" alt="" /&gt;&lt;/p&gt;&lt;p&gt;2，当前页数据/分组数据的汇总，针对某一列进行配置，只需要设置totalSummary的type：&lt;/p&gt;&lt;p&gt;&lt;img style="border: 1px solid #aaa; padding: 6px;" src="http://pic002.cnblogs.com/images/2012/109724/2012031817532571.png" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&lt;img style="border: 1px solid #aaa; padding: 6px;" src="http://pic002.cnblogs.com/images/2012/109724/2012031817550366.png" alt="" /&gt;&lt;/p&gt;&lt;p&gt;也可以自定义汇总单元格的格式：&lt;/p&gt;&lt;p&gt;&lt;img style="border: 1px solid #aaa; padding: 6px;" src="http://pic002.cnblogs.com/images/2012/109724/2012031817555670.png" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&lt;img style="border: 1px solid #aaa; padding: 6px;" src="http://pic002.cnblogs.com/images/2012/109724/2012031817564692.png" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;可以和分组一起工作，只汇总分组的数据：&lt;/p&gt;&lt;p&gt;&lt;img style="border: 1px solid #aaa; padding: 6px;" src="http://pic002.cnblogs.com/images/2012/109724/2012031817593976.png" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&lt;img style="border: 1px solid #aaa; padding: 6px;" src="http://pic002.cnblogs.com/images/2012/109724/2012031818000676.png" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&lt;a name="lable1Grid03_5"&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;明细&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;明细的工作原理很简单，就是在点击明细展开/收缩按钮的时候，会创建一个空白的行(下图代码中得detailPanel)，并获取当前行的数据。我们会根据当前行数据进行一些工作，比如获取明细表的数据，或者是展开当前列表并未列出的一些信息，像图片之类的，也可以展开当前行的编辑行。&lt;/p&gt;&lt;p&gt;&lt;img style="border: 1px solid #aaa; padding: 6px;" src="http://pic002.cnblogs.com/images/2012/109724/2012031818203914.png" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&lt;img style="border: 1px solid #aaa; padding: 6px;" src="http://pic002.cnblogs.com/images/2012/109724/2012031818210846.png" alt="" /&gt;&lt;/p&gt;&lt;p&gt;明细编辑行：&lt;/p&gt;&lt;p&gt;&lt;img style="border: 1px solid #aaa; padding: 6px;" src="http://pic002.cnblogs.com/images/2012/109724/2012031818253838.png" alt="" /&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/leoxie2011/aggbug/2404927.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/leoxie2011/archive/2012/03/18/2404927.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/leoxie2011/archive/2012/03/18/2324491.html</id><title type="text">jQuery LigerUI 使用教程表格篇(2) 服务器数据交互</title><summary type="text">阅读目录使用远程数据使用远程数据 排序使用远程数据 分页使用远程数据ligerGrid允许指定一个url来加载数据，并且支持排序和分页。对于数据格式是有一定的限制的，比如{ "Rows":[],"Total":0}我们需要将要显示的数据放在Rows里面(数组的形式)，将记录数放在TotalRows和Total这两个字段名不是固定的，可以通过参数进行修改：root: 'Rows', //数据源字段名 record: 'Total', //数据源记录数字段名使用远程数据 排序排序在首次加载数据的时候，会判断有没有设置了sort</summary><published>2012-03-18T07:17:00Z</published><updated>2012-03-18T07:17:00Z</updated><author><name>谢略</name><uri>http://www.cnblogs.com/leoxie2011/</uri></author><link rel="alternate" href="http://www.cnblogs.com/leoxie2011/archive/2012/03/18/2324491.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/leoxie2011/archive/2012/03/18/2324491.html"/><content type="html">&lt;p&gt;&lt;a name="#lable1Grid01_Top"&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="category"&gt;&lt;p&gt;&lt;strong&gt;&lt;strong&gt;阅读目录&lt;/strong&gt;&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="#lable1Grid02_1"&gt;使用远程数据&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="#lable1Grid02_2"&gt;使用远程数据 排序&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="#lable1Grid02_3"&gt;使用远程数据 分页&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;&lt;a name="lable1Grid02_1"&gt;&lt;/a&gt;使用远程数据&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;ligerGrid允许指定一个url来加载数据，并且支持排序和分页。对于数据格式是有一定的限制的，比如&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;{&lt;br /&gt;      "Rows":&lt;span style="color: #ff0000;"&gt;[]&lt;/span&gt;,"Total":&lt;span style="color: #800000; font-weight: bold;"&gt;0&lt;/span&gt;&lt;br /&gt;}&lt;/div&gt;&lt;p&gt;我们需要将要显示的数据放在Rows里面(数组的形式)，将记录数放在Total&lt;/p&gt;&lt;blockquote style='border:2px solid #EFEFEF;color:#333333;padding:5px 10px;'&gt;&lt;p&gt;Rows和Total这两个字段名不是固定的，可以通过参数进行修改：&lt;/p&gt;&lt;p&gt;&lt;span style="color: #ff0000;"&gt;root: 'Rows', &amp;nbsp; &amp;nbsp; &amp;nbsp; //数据源字段名&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #ff0000;"&gt; record: 'Total', &amp;nbsp; &amp;nbsp;//数据源记录数字段名&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;strong&gt;&lt;a name="lable1Grid02_2"&gt;&lt;/a&gt;使用远程数据 排序&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;排序在首次加载数据的时候，会判断有没有设置了sortName参数，如果有会往服务器传输排序的信息：&lt;/p&gt;&lt;blockquote style='border:2px solid #EFEFEF;color:#333333;padding:5px 10px;'&gt;&lt;p&gt;string sortname = context.Request["sortname"];&lt;br /&gt; string sortorder = context.Request["sortorder"];&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;我们在表头点击的时候，也有可能触发服务器排序的操作：&lt;/p&gt;&lt;p&gt;&lt;img style="border: 1px solid #aaa; padding: 6px;" src="http://pic002.cnblogs.com/images/2012/109724/2012031814553134.png" alt="" /&gt;&lt;/p&gt;&lt;p&gt;通常我们会指定默认排序的字段，比如&amp;nbsp;sortName: 'OrderID'：&lt;/p&gt;&lt;p&gt;&lt;img style="border: 1px solid #aaa; padding: 6px;" src="http://pic002.cnblogs.com/images/2012/109724/2012031814565619.png" alt="" /&gt;&lt;/p&gt;&lt;p&gt;sortname和sortorder参数名是可以改变的：&lt;/p&gt;&lt;p&gt;&lt;img style="border: 1px solid #aaa; padding: 6px;" src="http://pic002.cnblogs.com/images/2012/109724/2012031815002591.png" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;a name="lable1Grid02_3"&gt;&lt;/a&gt;使用远程数据 分页&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;liger grid自带了分页，如果使用本地数据，分页可以不用关心，不过如果用到远程加载数据，那么需要你自己来完成这个分页的操作，根据分页的信息返回相应的数据。&lt;/p&gt;&lt;p&gt;组件会往服务器传输几个分页有用的参数：&lt;/p&gt;&lt;p&gt;&lt;img style="border: 1px solid #aaa; padding: 6px;" src="http://pic002.cnblogs.com/images/2012/109724/2012031815070736.png" alt="" /&gt;&lt;/p&gt;&lt;p&gt;服务器端根据这二个参数进行分页处理：&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;string _pagenumber &lt;span style="color: #808080;"&gt;=&lt;/span&gt; context.Request&lt;span style="color: #ff0000;"&gt;[&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;"page"&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;]&lt;/span&gt;; &lt;br /&gt;string _pagesize &lt;span style="color: #808080;"&gt;=&lt;/span&gt; context.Request&lt;span style="color: #ff0000;"&gt;[&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;"pagesize"&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;]&lt;/span&gt;; &lt;/div&gt;&lt;p&gt;我们需要返回json格式的字符串：&lt;/p&gt;&lt;p&gt;&lt;img style="border: 1px solid #aaa; padding: 6px;" src="http://pic002.cnblogs.com/images/2012/109724/2012031815093838.png" alt="" /&gt;&lt;/p&gt;&lt;p&gt;如果还有什么不明白的可以参考：&lt;/p&gt;&lt;p&gt;&lt;a id="cb_post_title_url" class="postTitle2" href="http://www.cnblogs.com/leoxie2011/archive/2012/03/06/2381720.html"&gt;jQuery LigerUI 表格LigerGrid 结合 ASP.NET MVC 显示数据&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a id="cb_post_title_url" class="postTitle2" href="http://www.cnblogs.com/leoxie2011/archive/2011/05/28/2061406.html"&gt;jQuery liger ui ligerGrid 打造通用的分页排序查询表格(提供下载)&lt;/a&gt;&lt;/p&gt;&lt;p&gt;或者到论坛提问：&lt;/p&gt;&lt;p&gt;&lt;a href="http://bbs.ligerui.com"&gt;http://bbs.ligerui.com&lt;/a&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/leoxie2011/aggbug/2324491.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/leoxie2011/archive/2012/03/18/2324491.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/leoxie2011/archive/2012/03/06/2381720.html</id><title type="text">jQuery LigerUI 表格LigerGrid 结合 ASP.NET MVC 显示数据</title><summary type="text">阅读目录准备工作。创建MVC项目，拷贝LIGERUI库到Web程序中。增加视图和Action，引入jQuery库和ligerUI库的引用，模板页中增加视图的链接准备数据结构(ligerGrid的调用) 和数据源(增加一个Action,返回JSON格式)如何分页和排序源码下载准备工作。创建MVC项目，拷贝LIGERUI库到Web程序中。一，准备工作使用开发工具：Microsoft Visual Studio 2010使用插件版本： jQuery 1.4.1 、 jQuery LigerUI 1.1.7二，创建MVC项目三，下载最新版的ligerui，并拷贝到web的根目录下载地址：http://</summary><published>2012-03-06T05:58:00Z</published><updated>2012-03-06T05:58:00Z</updated><author><name>谢略</name><uri>http://www.cnblogs.com/leoxie2011/</uri></author><link rel="alternate" href="http://www.cnblogs.com/leoxie2011/archive/2012/03/06/2381720.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/leoxie2011/archive/2012/03/06/2381720.html"/><content type="html">&lt;p&gt;&lt;a name="labelTop"&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="category"&gt;&lt;p&gt;&lt;strong&gt;&lt;strong&gt;阅读目录&lt;/strong&gt;&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="#label1"&gt;准备工作。创建MVC项目，拷贝LIGERUI库到Web程序中。&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="#label2"&gt;增加视图和Action，引入jQuery库和ligerUI库的引用，模板页中增加视图的链接&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="#label3"&gt;准备数据结构(ligerGrid的调用) 和数据源(增加一个Action,返回JSON格式)&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="#label4"&gt;如何分页和排序&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="#label5"&gt;源码下载&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div data-mce-=""&gt;&lt;a name="label1"&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;准备工作。创建MVC项目，拷贝LIGERUI库到Web程序中。&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;一，准备工作&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;使用开发工具：Microsoft Visual Studio 2010&lt;/p&gt;&lt;p&gt;使用插件版本： jQuery 1.4.1 &amp;nbsp;、 jQuery LigerUI 1.1.7&lt;/p&gt;&lt;p&gt;&lt;strong&gt;二，创建MVC项目&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2012/109724/2012030613562421.jpg" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;三，下载最新版的ligerui，并拷贝到web的根目录&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;下载地址：&lt;a href="http://ligerui.googlecode.com/"&gt;http://ligerui.googlecode.com/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;img style="border: 1px solid #aaa; padding: 6px;" src="http://pic002.cnblogs.com/images/2012/109724/2012030613322921.jpg" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;img style="border: 1px solid #aaa; padding: 6px;" src="http://pic002.cnblogs.com/images/2012/109724/2012030613331952.jpg" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div data-mce-=""&gt;&lt;a name="label2"&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;增加视图和Action，引入jQuery库和ligerUI库的引用，模板页中增加视图的链接&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;一，增加视图&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;img style="border: 1px solid #aaa; padding: 6px;" src="http://pic002.cnblogs.com/images/2012/109724/2012030613333883.jpg" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2012/109724/2012030613335439.jpg" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;二，增加Action&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;img style="border: 1px solid #aaa; padding: 6px;" src="http://pic002.cnblogs.com/images/2012/109724/2012030613344185.jpg" alt="增加Action" /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;三，引入jQuery库和ligerui的引用&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;img style="border: 1px solid #aaa; padding: 6px;" src="http://pic002.cnblogs.com/images/2012/109724/2012030613352881.jpg" alt="引入jQuery库和ligerui的引用" /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;四：模板页增加视图的链接&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;img style="border: 1px solid #aaa; padding: 6px;" src="http://pic002.cnblogs.com/images/2012/109724/2012030613393686.jpg" alt="模板页增加视图的链接" /&gt;&lt;/p&gt;&lt;div data-mce-=""&gt;&lt;a name="label3"&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;准备数据结构(ligerGrid的调用) 和数据源(增加一个Action,返回JSON格式)&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;一，编写JS代码调用ligerGrid&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;img style="border: 1px solid #aaa; padding: 6px;" src="http://pic002.cnblogs.com/images/2012/109724/2012030614025038.jpg" alt="" /&gt;&lt;/p&gt;&lt;blockquote style='border:2px solid #EFEFEF;color:#333333;padding:5px 10px;'&gt;&lt;p&gt;这里要注意一下URL的格式 ： /Home/GetData&amp;nbsp;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;二，准备数据源(增加一个Action，返回JSON格式)&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;img style="border: 1px solid #aaa; padding: 6px;" src="http://pic002.cnblogs.com/images/2012/109724/2012030613415319.jpg" alt="准备数据源(增加一个Action，返回JSON格式)" /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;三，效果&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2012/109724/2012030613432382.jpg" alt="" /&gt;&lt;/p&gt;&lt;div data-mce-=""&gt;&lt;a name="label4"&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;如何分页和排序。&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;一，ligerGrid服务器端分页的原理&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;可以利用firebug来调试，可以查看到grid加载分页数据的时候，会往服务器传几个数据：&lt;/p&gt;&lt;p&gt;&lt;img style="border: 1px solid #aaa; padding: 6px;" src="http://pic002.cnblogs.com/images/2012/109724/2012030613290714.jpg" alt="" /&gt;&lt;/p&gt;&lt;p&gt;那么在后台我们需要根据这几个参数返回grid适合的数据：&lt;/p&gt;&lt;p&gt;&lt;img style="border: 1px solid #aaa; padding: 6px;" src="http://pic002.cnblogs.com/images/2012/109724/2012030613301925.jpg" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;二，如何使用MVC Action接收并返回数据：&lt;/strong&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #008080;"&gt; 1&lt;/span&gt;    &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; ActionResult GetData2()&lt;br /&gt;&lt;span style="color: #008080;"&gt; 2&lt;/span&gt;         {&lt;br /&gt;&lt;span style="color: #008080;"&gt; 3&lt;/span&gt;             &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;排序的字段名&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 4&lt;/span&gt;             &lt;span style="color: #0000ff;"&gt;string&lt;/span&gt; sortname = Request.Params[&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;sortname&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;];&lt;br /&gt;&lt;span style="color: #008080;"&gt; 5&lt;/span&gt;             &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;排序的方向&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 6&lt;/span&gt;             &lt;span style="color: #0000ff;"&gt;string&lt;/span&gt; sortorder = Request.Params[&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;sortorder&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;];&lt;br /&gt;&lt;span style="color: #008080;"&gt; 7&lt;/span&gt;             &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;当前页&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 8&lt;/span&gt;             &lt;span style="color: #0000ff;"&gt;int&lt;/span&gt; page = Convert.ToInt32(Request.Params[&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;page&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;]);&lt;br /&gt;&lt;span style="color: #008080;"&gt; 9&lt;/span&gt;             &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;每页显示的记录数&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;10&lt;/span&gt;             &lt;span style="color: #0000ff;"&gt;int&lt;/span&gt; pagesize = Convert.ToInt32(Request.Params[&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;pagesize&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;]);&lt;br /&gt;&lt;span style="color: #008080;"&gt;11&lt;/span&gt; &lt;br /&gt;&lt;span style="color: #008080;"&gt;12&lt;/span&gt;             IList&amp;lt;Node&amp;gt; list = &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; List&amp;lt;Node&amp;gt;();&lt;br /&gt;&lt;span style="color: #008080;"&gt;13&lt;/span&gt;             &lt;span style="color: #0000ff;"&gt;var&lt;/span&gt; total = &lt;span style="color: #800080;"&gt;1000&lt;/span&gt;;&lt;br /&gt;&lt;span style="color: #008080;"&gt;14&lt;/span&gt;             &lt;span style="color: #0000ff;"&gt;for&lt;/span&gt; (&lt;span style="color: #0000ff;"&gt;var&lt;/span&gt; i = &lt;span style="color: #800080;"&gt;0&lt;/span&gt;; i &amp;lt; total; i++)&lt;br /&gt;&lt;span style="color: #008080;"&gt;15&lt;/span&gt;             {&lt;br /&gt;&lt;span style="color: #008080;"&gt;16&lt;/span&gt;                 list.Add(&lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; Node()&lt;br /&gt;&lt;span style="color: #008080;"&gt;17&lt;/span&gt;                 {&lt;br /&gt;&lt;span style="color: #008080;"&gt;18&lt;/span&gt;                     id = i,&lt;br /&gt;&lt;span style="color: #008080;"&gt;19&lt;/span&gt;                     name = &lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;部门&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt; + i,&lt;br /&gt;&lt;span style="color: #008080;"&gt;20&lt;/span&gt;                     time = DateTime.Now&lt;br /&gt;&lt;span style="color: #008080;"&gt;21&lt;/span&gt;                 });&lt;br /&gt;&lt;span style="color: #008080;"&gt;22&lt;/span&gt;             }&lt;br /&gt;&lt;span style="color: #008080;"&gt;23&lt;/span&gt;             &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;这里模拟排序操作&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;24&lt;/span&gt;             &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; (sortorder == &lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;desc&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;)&lt;br /&gt;&lt;span style="color: #008080;"&gt;25&lt;/span&gt;                 list = list.OrderByDescending(c =&amp;gt; c.id).ToList();&lt;br /&gt;&lt;span style="color: #008080;"&gt;26&lt;/span&gt;             &lt;span style="color: #0000ff;"&gt;else&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008080;"&gt;27&lt;/span&gt;                 list = list.OrderBy(c =&amp;gt; c.id).ToList();&lt;br /&gt;&lt;span style="color: #008080;"&gt;28&lt;/span&gt; &lt;br /&gt;&lt;span style="color: #008080;"&gt;29&lt;/span&gt;             IList&amp;lt;Node&amp;gt; targetList = &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; List&amp;lt;Node&amp;gt;();&lt;br /&gt;&lt;span style="color: #008080;"&gt;30&lt;/span&gt;             &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;这里模拟分页操作&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;31&lt;/span&gt;             &lt;span style="color: #0000ff;"&gt;for&lt;/span&gt; (&lt;span style="color: #0000ff;"&gt;var&lt;/span&gt; i = &lt;span style="color: #800080;"&gt;0&lt;/span&gt;; i &amp;lt; total; i++)&lt;br /&gt;&lt;span style="color: #008080;"&gt;32&lt;/span&gt;             {&lt;br /&gt;&lt;span style="color: #008080;"&gt;33&lt;/span&gt;                 &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; (i &amp;gt;= (page - &lt;span style="color: #800080;"&gt;1&lt;/span&gt;) * pagesize &amp;amp;&amp;amp; i &amp;lt; page * pagesize)&lt;br /&gt;&lt;span style="color: #008080;"&gt;34&lt;/span&gt;                 {&lt;br /&gt;&lt;span style="color: #008080;"&gt;35&lt;/span&gt;                     targetList.Add(list[i]);&lt;br /&gt;&lt;span style="color: #008080;"&gt;36&lt;/span&gt;                 }&lt;br /&gt;&lt;span style="color: #008080;"&gt;37&lt;/span&gt;             }&lt;br /&gt;&lt;span style="color: #008080;"&gt;38&lt;/span&gt;             &lt;span style="color: #0000ff;"&gt;var&lt;/span&gt; griddata = &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; { Rows = targetList, Total = total };&lt;br /&gt;&lt;span style="color: #008080;"&gt;39&lt;/span&gt;             &lt;span style="color: #0000ff;"&gt;return&lt;/span&gt; Json(griddata);&lt;br /&gt;&lt;span style="color: #008080;"&gt;40&lt;/span&gt;         }&lt;/div&gt;&lt;p&gt;&lt;strong&gt;&lt;br /&gt;三，前台调用&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;img style="border: 1px solid #aaa; padding: 6px;" src="http://pic002.cnblogs.com/images/2012/109724/2012030613435975.jpg" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;四，效果&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2012/109724/2012030613441513.jpg" alt="" /&gt;&lt;/p&gt;&lt;div data-mce-=""&gt;&lt;a name="label5"&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;源码下载&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;下载地址：&lt;a href="http://files.cnblogs.com/leoxie2011/GridMvcApp.7z" target="_blank"&gt;GridMvcApp.7z&lt;/a&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/leoxie2011/aggbug/2381720.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/leoxie2011/archive/2012/03/06/2381720.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/leoxie2011/archive/2012/02/05/2338755.html</id><title type="text">jQuery LigerUI V1.1.6 (包括API和全部源码) 发布</title><summary type="text">前言上个版本的发布。有些朋友提出框架图片太大的问题，在这个版本做出了解决。并对树和表格增强了拖拽能力。另外，对Dialog插件也加强了一番。具体的更新可以下载来细看：jQuery LigerUI V1.1.6.rar 相关链接API:http://api.ligerui.com/ 演示地址:http://demo.ligerui.com/ 源码下载:http://ligerui.googlecode.com/ 技术支持：http://www.cnblogs.com/leoxie2011/V1.1.6更新记录基础[需求]全面优化框架图片[需求]整理简化皮肤Silvery,需要依赖默认的Aqua表</summary><published>2012-02-05T01:13:00Z</published><updated>2012-02-05T01:13:00Z</updated><author><name>谢略</name><uri>http://www.cnblogs.com/leoxie2011/</uri></author><link rel="alternate" href="http://www.cnblogs.com/leoxie2011/archive/2012/02/05/2338755.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/leoxie2011/archive/2012/02/05/2338755.html"/><content type="html">&lt;style&gt;&lt;!--        p.l-log-content        {            margin: 0;            padding: 0;            padding-left: 20px;            line-height: 22px;            font-size: 12px;        }        span.l-log-content-tag        {            color: #008000;            margin-right: 2px;            font-weight: bold;        }        h2.l-title        {            margin: 7px;            padding: 0;            font-size: 17px;            font-weight: bold;        }        h3.l-title        {            margin: 4px;            padding: 0;            font-size: 15px;            font-weight: bold;        }--&gt;&lt;/style&gt;&lt;h2 class="l-title" style="background-color: #7f8fb1; margin: 7px; color: white; font-size: 17px; font-weight: bold; padding: 0px;"&gt;前言&lt;/strong&gt;&lt;/p&gt;&lt;p class="style2" style="padding-bottom: 0px; line-height: 22px; text-indent: 0px; margin: 0px; padding-left: 20px; padding-right: 0px; display: block; font-size: 12px; padding-top: 0px;"&gt;上个版本的发布。有些朋友提出框架图片太大的问题，在这个版本做出了解决。并对树和表格增强了拖拽能力。另外，对Dialog插件也加强了一番。具体的更新可以下载来细看：&lt;/p&gt;&lt;p class="style2"&gt;&lt;a href="http://code.google.com/p/ligerui/downloads/detail?name=jQuery%20LigerUI%20V1.1.6.rar&amp;amp;can=2&amp;amp;q="&gt;jQuery LigerUI V1.1.6.rar &lt;/a&gt;&lt;/p&gt;&lt;p class="style2" style="padding-bottom: 0px; line-height: 22px; text-indent: 0px; margin: 0px; padding-left: 20px; padding-right: 0px; display: block; font-size: 12px; padding-top: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;h2 class="l-title" style="background-color: #7f8fb1; margin: 7px; color: white; font-size: 17px; font-weight: bold; padding: 0px;"&gt;相关链接&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;API:&amp;nbsp;&lt;a style="padding-bottom: 1px; padding-left: 2px; padding-right: 2px; color: #5b9dca; text-decoration: none; padding-top: 1px;" href="http://api.ligerui.com/"&gt;http://api.ligerui.com/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp; 演示地址:&lt;a style="padding-bottom: 1px; padding-left: 2px; padding-right: 2px; color: #5b9dca; text-decoration: none; padding-top: 1px;" href="http://demo.ligerui.com/"&gt;http://demo.ligerui.com/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp; 源码下载:&lt;a style="padding-bottom: 1px; padding-left: 2px; padding-right: 2px; color: #5b9dca; text-decoration: none; padding-top: 1px;" href="http://ligerui.googlecode.com/"&gt;http://ligerui.googlecode.com/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp; 技术支持：&lt;a style="padding-bottom: 1px; padding-left: 2px; padding-right: 2px; color: #5b9dca; text-decoration: none; padding-top: 1px;" href="http://www.cnblogs.com/leoxie2011/"&gt;http://www.cnblogs.com/leoxie2011/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;h2 class="style1" style="background-color: #7f8fb1; margin: 7px; color: white; font-size: 17px; font-weight: bold; padding: 0px;"&gt;V1.1.6更新记录&lt;/strong&gt;&lt;/p&gt;&lt;h3 class="l-title"&gt;基础&lt;/strong&gt;&lt;/p&gt;&lt;p class="l-log-content"&gt;&lt;span class="l-log-content-tag"&gt;[需求]&lt;/span&gt;全面优化框架图片&lt;/p&gt;&lt;p class="l-log-content"&gt;&lt;span class="l-log-content-tag"&gt;[需求]&lt;/span&gt;整理简化皮肤Silvery,需要依赖默认的Aqua&lt;/p&gt;&lt;h3 class="l-title"&gt;表格&lt;/strong&gt;&lt;/p&gt;&lt;p class="l-log-content"&gt;&lt;span class="l-log-content-tag"&gt;[BUG]&lt;/span&gt;修复 隐藏列后 再次加载数据，隐藏的列会再次显示 的问题&lt;/p&gt;&lt;p class="l-log-content"&gt;&lt;span class="l-log-content-tag"&gt;[BUG]&lt;/span&gt;修复存在行序号时,汇总行错位的问题&lt;/p&gt;&lt;p class="l-log-content"&gt;&lt;span class="l-log-content-tag"&gt;[需求]&lt;/span&gt;重写列调整,需要依赖ligerResizable&lt;/p&gt;&lt;p class="l-log-content"&gt;&lt;span class="l-log-content-tag"&gt;[需求]&lt;/span&gt;支持动态设置columns&lt;/p&gt;&lt;p class="l-log-content"&gt;&lt;span class="l-log-content-tag"&gt;[需求]&lt;/span&gt;支持行移位、表头拖拽&lt;/p&gt;&lt;h3 class="l-title"&gt;窗口/对话框&lt;/strong&gt;&lt;/p&gt;&lt;p class="l-log-content"&gt;&lt;span class="l-log-content-tag"&gt;[需求]&lt;/span&gt;支持最小化、最大化、可收缩&lt;/p&gt;&lt;h3 class="l-title"&gt;对话框&lt;/strong&gt;&lt;/p&gt;&lt;p class="l-log-content"&gt;&lt;span class="l-log-content-tag"&gt;[需求]&lt;/span&gt;支持 右下角的提示框&lt;/p&gt;&lt;h3 class="l-title"&gt;树&lt;/strong&gt;&lt;/p&gt;&lt;p class="l-log-content"&gt;&lt;span class="l-log-content-tag"&gt;[需求]&lt;/span&gt;增加节点图标&lt;/p&gt;&lt;p class="l-log-content"&gt;&lt;span class="l-log-content-tag"&gt;[需求]&lt;/span&gt;增加节点拖拽&lt;/p&gt;&lt;img src="http://www.cnblogs.com/leoxie2011/aggbug/2338755.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/leoxie2011/archive/2012/02/05/2338755.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/leoxie2011/archive/2012/01/17/2324485.html</id><title type="text">jQuery LigerUI 使用教程表格篇(1)</title><summary type="text">阅读目录第一个例子数据结构两种绑定数据的方式配置column自定义表头自定义单元格排序与分页事件与方法第一个例子简介ligerGrid是ligerui系列插件的核心控件，用户可以快速地创建一个美观,而且功能强大的表格,支持排序、分页、多表头、固定列等等。支持本地数据和服务器数据(配置data或者url)支持排序和分页(包括Javascript排序和分页)支持列的“显示/隐藏”支持多表头支持固定列支持明细行支持汇总行支持单元格模板支持编辑表格(三种编辑模式,单元格编辑、行编辑、明细编辑)支持树表格支持分组支持行移位、表头拖拽(新加入)代码首先引入基本的css和js文件1 &lt;link hre</summary><published>2012-01-17T13:11:00Z</published><updated>2012-01-17T13:11:00Z</updated><author><name>谢略</name><uri>http://www.cnblogs.com/leoxie2011/</uri></author><link rel="alternate" href="http://www.cnblogs.com/leoxie2011/archive/2012/01/17/2324485.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/leoxie2011/archive/2012/01/17/2324485.html"/><content type="html">&lt;p&gt;&lt;a name="#lable1Grid01_Top"&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="category"&gt;&lt;p&gt;&lt;strong&gt;&lt;strong&gt;阅读目录&lt;/strong&gt;&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="#lable1Grid01_01"&gt;第一个例子&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="#lable1Grid01_02"&gt;数据结构&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="#lable1Grid01_03"&gt;两种绑定数据的方式&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="#lable1Grid01_04"&gt;配置column&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="#lable1Grid01_05"&gt;自定义表头&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="#lable1Grid01_06"&gt;自定义单元格&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="#lable1Grid01_07"&gt;排序与分页&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="#lable1Grid01_08"&gt;事件与方法&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;a name="lable1Grid01_01"&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;第一个例子&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;简介&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;ligerGrid是ligerui系列插件的核心控件，用户可以快速地创建一个美观,而且功能强大的表格,支持排序、分页、多表头、固定列等等。&lt;/p&gt;&lt;blockquote style='border:2px solid #EFEFEF;color:#333333;padding:5px 10px;'&gt;&lt;ul&gt;&lt;li&gt;支持本地数据和服务器数据(配置data或者url)&lt;/li&gt;&lt;li&gt;支持排序和分页(包括Javascript排序和分页)&lt;/li&gt;&lt;li&gt;支持列的&amp;ldquo;显示/隐藏&amp;rdquo;&lt;/li&gt;&lt;li&gt;支持多表头&lt;/li&gt;&lt;li&gt;支持固定列&lt;/li&gt;&lt;li&gt;支持明细行&lt;/li&gt;&lt;li&gt;支持汇总行&lt;/li&gt;&lt;li&gt;支持单元格模板&lt;/li&gt;&lt;li&gt;支持编辑表格(三种编辑模式,单元格编辑、行编辑、明细编辑)&lt;/li&gt;&lt;li&gt;支持树表格&lt;/li&gt;&lt;li&gt;支持分组&lt;/li&gt;&lt;li&gt;支持行移位、表头拖拽(新加入)&lt;/li&gt;&lt;/ul&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;strong&gt;代码&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;首先引入基本的css和js文件&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #008080;"&gt;1&lt;/span&gt;  &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;link &lt;/span&gt;&lt;span style="color: #ff0000;"&gt;href&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="http://www.cnblogs.com/lib/ligerUI/skins/Aqua/css/ligerui-all.css"&lt;/span&gt;&lt;span style="color: #ff0000;"&gt; rel&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="stylesheet"&lt;/span&gt;&lt;span style="color: #ff0000;"&gt; type&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="text/css"&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008080;"&gt;2&lt;/span&gt;  &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;script &lt;/span&gt;&lt;span style="color: #ff0000;"&gt;src&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="http://www.cnblogs.com/lib/jquery/jquery-1.5.2.min.js"&lt;/span&gt;&lt;span style="color: #ff0000;"&gt; type&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="text/javascript"&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;script&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008080;"&gt;3&lt;/span&gt;  &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;script &lt;/span&gt;&lt;span style="color: #ff0000;"&gt;src&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="http://www.cnblogs.com/lib/ligerUI/js/ligerui.min.js"&lt;/span&gt;&lt;span style="color: #ff0000;"&gt; type&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="text/javascript"&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;script&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt; &lt;/div&gt;&lt;p&gt;然后就可以使用liger Grid了&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #008080;"&gt; 1&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;div &lt;/span&gt;&lt;span style="color: #ff0000;"&gt;id&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="maingrid"&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;div&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008080;"&gt; 2&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;script &lt;/span&gt;&lt;span style="color: #ff0000;"&gt;type&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="text/javascript"&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 3&lt;/span&gt;     &lt;span style="background-color: #f5f5f5; color: #0000ff;"&gt;var&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt; griddata &lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt;=&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt; [&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 4&lt;/span&gt; &lt;span style="background-color: #f5f5f5; color: #000000;"&gt;            { id: &lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt;'&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt;01&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt;'&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt;, name: &lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt;'&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt;部门01&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt;'&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt; },&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 5&lt;/span&gt; &lt;span style="background-color: #f5f5f5; color: #000000;"&gt;            { id: &lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt;'&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt;02&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt;'&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt;, name: &lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt;'&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt;部门02&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt;'&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt; },&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 6&lt;/span&gt; &lt;span style="background-color: #f5f5f5; color: #000000;"&gt;            { id: &lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt;'&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt;03&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt;'&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt;, name: &lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt;'&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt;部门03&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt;'&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt; },&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 7&lt;/span&gt; &lt;span style="background-color: #f5f5f5; color: #000000;"&gt;            { id: &lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt;'&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt;04&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt;'&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt;, name: &lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt;'&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt;部门04&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt;'&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt; },&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 8&lt;/span&gt; &lt;span style="background-color: #f5f5f5; color: #000000;"&gt;            { id: &lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt;'&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt;05&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt;'&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt;, name: &lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt;'&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt;部门05&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt;'&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt; },&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 9&lt;/span&gt; &lt;span style="background-color: #f5f5f5; color: #000000;"&gt;            { id: &lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt;'&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt;06&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt;'&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt;, name: &lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt;'&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt;部门06&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt;'&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt; },&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;10&lt;/span&gt; &lt;span style="background-color: #f5f5f5; color: #000000;"&gt;            { id: &lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt;'&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt;07&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt;'&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt;, name: &lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt;'&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt;部门07&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt;'&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt; }&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;11&lt;/span&gt; &lt;span style="background-color: #f5f5f5; color: #000000;"&gt;        ];&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;12&lt;/span&gt; &lt;span style="background-color: #f5f5f5; color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;13&lt;/span&gt;      &lt;span style="background-color: #f5f5f5; color: #0000ff;"&gt;var&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt; grid &lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt;=&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt; $(&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt;"&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt;#maingrid&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt;"&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt;).ligerGrid({&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;14&lt;/span&gt; &lt;span style="background-color: #f5f5f5; color: #000000;"&gt;            columns: [&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;15&lt;/span&gt; &lt;span style="background-color: #f5f5f5; color: #000000;"&gt;                { name: &lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt;'&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt;id&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt;'&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt;, display: &lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt;'&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt;序号&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt;'&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt;, width: &lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt;200&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt; },&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;16&lt;/span&gt; &lt;span style="background-color: #f5f5f5; color: #000000;"&gt;                { name: &lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt;'&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt;name&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt;'&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt;, display: &lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt;'&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt;名称&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt;'&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt;, width: &lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt;300&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt; }&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;17&lt;/span&gt; &lt;span style="background-color: #f5f5f5; color: #000000;"&gt;            ],&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;18&lt;/span&gt; &lt;span style="background-color: #f5f5f5; color: #000000;"&gt;            data: { Rows: griddata }&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;19&lt;/span&gt; &lt;span style="background-color: #f5f5f5; color: #000000;"&gt;        }); &lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;20&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;script&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;效果&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2012/109724/2012011712584552.png" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;a name="lable1Grid01_02"&gt;&lt;/a&gt;数据结构&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;表格数据结构&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;表格数据有两个属性,一个是Rows，一个是Total。其中Rows是一个数据数组，Total是记录的总数。&lt;/p&gt;&lt;p&gt;实则是Total在使用本地数据的时候是不需要提供的。我们使用本地数据的格式可以这样：&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #008080;"&gt; 1&lt;/span&gt;   {&lt;br /&gt;&lt;span style="color: #008080;"&gt; 2&lt;/span&gt;         Rows: [&lt;br /&gt;&lt;span style="color: #008080;"&gt; 3&lt;/span&gt;             { id: '01', name: '部门01' },&lt;br /&gt;&lt;span style="color: #008080;"&gt; 4&lt;/span&gt;             { id: '02', name: '部门02' },&lt;br /&gt;&lt;span style="color: #008080;"&gt; 5&lt;/span&gt;             { id: '03', name: '部门03' },&lt;br /&gt;&lt;span style="color: #008080;"&gt; 6&lt;/span&gt;             { id: '04', name: '部门04' },&lt;br /&gt;&lt;span style="color: #008080;"&gt; 7&lt;/span&gt;             { id: '05', name: '部门05' },&lt;br /&gt;&lt;span style="color: #008080;"&gt; 8&lt;/span&gt;             { id: '06', name: '部门06' },&lt;br /&gt;&lt;span style="color: #008080;"&gt; 9&lt;/span&gt;             { id: '07', name: '部门07' }&lt;br /&gt;&lt;span style="color: #008080;"&gt;10&lt;/span&gt;         ]&lt;br /&gt;&lt;span style="color: #008080;"&gt;11&lt;/span&gt;   }&lt;/div&gt;&lt;p&gt;id、name都是记录的属性,这里是可以任意自定义的,而在配置columns的时候，并不一定要配置相应的列，只需要配置相应显示的列。在后续的操作中，这些属性都可以取得。比如方法getSelected()。自定义单元格函数render。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;树形表格数据结构&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;树形结构师在表格数据的基础上多了一个children的参数，比如：&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #008080;"&gt; 1&lt;/span&gt;         {&lt;br /&gt;&lt;span style="color: #008080;"&gt; 2&lt;/span&gt;             Rows: [&lt;br /&gt;&lt;span style="color: #008080;"&gt; 3&lt;/span&gt;             { id: '01', name: '部门01', children: [&lt;br /&gt;&lt;span style="color: #008080;"&gt; 4&lt;/span&gt;                 { id: '0101', name: '部门0101' },&lt;br /&gt;&lt;span style="color: #008080;"&gt; 5&lt;/span&gt;                 { id: '0102', name: '部门0102' },&lt;br /&gt;&lt;span style="color: #008080;"&gt; 6&lt;/span&gt;                 { id: '0103', name: '部门0103' }&lt;br /&gt;&lt;span style="color: #008080;"&gt; 7&lt;/span&gt;             ]&lt;br /&gt;&lt;span style="color: #008080;"&gt; 8&lt;/span&gt;             },&lt;br /&gt;&lt;span style="color: #008080;"&gt; 9&lt;/span&gt;             { id: '02', name: '部门02' },&lt;br /&gt;&lt;span style="color: #008080;"&gt;10&lt;/span&gt;             { id: '03', name: '部门03' },&lt;br /&gt;&lt;span style="color: #008080;"&gt;11&lt;/span&gt;             { id: '04', name: '部门04' },&lt;br /&gt;&lt;span style="color: #008080;"&gt;12&lt;/span&gt;             { id: '05', name: '部门05' },&lt;br /&gt;&lt;span style="color: #008080;"&gt;13&lt;/span&gt;             { id: '06', name: '部门06' },&lt;br /&gt;&lt;span style="color: #008080;"&gt;14&lt;/span&gt;             { id: '07', name: '部门07' }&lt;br /&gt;&lt;span style="color: #008080;"&gt;15&lt;/span&gt;         ]&lt;br /&gt;&lt;span style="color: #008080;"&gt;16&lt;/span&gt;         }&lt;/div&gt;&lt;p&gt;&lt;strong&gt;&lt;a name="lable1Grid01_03"&gt;&lt;/a&gt;两种绑定数据的方式&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;ligerGrid绑定数据有两种方式，一是使用本地数据，一是使用服务器数据。&lt;/p&gt;&lt;p&gt;在第一个例子中，我们配置了data参数，这种方式是本地方式。另一种方式是配置url参数，使用远程数据。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;a name="lable1Grid01_04"&gt;&lt;/a&gt;配置column&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;表格显示了多少个列,列宽，列单元格要显示的内容都是由columns属性配置，下面是column的配置参数：&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #008080;"&gt; 1&lt;/span&gt; {&lt;br /&gt;&lt;span style="color: #008080;"&gt; 2&lt;/span&gt;     display: '序号',         &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;表头列显示的文本,支持html&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 3&lt;/span&gt;     &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;表头内容自定义函数&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 4&lt;/span&gt;     headerRender: &lt;span style="color: #0000ff;"&gt;function&lt;/span&gt; (column) {&lt;br /&gt;&lt;span style="color: #008080;"&gt; 5&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;return&lt;/span&gt; "&amp;lt;b&amp;gt;" + column.display + "&amp;lt;/b&amp;gt;";&lt;br /&gt;&lt;span style="color: #008080;"&gt; 6&lt;/span&gt;     },&lt;br /&gt;&lt;span style="color: #008080;"&gt; 7&lt;/span&gt;     name: 'id',              &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;单元格映射的行数据属性 &lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 8&lt;/span&gt;     align: 'center',           &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;单元格内容对齐方式:left/center/right    &lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 9&lt;/span&gt;     hide: &lt;span style="color: #0000ff;"&gt;false&lt;/span&gt;,             &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;是否隐藏&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;10&lt;/span&gt;     width: 100,              &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;列的宽度&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;11&lt;/span&gt;     minWidth: 50,            &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;列的最小宽度&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;12&lt;/span&gt;     isSort: &lt;span style="color: #0000ff;"&gt;true&lt;/span&gt;,            &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;是否允许此列排序,默认为允许排序 &lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;13&lt;/span&gt;     isAllowHide: &lt;span style="color: #0000ff;"&gt;true&lt;/span&gt;,       &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;是否允许隐藏,如果允许，将会出现在【显示/隐藏列右键菜单】&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;14&lt;/span&gt;     type: 'string',          &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;类型,用于排序&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;15&lt;/span&gt;     &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;自定义单元格渲染器&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;16&lt;/span&gt;     render : &lt;span style="color: #0000ff;"&gt;function&lt;/span&gt; (record, rowindex, value, column) {&lt;br /&gt;&lt;span style="color: #008080;"&gt;17&lt;/span&gt;         &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;this     这里指向grid&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;18&lt;/span&gt;         &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;record   行数据&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;19&lt;/span&gt;         &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;rowindex 行索引&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;20&lt;/span&gt;         &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;value    当前的值，对应record[column.name]&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;21&lt;/span&gt;         &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;column   列信息&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;22&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;return&lt;/span&gt; value;  &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;返回此单元格显示的HTML内容(一般根据value和row的内容进行组织)&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;23&lt;/span&gt;     },&lt;br /&gt;&lt;span style="color: #008080;"&gt;24&lt;/span&gt;     &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;列汇总&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;25&lt;/span&gt;     totalSummary: {&lt;br /&gt;&lt;span style="color: #008080;"&gt;26&lt;/span&gt;         align: 'center',   &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;汇总单元格内容对齐方式:left/center/right &lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;27&lt;/span&gt;         type: 'count',     &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;汇总类型sum,max,min,avg ,count。可以同时多种类型&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;28&lt;/span&gt;         render: &lt;span style="color: #0000ff;"&gt;function&lt;/span&gt; (e) {  &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;汇总渲染器，返回html加载到单元格&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;29&lt;/span&gt;             &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;e 汇总Object(包括sum,max,min,avg,count) &lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;30&lt;/span&gt;             &lt;span style="color: #0000ff;"&gt;return&lt;/span&gt; "&amp;lt;div&amp;gt;总数：" + e.count + "&amp;lt;/div&amp;gt;";&lt;br /&gt;&lt;span style="color: #008080;"&gt;31&lt;/span&gt;         }&lt;br /&gt;&lt;span style="color: #008080;"&gt;32&lt;/span&gt;     },&lt;br /&gt;&lt;span style="color: #008080;"&gt;33&lt;/span&gt;     &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;单元格编辑器&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;34&lt;/span&gt;     editor: {&lt;br /&gt;&lt;span style="color: #008080;"&gt;35&lt;/span&gt;         type: 'text'&lt;br /&gt;&lt;span style="color: #008080;"&gt;36&lt;/span&gt;     },&lt;br /&gt;&lt;span style="color: #008080;"&gt;37&lt;/span&gt;     &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;多表头支持&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;38&lt;/span&gt;     columns: &lt;span style="color: #0000ff;"&gt;null&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008080;"&gt;39&lt;/span&gt; },&lt;/div&gt;&lt;p&gt;&lt;br /&gt;表格的列提供了很完整的接口可以扩展。无论是内容单元格或者是表头单元格都可以对内容、布局、大小进行自定义。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;a name="lable1Grid01_05"&gt;&lt;/a&gt;自定义表头&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;比如表头，我们可以把display直接设置一段html:&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #008080;"&gt;1&lt;/span&gt; {&lt;br /&gt;&lt;span style="color: #008080;"&gt;2&lt;/span&gt;     display: '&amp;lt;a href="javascript:void(0)"&amp;gt;部门&amp;lt;/a&amp;gt;', &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;表头列显示的文本,支持html&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;3&lt;/span&gt;     name: 'name',&lt;br /&gt;&lt;span style="color: #008080;"&gt;4&lt;/span&gt;     align: 'left'&lt;br /&gt;&lt;span style="color: #008080;"&gt;5&lt;/span&gt; },&lt;/div&gt;&lt;p&gt;或者使用headerRender：&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #008080;"&gt;1&lt;/span&gt; &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;表头内容自定义函数&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;2&lt;/span&gt; headerRender: &lt;span style="color: #0000ff;"&gt;function&lt;/span&gt; (column) {&lt;br /&gt;&lt;span style="color: #008080;"&gt;3&lt;/span&gt;        &lt;span style="color: #0000ff;"&gt;return&lt;/span&gt; "&amp;lt;b&amp;gt;" + column.display + "&amp;lt;/b&amp;gt;";&lt;br /&gt;&lt;span style="color: #008080;"&gt;4&lt;/span&gt; },&lt;/div&gt;&lt;p&gt;效果图&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2012/109724/2012011713250580.png" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;a name="lable1Grid01_06"&gt;&lt;/a&gt;自定义单元格&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;column的name是定义单元格链接到 行数据 哪一个属性。比如说上面例子的第一行，把name配置为id，那么显示出来应该就是 "01"，如果配置成name，那么显示出来就是 "部门01"。还有align参数，是确定单元格的对齐方式。&lt;/p&gt;&lt;p&gt;如果没有配置render，那么单元格显示的内容将由name确定。&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #008080;"&gt;1&lt;/span&gt;  { name: 'id', display: '序号', width: 200 },&lt;br /&gt;&lt;span style="color: #008080;"&gt;2&lt;/span&gt;  { name: 'name', display: '名称', width: 300 }&lt;/div&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2012/109724/2012011712584552.png" alt="" width="565" height="229" /&gt;&lt;br /&gt;上面介绍的是单元格的默认显示方式。除了这种方式，还可以用格式器和自定义函数。&lt;/p&gt;&lt;blockquote style='border:2px solid #EFEFEF;color:#333333;padding:5px 10px;'&gt;&lt;p&gt;单元格内容的显示规则：&lt;/p&gt;&lt;p&gt;1，如果配置了render，使用render&lt;/p&gt;&lt;p&gt;2，如果column的type参数扩展了对应的格式化器，那么使用格式化器进行渲染。比如定义了货币格式的格式化器&lt;/p&gt;&lt;p&gt;3，最后才是使用默认显示方式&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;strong&gt;格式化器&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;通过扩展$.ligerDefaults.Grid.formatters['columntype']来实现，columntype是column配置的type参数。比如现在要格式化一个货币格式的：&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #008080;"&gt; 1&lt;/span&gt; $.ligerDefaults.Grid.formatters['currency'] = &lt;span style="color: #0000ff;"&gt;function&lt;/span&gt; (num, column) {&lt;br /&gt;&lt;span style="color: #008080;"&gt; 2&lt;/span&gt;             &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;num 当前的值&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 3&lt;/span&gt;             &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;column 列信息&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 4&lt;/span&gt;             &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; (!num) &lt;span style="color: #0000ff;"&gt;return&lt;/span&gt; "$0.00";&lt;br /&gt;&lt;span style="color: #008080;"&gt; 5&lt;/span&gt;             num = num.toString().replace(/\$|\,/g, '');&lt;br /&gt;&lt;span style="color: #008080;"&gt; 6&lt;/span&gt;             &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; (isNaN(num))&lt;br /&gt;&lt;span style="color: #008080;"&gt; 7&lt;/span&gt;                 num = "0.00";&lt;br /&gt;&lt;span style="color: #008080;"&gt; 8&lt;/span&gt;             sign = (num == (num = Math.abs(num)));&lt;br /&gt;&lt;span style="color: #008080;"&gt; 9&lt;/span&gt;             num = Math.floor(num * 100 + 0.50000000001);&lt;br /&gt;&lt;span style="color: #008080;"&gt;10&lt;/span&gt;             cents = num % 100;&lt;br /&gt;&lt;span style="color: #008080;"&gt;11&lt;/span&gt;             num = Math.floor(num / 100).toString();&lt;br /&gt;&lt;span style="color: #008080;"&gt;12&lt;/span&gt;             &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; (cents &amp;lt; 10)&lt;br /&gt;&lt;span style="color: #008080;"&gt;13&lt;/span&gt;                 cents = "0" + cents;&lt;br /&gt;&lt;span style="color: #008080;"&gt;14&lt;/span&gt;             &lt;span style="color: #0000ff;"&gt;for&lt;/span&gt; (&lt;span style="color: #0000ff;"&gt;var&lt;/span&gt; i = 0; i &amp;lt; Math.floor((num.length - (1 + i)) / 3); i++)&lt;br /&gt;&lt;span style="color: #008080;"&gt;15&lt;/span&gt;                 num = num.substring(0, num.length - (4 * i + 3)) + ',' +&lt;br /&gt;&lt;span style="color: #008080;"&gt;16&lt;/span&gt;         num.substring(num.length - (4 * i + 3));&lt;br /&gt;&lt;span style="color: #008080;"&gt;17&lt;/span&gt;             &lt;span style="color: #0000ff;"&gt;return&lt;/span&gt; "$" + (((sign) ? '' : '-') + '' + num + '.' + cents);&lt;br /&gt;&lt;span style="color: #008080;"&gt;18&lt;/span&gt;         };&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;这样只要column的type配置为currency。都会使用这个函数来自定义单元格内容&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #008080;"&gt;1&lt;/span&gt; { display: '单价', name: 'UnitPrice', align: 'right' ,type:'currency' }&lt;/div&gt;&lt;p&gt;效果图&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2012/109724/2012011713474129.png" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;自定义单元格函数&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;自定义单元格函数是指配置column的render。我们可以组织任意的html。&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #008080;"&gt; 1&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;var&lt;/span&gt; grid = $("#maingrid").ligerGrid({&lt;br /&gt;&lt;span style="color: #008080;"&gt; 2&lt;/span&gt;             columns: [&lt;br /&gt;&lt;span style="color: #008080;"&gt; 3&lt;/span&gt;                 { name: 'id', display: '序号', width: 100,&lt;br /&gt;&lt;span style="color: #008080;"&gt; 4&lt;/span&gt;                     render: &lt;span style="color: #0000ff;"&gt;function&lt;/span&gt; (record, rowindex, value, column) {&lt;br /&gt;&lt;span style="color: #008080;"&gt; 5&lt;/span&gt;                         &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;this     这里指向grid&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 6&lt;/span&gt;                         &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;record   行数据&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 7&lt;/span&gt;                         &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;rowindex 行索引&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 8&lt;/span&gt;                         &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;value    当前的值，对应record[column.name]&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 9&lt;/span&gt;                         &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;column   列信息&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;10&lt;/span&gt;                         &lt;span style="color: #0000ff;"&gt;return&lt;/span&gt; "&amp;lt;a href='edit.htm?id=" + value + "'&amp;gt;编辑&amp;lt;/a&amp;gt;";&lt;br /&gt;&lt;span style="color: #008080;"&gt;11&lt;/span&gt;                     }&lt;br /&gt;&lt;span style="color: #008080;"&gt;12&lt;/span&gt;                 },&lt;br /&gt;&lt;span style="color: #008080;"&gt;13&lt;/span&gt;             { name: 'id', display: '序号', width: 120,&lt;br /&gt;&lt;span style="color: #008080;"&gt;14&lt;/span&gt;                 render: &lt;span style="color: #0000ff;"&gt;function&lt;/span&gt; (record, rowindex, value, column) {&lt;br /&gt;&lt;span style="color: #008080;"&gt;15&lt;/span&gt;                     &lt;span style="color: #0000ff;"&gt;return&lt;/span&gt; '&amp;lt;input type="button" value="Add"/&amp;gt;&amp;lt;input type="button" value="Edit"/&amp;gt;&amp;lt;input type="button" value="Delete"/&amp;gt;';&lt;br /&gt;&lt;span style="color: #008080;"&gt;16&lt;/span&gt;                 }&lt;br /&gt;&lt;span style="color: #008080;"&gt;17&lt;/span&gt;             }, &lt;br /&gt;&lt;span style="color: #008080;"&gt;18&lt;/span&gt;                 { name: 'name', display: '名称', width: 300 }&lt;br /&gt;&lt;span style="color: #008080;"&gt;19&lt;/span&gt;             ],&lt;br /&gt;&lt;span style="color: #008080;"&gt;20&lt;/span&gt;             data: { Rows: griddata }&lt;br /&gt;&lt;span style="color: #008080;"&gt;21&lt;/span&gt;         }); &lt;/div&gt;&lt;p&gt;效果图&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2012/109724/2012011713523884.png" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;br /&gt;单元格编辑器&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;所有的编辑器的构造的定义在$.ligerDefaults.Grid.editors，比如&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #008080;"&gt;1&lt;/span&gt; editor: { type: 'spinner' }&lt;/div&gt;&lt;p&gt;将会使用$.ligerDefaults.Grid.editors['spinner'] 进行创建编辑器进行构建。&lt;/p&gt;&lt;p&gt;ligerGrid内置提供了 复选框、文本框、日期、数字调整器、下拉框 等编辑器。&lt;/p&gt;&lt;p&gt;效果图&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2012/109724/2012011713584448.png" alt="" /&gt;&lt;/p&gt;&lt;blockquote style='border:2px solid #EFEFEF;color:#333333;padding:5px 10px;'&gt;&lt;p&gt;&amp;nbsp;column的参数很多,这里不作一一列举，只介绍了几个常用的参数&lt;/p&gt;&lt;p&gt;更多的可以查看api:&amp;nbsp;&lt;a href="http://api.ligerui.com"&gt;http://api.ligerui.com&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;a name="lable1Grid01_07"&gt;&lt;/a&gt;排序和分页&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;排序和分页也有两种方式。一种是本地排序和分页。一种是服务器排序和分页。这里只介绍本地的方式。&lt;/p&gt;&lt;p&gt;默认的情况。是启用排序和分页的。如果要取消分页功能，如下：&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #008080;"&gt;1&lt;/span&gt; usePager: &lt;span style="color: #0000ff;"&gt;false&lt;/span&gt;&lt;/div&gt;&lt;p&gt;效果图&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2012/109724/2012011714312596.png" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;a name="lable1Grid01_08"&gt;&lt;/a&gt;事件和方法&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;事件&lt;/strong&gt;&lt;/p&gt;&lt;table class="l-events-table" cellspacing="0" cellpadding="0"&gt;&lt;tbody&gt;&lt;tr class="l-events-hd"&gt;&lt;td class="l-events-hd-cell l-events-hd-cell-name"&gt;事件名&lt;/td&gt;&lt;td class="l-events-hd-cell l-events-hd-cell-parms"&gt;参数&lt;/td&gt;&lt;td class="l-events-hd-cell l-events-hd-cell-desc"&gt;描述&lt;/td&gt;&lt;/tr&gt;&lt;tr class="l-events-row"&gt;&lt;td class="l-events-row-cell l-events-row-cell-name"&gt;&lt;strong&gt;&lt;a href="#onAfterAddRow"&gt;onAfterAddRow&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td class="l-events-row-cell l-events-row-cell-parms"&gt;(e)&lt;/td&gt;&lt;td class="l-events-row-cell l-events-row-cell-desc"&gt;增加行后事件&lt;/td&gt;&lt;/tr&gt;&lt;tr class="l-events-row"&gt;&lt;td class="l-events-row-cell l-events-row-cell-name"&gt;&lt;strong&gt;&lt;a href="#onAfterBeginEdit"&gt;onAfterBeginEdit&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td class="l-events-row-cell l-events-row-cell-parms"&gt;(e)&lt;/td&gt;&lt;td class="l-events-row-cell l-events-row-cell-desc"&gt;开始编辑后事件&lt;/td&gt;&lt;/tr&gt;&lt;tr class="l-events-row"&gt;&lt;td class="l-events-row-cell l-events-row-cell-name"&gt;&lt;strong&gt;&lt;a href="#onAfterChangeColumnWidth"&gt;onAfterChangeColumnWidth&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td class="l-events-row-cell l-events-row-cell-parms"&gt;(column, newwidth)&lt;/td&gt;&lt;td class="l-events-row-cell l-events-row-cell-desc"&gt;改变列宽度事件&lt;/td&gt;&lt;/tr&gt;&lt;tr class="l-events-row"&gt;&lt;td class="l-events-row-cell l-events-row-cell-name"&gt;&lt;strong&gt;&lt;a href="#onAfterShowData"&gt;onAfterShowData&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td class="l-events-row-cell l-events-row-cell-parms"&gt;(data)&lt;/td&gt;&lt;td class="l-events-row-cell l-events-row-cell-desc"&gt;显示完数据事件&lt;/td&gt;&lt;/tr&gt;&lt;tr class="l-events-row"&gt;&lt;td class="l-events-row-cell l-events-row-cell-name"&gt;&lt;strong&gt;&lt;a href="#onAfterSubmitEdit"&gt;onAfterSubmitEdit&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td class="l-events-row-cell l-events-row-cell-parms"&gt;(e)&lt;/td&gt;&lt;td class="l-events-row-cell l-events-row-cell-desc"&gt;提交编辑 事件&lt;/td&gt;&lt;/tr&gt;&lt;tr class="l-events-row"&gt;&lt;td class="l-events-row-cell l-events-row-cell-name"&gt;&lt;strong&gt;&lt;a href="#onBeforeChangeColumnWidth"&gt;onBeforeChangeColumnWidth&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td class="l-events-row-cell l-events-row-cell-parms"&gt;(column, newwidth)&lt;/td&gt;&lt;td class="l-events-row-cell l-events-row-cell-desc"&gt;验证 改变列宽度 是否通过&lt;/td&gt;&lt;/tr&gt;&lt;tr class="l-events-row"&gt;&lt;td class="l-events-row-cell l-events-row-cell-name"&gt;&lt;strong&gt;&lt;a href="#onBeforeCheckAllRow"&gt;onBeforeCheckAllRow&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td class="l-events-row-cell l-events-row-cell-parms"&gt;(checked, grid element)&lt;/td&gt;&lt;td class="l-events-row-cell l-events-row-cell-desc"&gt;选择前事件，可以通过return false阻止操作(复选框 全选/全不选)&lt;/td&gt;&lt;/tr&gt;&lt;tr class="l-events-row"&gt;&lt;td class="l-events-row-cell l-events-row-cell-name"&gt;&lt;strong&gt;&lt;a href="#onBeforeEdit"&gt;onBeforeEdit&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td class="l-events-row-cell l-events-row-cell-parms"&gt;(e)&lt;/td&gt;&lt;td class="l-events-row-cell l-events-row-cell-desc"&gt;编辑前事件&lt;/td&gt;&lt;/tr&gt;&lt;tr class="l-events-row"&gt;&lt;td class="l-events-row-cell l-events-row-cell-name"&gt;&lt;strong&gt;&lt;a href="#onBeforeShowData"&gt;onBeforeShowData&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td class="l-events-row-cell l-events-row-cell-parms"&gt;(data)&lt;/td&gt;&lt;td class="l-events-row-cell l-events-row-cell-desc"&gt;显示数据前事件，可以通过reutrn false阻止操作&lt;/td&gt;&lt;/tr&gt;&lt;tr class="l-events-row"&gt;&lt;td class="l-events-row-cell l-events-row-cell-name"&gt;&lt;strong&gt;&lt;a href="#onBeforeSubmitEdit"&gt;onBeforeSubmitEdit&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td class="l-events-row-cell l-events-row-cell-parms"&gt;(e)&lt;/td&gt;&lt;td class="l-events-row-cell l-events-row-cell-desc"&gt;验证编辑器结果是否通过&lt;/td&gt;&lt;/tr&gt;&lt;tr class="l-events-row"&gt;&lt;td class="l-events-row-cell l-events-row-cell-name"&gt;&lt;strong&gt;&lt;a href="#onBeginEdit"&gt;onBeginEdit&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td class="l-events-row-cell l-events-row-cell-parms"&gt;(e)&lt;/td&gt;&lt;td class="l-events-row-cell l-events-row-cell-desc"&gt;验证 开始编辑 是否通过&lt;/td&gt;&lt;/tr&gt;&lt;tr class="l-events-row"&gt;&lt;td class="l-events-row-cell l-events-row-cell-name"&gt;&lt;strong&gt;&lt;a href="#onCancelEdit"&gt;onCancelEdit&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td class="l-events-row-cell l-events-row-cell-parms"&gt;(e)&lt;/td&gt;&lt;td class="l-events-row-cell l-events-row-cell-desc"&gt;取消编辑 事件&lt;/td&gt;&lt;/tr&gt;&lt;tr class="l-events-row"&gt;&lt;td class="l-events-row-cell l-events-row-cell-name"&gt;&lt;strong&gt;&lt;a href="#onChangeSort"&gt;onChangeSort&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td class="l-events-row-cell l-events-row-cell-parms"&gt;()&lt;/td&gt;&lt;td class="l-events-row-cell l-events-row-cell-desc"&gt;改变排序事件&lt;/td&gt;&lt;/tr&gt;&lt;tr class="l-events-row"&gt;&lt;td class="l-events-row-cell l-events-row-cell-name"&gt;&lt;strong&gt;&lt;a href="#onCheckAllRow"&gt;onCheckAllRow&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td class="l-events-row-cell l-events-row-cell-parms"&gt;(checked, grid element)&lt;/td&gt;&lt;td class="l-events-row-cell l-events-row-cell-desc"&gt;选择事件(复选框 全选/全不选)&lt;/td&gt;&lt;/tr&gt;&lt;tr class="l-events-row"&gt;&lt;td class="l-events-row-cell l-events-row-cell-name"&gt;&lt;strong&gt;&lt;a href="#onCheckRow"&gt;onCheckRow&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td class="l-events-row-cell l-events-row-cell-parms"&gt;(checked, rowdata, rowindex, rowDomElement)&lt;/td&gt;&lt;td class="l-events-row-cell l-events-row-cell-desc"&gt;选择事件(复选框)&lt;/td&gt;&lt;/tr&gt;&lt;tr class="l-events-row"&gt;&lt;td class="l-events-row-cell l-events-row-cell-name"&gt;&lt;strong&gt;&lt;a href="#onContextmenu"&gt;onContextmenu&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td class="l-events-row-cell l-events-row-cell-parms"&gt;(parm, e)&lt;/td&gt;&lt;td class="l-events-row-cell l-events-row-cell-desc"&gt;右击事件&lt;/td&gt;&lt;/tr&gt;&lt;tr class="l-events-row"&gt;&lt;td class="l-events-row-cell l-events-row-cell-name"&gt;&lt;strong&gt;&lt;a href="#onDblClickRow"&gt;onDblClickRow&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td class="l-events-row-cell l-events-row-cell-parms"&gt;(rowdata, rowindex, rowDomElement)&lt;/td&gt;&lt;td class="l-events-row-cell l-events-row-cell-desc"&gt;双击行事件&lt;/td&gt;&lt;/tr&gt;&lt;tr class="l-events-row"&gt;&lt;td class="l-events-row-cell l-events-row-cell-name"&gt;&lt;strong&gt;&lt;a href="#onDragCol"&gt;onDragCol&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td class="l-events-row-cell l-events-row-cell-parms"&gt;(node)&lt;/td&gt;&lt;td class="l-events-row-cell l-events-row-cell-desc"&gt;拖动列事件&lt;/td&gt;&lt;/tr&gt;&lt;tr class="l-events-row"&gt;&lt;td class="l-events-row-cell l-events-row-cell-name"&gt;&lt;strong&gt;&lt;a href="#onError"&gt;onError&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td class="l-events-row-cell l-events-row-cell-parms"&gt;()&lt;/td&gt;&lt;td class="l-events-row-cell l-events-row-cell-desc"&gt;错误事件&lt;/td&gt;&lt;/tr&gt;&lt;tr class="l-events-row"&gt;&lt;td class="l-events-row-cell l-events-row-cell-name"&gt;&lt;strong&gt;&lt;a href="#onLoaded"&gt;onLoaded&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td class="l-events-row-cell l-events-row-cell-parms"&gt;()&lt;/td&gt;&lt;td class="l-events-row-cell l-events-row-cell-desc"&gt;加载完函数&lt;/td&gt;&lt;/tr&gt;&lt;tr class="l-events-row"&gt;&lt;td class="l-events-row-cell l-events-row-cell-name"&gt;&lt;strong&gt;&lt;a href="#onLoading"&gt;onLoading&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td class="l-events-row-cell l-events-row-cell-parms"&gt;()&lt;/td&gt;&lt;td class="l-events-row-cell l-events-row-cell-desc"&gt;加载时函数&lt;/td&gt;&lt;/tr&gt;&lt;tr class="l-events-row"&gt;&lt;td class="l-events-row-cell l-events-row-cell-name"&gt;&lt;strong&gt;&lt;a href="#onReload"&gt;onReload&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td class="l-events-row-cell l-events-row-cell-parms"&gt;()&lt;/td&gt;&lt;td class="l-events-row-cell l-events-row-cell-desc"&gt;刷新事件，可以通过return false来阻止操作&lt;/td&gt;&lt;/tr&gt;&lt;tr class="l-events-row"&gt;&lt;td class="l-events-row-cell l-events-row-cell-name"&gt;&lt;strong&gt;&lt;a href="#onSelectRow"&gt;onSelectRow&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td class="l-events-row-cell l-events-row-cell-parms"&gt;(rowdata, rowindex, rowDomElement)&lt;/td&gt;&lt;td class="l-events-row-cell l-events-row-cell-desc"&gt;选择行事件&lt;/td&gt;&lt;/tr&gt;&lt;tr class="l-events-row"&gt;&lt;td class="l-events-row-cell l-events-row-cell-name"&gt;&lt;strong&gt;&lt;a href="#onSubmit"&gt;onSubmit&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td class="l-events-row-cell l-events-row-cell-parms"&gt;()&lt;/td&gt;&lt;td class="l-events-row-cell l-events-row-cell-desc"&gt;提交前事件&lt;/td&gt;&lt;/tr&gt;&lt;tr class="l-events-row"&gt;&lt;td class="l-events-row-cell l-events-row-cell-name"&gt;&lt;strong&gt;&lt;a href="#onSuccess"&gt;onSuccess&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td class="l-events-row-cell l-events-row-cell-parms"&gt;()&lt;/td&gt;&lt;td class="l-events-row-cell l-events-row-cell-desc"&gt;成功事件&lt;/td&gt;&lt;/tr&gt;&lt;tr class="l-events-row"&gt;&lt;td class="l-events-row-cell l-events-row-cell-name"&gt;&lt;strong&gt;&lt;a href="#onToFirst"&gt;onToFirst&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td class="l-events-row-cell l-events-row-cell-parms"&gt;()&lt;/td&gt;&lt;td class="l-events-row-cell l-events-row-cell-desc"&gt;第一页，可以通过return false来阻止操作&lt;/td&gt;&lt;/tr&gt;&lt;tr class="l-events-row"&gt;&lt;td class="l-events-row-cell l-events-row-cell-name"&gt;&lt;strong&gt;&lt;a href="#onToggleCol"&gt;onToggleCol&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td class="l-events-row-cell l-events-row-cell-parms"&gt;()&lt;/td&gt;&lt;td class="l-events-row-cell l-events-row-cell-desc"&gt;切换列事件&lt;/td&gt;&lt;/tr&gt;&lt;tr class="l-events-row"&gt;&lt;td class="l-events-row-cell l-events-row-cell-name"&gt;&lt;strong&gt;&lt;a href="#onToLast"&gt;onToLast&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td class="l-events-row-cell l-events-row-cell-parms"&gt;()&lt;/td&gt;&lt;td class="l-events-row-cell l-events-row-cell-desc"&gt;最后一页，可以通过return false来阻止操作&lt;/td&gt;&lt;/tr&gt;&lt;tr class="l-events-row"&gt;&lt;td class="l-events-row-cell l-events-row-cell-name"&gt;&lt;strong&gt;&lt;a href="#onToNext"&gt;onToNext&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td class="l-events-row-cell l-events-row-cell-parms"&gt;()&lt;/td&gt;&lt;td class="l-events-row-cell l-events-row-cell-desc"&gt;下一页，可以通过return false来阻止操作&lt;/td&gt;&lt;/tr&gt;&lt;tr class="l-events-row"&gt;&lt;td class="l-events-row-cell l-events-row-cell-name"&gt;&lt;strong&gt;&lt;a href="#onToPrev"&gt;onToPrev&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td class="l-events-row-cell l-events-row-cell-parms"&gt;()&lt;/td&gt;&lt;td class="l-events-row-cell l-events-row-cell-desc"&gt;上一页，可以通过return false来阻止操作&lt;/td&gt;&lt;/tr&gt;&lt;tr class="l-events-row"&gt;&lt;td class="l-events-row-cell l-events-row-cell-name"&gt;&lt;strong&gt;&lt;a href="#onUnSelectRow"&gt;onUnSelectRow&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td class="l-events-row-cell l-events-row-cell-parms"&gt;(rowdata, rowindex, rowDomElement)&lt;/td&gt;&lt;td class="l-events-row-cell l-events-row-cell-desc"&gt;取消选择行事件&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&lt;strong&gt;例子&lt;/strong&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #008080;"&gt; 1&lt;/span&gt;  &lt;span style="color: #0000ff;"&gt;var&lt;/span&gt; grid = $("#maingrid").ligerGrid({&lt;br /&gt;&lt;span style="color: #008080;"&gt; 2&lt;/span&gt;             columns: [&lt;br /&gt;&lt;span style="color: #008080;"&gt; 3&lt;/span&gt;                     { name: 'id', display: '序号', width: 200 },&lt;br /&gt;&lt;span style="color: #008080;"&gt; 4&lt;/span&gt;                     { name: 'name', display: '名称', width: 300 }&lt;br /&gt;&lt;span style="color: #008080;"&gt; 5&lt;/span&gt;                 ],&lt;br /&gt;&lt;span style="color: #008080;"&gt; 6&lt;/span&gt;             data: { Rows: griddata },&lt;br /&gt;&lt;span style="color: #008080;"&gt; 7&lt;/span&gt;             onSelectRow: &lt;span style="color: #0000ff;"&gt;function&lt;/span&gt; (rowdata, rowindex) {&lt;br /&gt;&lt;span style="color: #008080;"&gt; 8&lt;/span&gt;                 &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;行记录 对于数据行&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 9&lt;/span&gt;                 &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;行索引 第几行,从0开始&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;10&lt;/span&gt;                 alert(rowdata.name);&lt;br /&gt;&lt;span style="color: #008080;"&gt;11&lt;/span&gt;             }&lt;br /&gt;&lt;span style="color: #008080;"&gt;12&lt;/span&gt;         }); &lt;br /&gt;&lt;span style="color: #008080;"&gt;13&lt;/span&gt;         grid.bind('SelectRow', &lt;span style="color: #0000ff;"&gt;function&lt;/span&gt; (rowdata, rowindex) {&lt;br /&gt;&lt;span style="color: #008080;"&gt;14&lt;/span&gt;             &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;this 这里的this都是指向grid&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;15&lt;/span&gt; &lt;br /&gt;&lt;span style="color: #008080;"&gt;16&lt;/span&gt;             &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;行记录 对于数据行&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;17&lt;/span&gt;             &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;行索引 第几行,从0开始&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;18&lt;/span&gt;             alert(rowdata.name);&lt;br /&gt;&lt;span style="color: #008080;"&gt;19&lt;/span&gt;         });&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;方法&lt;/strong&gt;&lt;/p&gt;&lt;table class="l-methods-table" cellspacing="0" cellpadding="0"&gt;&lt;tbody&gt;&lt;tr class="l-methods-hd"&gt;&lt;td class="l-methods-hd-cell l-methods-hd-cell-name"&gt;方法&lt;/td&gt;&lt;td class="l-methods-hd-cell l-methods-hd-cell-parms"&gt;参数&lt;/td&gt;&lt;td class="l-methods-hd-cell l-methods-hd-cell-desc"&gt;描述&lt;/td&gt;&lt;/tr&gt;&lt;tr class="l-methods-row"&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-name"&gt;&lt;strong&gt;&lt;a href="#addEditRow"&gt;addEditRow&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-parms"&gt;(rowdata)&lt;/td&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-desc"&gt;&lt;ul&gt;&lt;li&gt;增加一个编辑行&lt;/li&gt;&lt;/ul&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class="l-methods-row"&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-name"&gt;&lt;strong&gt;&lt;a href="#addRow"&gt;addRow&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-parms"&gt;(rowdata, rowParm, isBefore, parentRow)&lt;/td&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-desc"&gt;&lt;ul&gt;&lt;li&gt;增加新行&lt;/li&gt;&lt;/ul&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class="l-methods-row"&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-name"&gt;&lt;strong&gt;&lt;a href="#addRows"&gt;addRows&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-parms"&gt;(rowdataArr)&lt;/td&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-desc"&gt;&lt;ul&gt;&lt;li&gt;一次性增加多行&lt;/li&gt;&lt;/ul&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class="l-methods-row"&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-name"&gt;&lt;strong&gt;&lt;a href="#appendRow"&gt;appendRow&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-parms"&gt;(rowData, targetRow, nearRow, isBefore)&lt;/td&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-desc"&gt;&lt;ul&gt;&lt;li&gt;附加新行(树模式)&lt;/li&gt;&lt;/ul&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class="l-methods-row"&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-name"&gt;&lt;strong&gt;&lt;a href="#beginEdit"&gt;beginEdit&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-parms"&gt;(rowParm)&lt;/td&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-desc"&gt;&lt;ul&gt;&lt;li&gt;进入编辑状态&lt;/li&gt;&lt;/ul&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class="l-methods-row"&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-name"&gt;&lt;strong&gt;&lt;a href="#cancelEdit"&gt;cancelEdit&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-parms"&gt;(rowParm)&lt;/td&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-desc"&gt;&lt;ul&gt;&lt;li&gt;取消编辑&lt;/li&gt;&lt;/ul&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class="l-methods-row"&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-name"&gt;&lt;strong&gt;&lt;a href="#changeHeaderText"&gt;changeHeaderText&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-parms"&gt;(columnparm, headerText)&lt;/td&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-desc"&gt;&lt;ul&gt;&lt;li&gt;改变表头文本&lt;/li&gt;&lt;/ul&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class="l-methods-row"&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-name"&gt;&lt;strong&gt;&lt;a href="#changePage"&gt;changePage&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-parms"&gt;(ctype)&lt;/td&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-desc"&gt;&lt;ul&gt;&lt;li&gt;改变分页&lt;/li&gt;&lt;/ul&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class="l-methods-row"&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-name"&gt;&lt;strong&gt;&lt;a href="#changeSort"&gt;changeSort&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-parms"&gt;(columnName, sortOrder)&lt;/td&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-desc"&gt;&lt;ul&gt;&lt;li&gt;改变排序&lt;/li&gt;&lt;/ul&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class="l-methods-row"&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-name"&gt;&lt;strong&gt;&lt;a href="#collapse"&gt;collapse&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-parms"&gt;(targetRow)&lt;/td&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-desc"&gt;&lt;ul&gt;&lt;li&gt;收缩(树模式)&lt;/li&gt;&lt;/ul&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class="l-methods-row"&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-name"&gt;&lt;strong&gt;&lt;a href="#collapseDetail"&gt;collapseDetail&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-parms"&gt;(rowParm)&lt;/td&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-desc"&gt;&lt;ul&gt;&lt;li&gt;收缩明细&lt;/li&gt;&lt;/ul&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class="l-methods-row"&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-name"&gt;&lt;strong&gt;&lt;a href="#deleteRow"&gt;deleteRow&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-parms"&gt;(rowParm)&lt;/td&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-desc"&gt;&lt;ul&gt;&lt;li&gt;选择行&lt;/li&gt;&lt;/ul&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class="l-methods-row"&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-name"&gt;&lt;strong&gt;&lt;a href="#deleteSelectedRow"&gt;deleteSelectedRow&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-parms"&gt;()&lt;/td&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-desc"&gt;&lt;ul&gt;&lt;li&gt;删除选择的行&lt;/li&gt;&lt;/ul&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class="l-methods-row"&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-name"&gt;&lt;strong&gt;&lt;a href="#demotion"&gt;demotion&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-parms"&gt;(targetRow)&lt;/td&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-desc"&gt;&lt;ul&gt;&lt;li&gt;降级(树模式)&lt;/li&gt;&lt;/ul&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class="l-methods-row"&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-name"&gt;&lt;strong&gt;&lt;a href="#endEdit"&gt;endEdit&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-parms"&gt;(rowParm)&lt;/td&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-desc"&gt;&lt;ul&gt;&lt;li&gt;结束编辑&lt;/li&gt;&lt;/ul&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class="l-methods-row"&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-name"&gt;&lt;strong&gt;&lt;a href="#expand"&gt;expand&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-parms"&gt;(targetRow)&lt;/td&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-desc"&gt;&lt;ul&gt;&lt;li&gt;展开(树模式)&lt;/li&gt;&lt;/ul&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class="l-methods-row"&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-name"&gt;&lt;strong&gt;&lt;a href="#extendDetail"&gt;extendDetail&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-parms"&gt;(rowParm)&lt;/td&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-desc"&gt;&lt;ul&gt;&lt;li&gt;展开明细&lt;/li&gt;&lt;/ul&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class="l-methods-row"&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-name"&gt;&lt;strong&gt;&lt;a href="#formatRecord"&gt;formatRecord&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-parms"&gt;(record)&lt;/td&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-desc"&gt;&lt;ul&gt;&lt;li&gt;格式化数据,删除系统字段&lt;/li&gt;&lt;/ul&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class="l-methods-row"&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-name"&gt;&lt;strong&gt;&lt;a href="#getAdded"&gt;getAdded&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-parms"&gt;()&lt;/td&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-desc"&gt;&lt;ul&gt;&lt;li&gt;获取新增的数据&lt;/li&gt;&lt;/ul&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class="l-methods-row"&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-name"&gt;&lt;strong&gt;&lt;a href="#getCheckedRowObjs"&gt;getCheckedRowObjs&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-parms"&gt;()&lt;/td&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-desc"&gt;&lt;ul&gt;&lt;li&gt;获取选中的行 DOM对象集合&lt;/li&gt;&lt;/ul&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class="l-methods-row"&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-name"&gt;&lt;strong&gt;&lt;a href="#getCheckedRows"&gt;getCheckedRows&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-parms"&gt;()&lt;/td&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-desc"&gt;&lt;ul&gt;&lt;li&gt;获取选中的行数据(复选框)&lt;/li&gt;&lt;/ul&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class="l-methods-row"&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-name"&gt;&lt;strong&gt;&lt;a href="#getChidren"&gt;getChidren&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-parms"&gt;(rowParm)&lt;/td&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-desc"&gt;&lt;ul&gt;&lt;li&gt;获取子节点数据(树模式)&lt;/li&gt;&lt;/ul&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class="l-methods-row"&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-name"&gt;&lt;strong&gt;&lt;a href="#getColumn"&gt;getColumn&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-parms"&gt;(columnpam)&lt;/td&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-desc"&gt;&lt;ul&gt;&lt;li&gt;获取列信息&lt;/li&gt;&lt;/ul&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class="l-methods-row"&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-name"&gt;&lt;strong&gt;&lt;a href="#getColumns"&gt;getColumns&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-parms"&gt;(columnLevel)&lt;/td&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-desc"&gt;&lt;ul&gt;&lt;li&gt;获取指定层级的Columns&lt;/li&gt;&lt;/ul&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class="l-methods-row"&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-name"&gt;&lt;strong&gt;&lt;a href="#getColumnType"&gt;getColumnType&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-parms"&gt;(columnname)&lt;/td&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-desc"&gt;&lt;ul&gt;&lt;li&gt;根据列名获取列类型&lt;/li&gt;&lt;/ul&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class="l-methods-row"&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-name"&gt;&lt;strong&gt;&lt;a href="#getData"&gt;getData&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-parms"&gt;(status, removeStatus)&lt;/td&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-desc"&gt;&lt;ul&gt;&lt;li&gt;获取数据&lt;/li&gt;&lt;/ul&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class="l-methods-row"&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-name"&gt;&lt;strong&gt;&lt;a href="#getDeleted"&gt;getDeleted&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-parms"&gt;()&lt;/td&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-desc"&gt;&lt;ul&gt;&lt;li&gt;获取删除过的数据&lt;/li&gt;&lt;/ul&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class="l-methods-row"&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-name"&gt;&lt;strong&gt;&lt;a href="#getParent"&gt;getParent&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-parms"&gt;(rowParm)&lt;/td&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-desc"&gt;&lt;ul&gt;&lt;li&gt;获取父节点数据(树模式)&lt;/li&gt;&lt;/ul&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class="l-methods-row"&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-name"&gt;&lt;strong&gt;&lt;a href="#getRowObj"&gt;getRowObj&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-parms"&gt;(rowParm)&lt;/td&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-desc"&gt;&lt;ul&gt;&lt;li&gt;行DOM转换为行数据&lt;/li&gt;&lt;/ul&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class="l-methods-row"&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-name"&gt;&lt;strong&gt;&lt;a href="#getSelected"&gt;getSelected&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-parms"&gt;()&lt;/td&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-desc"&gt;&lt;ul&gt;&lt;li&gt;获取选中的行数据(同getSelectedRow)&lt;/li&gt;&lt;/ul&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class="l-methods-row"&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-name"&gt;&lt;strong&gt;&lt;a href="#getSelectedRow"&gt;getSelectedRow&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-parms"&gt;()&lt;/td&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-desc"&gt;&lt;ul&gt;&lt;li&gt;获取选中的行数据&lt;/li&gt;&lt;/ul&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class="l-methods-row"&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-name"&gt;&lt;strong&gt;&lt;a href="#getSelectedRowObj"&gt;getSelectedRowObj&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-parms"&gt;()&lt;/td&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-desc"&gt;&lt;ul&gt;&lt;li&gt;获取选中的行 DOM对象&lt;/li&gt;&lt;/ul&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class="l-methods-row"&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-name"&gt;&lt;strong&gt;&lt;a href="#getSelectedRowObjs"&gt;getSelectedRowObjs&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-parms"&gt;()&lt;/td&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-desc"&gt;&lt;ul&gt;&lt;li&gt;获取选中的行 DOM对象集合&lt;/li&gt;&lt;/ul&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class="l-methods-row"&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-name"&gt;&lt;strong&gt;&lt;a href="#getSelectedRows"&gt;getSelectedRows&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-parms"&gt;()&lt;/td&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-desc"&gt;&lt;ul&gt;&lt;li&gt;获取选中的行数据集合(支持Ctrl多选)&lt;/li&gt;&lt;/ul&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class="l-methods-row"&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-name"&gt;&lt;strong&gt;&lt;a href="#getSelecteds"&gt;getSelecteds&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-parms"&gt;()&lt;/td&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-desc"&gt;&lt;ul&gt;&lt;li&gt;获取选中的行数据集合(支持Ctrl多选)(同getSelectedRows)&lt;/li&gt;&lt;/ul&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class="l-methods-row"&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-name"&gt;&lt;strong&gt;&lt;a href="#getUpdated"&gt;getUpdated&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-parms"&gt;()&lt;/td&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-desc"&gt;&lt;ul&gt;&lt;li&gt;获取修改过的数据&lt;/li&gt;&lt;/ul&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class="l-methods-row"&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-name"&gt;&lt;strong&gt;&lt;a href="#hasChildren"&gt;hasChildren&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-parms"&gt;(rowParm)&lt;/td&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-desc"&gt;&lt;ul&gt;&lt;li&gt;是否包括子节点(树模式)&lt;/li&gt;&lt;/ul&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class="l-methods-row"&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-name"&gt;&lt;strong&gt;&lt;a href="#isLeaf"&gt;isLeaf&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-parms"&gt;(rowParm)&lt;/td&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-desc"&gt;&lt;ul&gt;&lt;li&gt;是否叶节点(树模式)&lt;/li&gt;&lt;/ul&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class="l-methods-row"&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-name"&gt;&lt;strong&gt;&lt;a href="#isTotalSummary"&gt;isTotalSummary&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-parms"&gt;()&lt;/td&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-desc"&gt;&lt;ul&gt;&lt;li&gt;是否包含汇总&lt;/li&gt;&lt;/ul&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class="l-methods-row"&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-name"&gt;&lt;strong&gt;&lt;a href="#loadData"&gt;loadData&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-parms"&gt;(loadDataParm)&lt;/td&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-desc"&gt;&lt;ul&gt;&lt;li&gt;刷新数据&lt;/li&gt;&lt;/ul&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class="l-methods-row"&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-name"&gt;&lt;strong&gt;&lt;a href="#loadServerData"&gt;loadServerData&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-parms"&gt;(param, clause)&lt;/td&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-desc"&gt;&lt;ul&gt;&lt;li&gt;加载数据(服务器)&lt;/li&gt;&lt;/ul&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class="l-methods-row"&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-name"&gt;&lt;strong&gt;&lt;a href="#reRender"&gt;reRender&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-parms"&gt;(e)&lt;/td&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-desc"&gt;&lt;ul&gt;&lt;li&gt;重新加载html&lt;/li&gt;&lt;/ul&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class="l-methods-row"&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-name"&gt;&lt;strong&gt;&lt;a href="#setColumnWidth"&gt;setColumnWidth&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-parms"&gt;(columnparm, value)&lt;/td&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-desc"&gt;&lt;ul&gt;&lt;li&gt;调整列宽&lt;/li&gt;&lt;/ul&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class="l-methods-row"&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-name"&gt;&lt;strong&gt;&lt;a href="#setOptions"&gt;setOptions&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-parms"&gt;(parms)&lt;/td&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-desc"&gt;&lt;ul&gt;&lt;li&gt;重新设置参数(同名方法set)&lt;/li&gt;&lt;/ul&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class="l-methods-row"&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-name"&gt;&lt;strong&gt;&lt;a href="#SubmitEdit"&gt;SubmitEdit&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-parms"&gt;(rowParm)&lt;/td&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-desc"&gt;&lt;ul&gt;&lt;li&gt;提交编辑&lt;/li&gt;&lt;/ul&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class="l-methods-row"&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-name"&gt;&lt;strong&gt;&lt;a href="#toggle"&gt;toggle&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-parms"&gt;(targetRow)&lt;/td&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-desc"&gt;&lt;ul&gt;&lt;li&gt;伸展/收缩节点(树模式)&lt;/li&gt;&lt;/ul&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class="l-methods-row"&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-name"&gt;&lt;strong&gt;&lt;a href="#toggleCol"&gt;toggleCol&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-parms"&gt;(columnparm, visible)&lt;/td&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-desc"&gt;&lt;ul&gt;&lt;li&gt;显示/隐藏列&lt;/li&gt;&lt;/ul&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class="l-methods-row"&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-name"&gt;&lt;strong&gt;&lt;a href="#updateCell"&gt;updateCell&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-parms"&gt;(cell, value, rowParm)&lt;/td&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-desc"&gt;&lt;ul&gt;&lt;li&gt;更新单元格&lt;/li&gt;&lt;/ul&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class="l-methods-row"&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-name"&gt;&lt;strong&gt;&lt;a href="#updateRow"&gt;updateRow&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-parms"&gt;(newRowData, rowDom)&lt;/td&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-desc"&gt;&lt;ul&gt;&lt;li&gt;更新行&lt;/li&gt;&lt;/ul&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class="l-methods-row"&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-name"&gt;&lt;strong&gt;&lt;a href="#upgrade"&gt;upgrade&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-parms"&gt;(targetRow)&lt;/td&gt;&lt;td class="l-methods-row-cell l-methods-row-cell-desc"&gt;&lt;ul&gt;&lt;li&gt;升级(树模式)&lt;/li&gt;&lt;/ul&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&lt;strong&gt;例子&lt;/strong&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #008080;"&gt;1&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;a &lt;/span&gt;&lt;span style="color: #ff0000;"&gt;class&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="l-button"&lt;/span&gt;&lt;span style="color: #ff0000;"&gt; href&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="javascript:selectRow(2)"&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;选择行(3)&lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;a&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008080;"&gt;2&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;a &lt;/span&gt;&lt;span style="color: #ff0000;"&gt;class&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="l-button"&lt;/span&gt;&lt;span style="color: #ff0000;"&gt; href&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="javascript:getSelectRow()"&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;获取选择&lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;a&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #008080;"&gt; 1&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;var&lt;/span&gt; grid = $("#maingrid").ligerGrid({&lt;br /&gt;&lt;span style="color: #008080;"&gt; 2&lt;/span&gt;             columns: [&lt;br /&gt;&lt;span style="color: #008080;"&gt; 3&lt;/span&gt;                 { name: 'id', display: '序号', width: 200 },&lt;br /&gt;&lt;span style="color: #008080;"&gt; 4&lt;/span&gt;                 { name: 'name', display: '名称', width: 300 }&lt;br /&gt;&lt;span style="color: #008080;"&gt; 5&lt;/span&gt;             ]&lt;br /&gt;&lt;span style="color: #008080;"&gt; 6&lt;/span&gt;         });&lt;br /&gt;&lt;span style="color: #008080;"&gt; 7&lt;/span&gt; &lt;br /&gt;&lt;span style="color: #008080;"&gt; 8&lt;/span&gt;         grid.set({ data: { Rows: griddata} });&lt;br /&gt;&lt;span style="color: #008080;"&gt; 9&lt;/span&gt;          &lt;br /&gt;&lt;span style="color: #008080;"&gt;10&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;function&lt;/span&gt; selectRow(index) {&lt;br /&gt;&lt;span style="color: #008080;"&gt;11&lt;/span&gt;             grid.select(index);&lt;br /&gt;&lt;span style="color: #008080;"&gt;12&lt;/span&gt;         }&lt;br /&gt;&lt;span style="color: #008080;"&gt;13&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;function&lt;/span&gt; getSelectRow() {&lt;br /&gt;&lt;span style="color: #008080;"&gt;14&lt;/span&gt;             &lt;span style="color: #0000ff;"&gt;var&lt;/span&gt; rows = grid.getSelecteds();&lt;br /&gt;&lt;span style="color: #008080;"&gt;15&lt;/span&gt;             &lt;span style="color: #0000ff;"&gt;for&lt;/span&gt; (&lt;span style="color: #0000ff;"&gt;var&lt;/span&gt; i &lt;span style="color: #0000ff;"&gt;in&lt;/span&gt; rows) {&lt;br /&gt;&lt;span style="color: #008080;"&gt;16&lt;/span&gt;                 alert(rows[i].name);&lt;br /&gt;&lt;span style="color: #008080;"&gt;17&lt;/span&gt;             }&lt;br /&gt;&lt;span style="color: #008080;"&gt;18&lt;/span&gt;         }&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/div&gt;&lt;img src="http://www.cnblogs.com/leoxie2011/aggbug/2324485.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/leoxie2011/archive/2012/01/17/2324485.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/leoxie2011/archive/2012/01/16/2324106.html</id><title type="text">jQuery LigerUI 使用教程入门篇</title><summary type="text">阅读目录获取最新代码ligerUI是什么如何使用如何扩展获取最新代码可以到http://ligerui.googlecode.com下载最新代码。简介jQuery LigerUI 是基于jQuery的一系列UI控件组合，简单而又强大，致力于快速打造Web前端界面解决方案。 因为是前端控件，跟服务器无关，可以适合.net,jsp,php等等web服务器环境。目前全部插件的打包压缩JS只有100K左右,很轻巧。使用插件式的开发模式，以“简单”为原则的设计，每个插件尽量独立，并可依赖拓展。回到顶部ligerUI是什么jQuery LigerUI控件丰富，包括基础、导航、布局、表单、表格、树形、窗口等</summary><published>2012-01-16T15:40:00Z</published><updated>2012-01-16T15:40:00Z</updated><author><name>谢略</name><uri>http://www.cnblogs.com/leoxie2011/</uri></author><link rel="alternate" href="http://www.cnblogs.com/leoxie2011/archive/2012/01/16/2324106.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/leoxie2011/archive/2012/01/16/2324106.html"/><content type="html">&lt;p&gt;&lt;a name="labelTop"&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="category"&gt;&lt;p&gt;&lt;strong&gt;&lt;strong&gt;阅读目录&lt;/strong&gt;&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="#label1"&gt;获取最新代码&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="#label2"&gt;ligerUI是什么&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="#label3"&gt;如何使用&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="#label4"&gt;如何扩展&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div data-mce-=""&gt;&lt;a name="label1"&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;获取最新代码&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;可以到http://ligerui.googlecode.com下载最新代码。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;简介&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;jQuery LigerUI 是基于jQuery的一系列UI控件组合，简单而又强大，致力于快速打造Web前端界面解决方案。 因为是前端控件，跟服务器无关，可以适合.net,jsp,php等等web服务器环境。目前全部插件的打包压缩JS只有100K左右,很轻巧。使用插件式的开发模式，以&amp;ldquo;简单&amp;rdquo;为原则的设计，每个插件尽量独立，并可依赖拓展。&lt;/p&gt;&lt;div style="text-align: right;"&gt;&lt;a href="#labelTop"&gt;回到顶部&lt;/a&gt;&lt;a name="label2"&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;ligerUI是什么&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;jQuery LigerUI控件丰富，包括基础、导航、布局、表单、表格、树形、窗口等&lt;/p&gt;&lt;blockquote style='border:2px solid #EFEFEF;color:#333333;padding:5px 10px;'&gt;&lt;p&gt;基础：Resizable、Drag、Tip&lt;/p&gt;&lt;p&gt;导航：Menu、MenuBar、ToolBar&lt;/p&gt;&lt;p&gt;布局：Layout、Tab&lt;/p&gt;&lt;p&gt;表单：Form、TextBox、Button、CheckBox、ComboBox、DateEditor、Radio、Spinner&lt;/p&gt;&lt;p&gt;表格：Grid&lt;/p&gt;&lt;p&gt;树形：Tree&lt;/p&gt;&lt;p&gt;窗口：Dialog、MessageBox、Window&lt;/p&gt;&lt;/blockquote&gt;&lt;div style="text-align: right;"&gt;&lt;a href="#labelTop"&gt;回到顶部&lt;/a&gt;&lt;a name="label3"&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;如何使用&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;jQuery LigerUI是基于jQuery而设计的一系列插件集合。基本上每个插件都是相对独立的。但是彼此之间又紧密地关联着，合理地对插件进行组装，实现出现各种复杂的功能。 使用UI可以帮助你快速地创建友好的用户界面。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;第一个例子&lt;/strong&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;head&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;title&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;title&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;link &lt;/span&gt;&lt;span style="color: #ff0000;"&gt;href&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="http://www.cnblogs.com/lib/ligerUI/skins/Aqua/css/ligerui-all.css"&lt;/span&gt;&lt;span style="color: #ff0000;"&gt; rel&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="stylesheet"&lt;/span&gt;&lt;span style="color: #ff0000;"&gt; type&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="text/css"&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;script &lt;/span&gt;&lt;span style="color: #ff0000;"&gt;src&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="http://www.cnblogs.com/lib/jquery/jquery-1.3.2.min.js"&lt;/span&gt;&lt;span style="color: #ff0000;"&gt; type&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="text/javascript"&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;script&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt; &lt;br /&gt;    &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;script &lt;/span&gt;&lt;span style="color: #ff0000;"&gt;src&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="http://www.cnblogs.com/lib/ligerUI/js/core/base.js"&lt;/span&gt;&lt;span style="color: #ff0000;"&gt; type&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="text/javascript"&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;script&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;script &lt;/span&gt;&lt;span style="color: #ff0000;"&gt;src&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="http://www.cnblogs.com/lib/ligerUI/js/plugins/ligerTextBox.js"&lt;/span&gt;&lt;span style="color: #ff0000;"&gt; type&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="text/javascript"&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;script&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;script &lt;/span&gt;&lt;span style="color: #ff0000;"&gt;type&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="text/javascript"&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt;&lt;br /&gt;        $(&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #0000ff;"&gt;function&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt; ()&lt;br /&gt;        {&lt;br /&gt;            &lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #008000;"&gt;//&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #008000;"&gt;我们将一个html文本框对象转换成ligerui文本框对象,并返回ligerui对象&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #0000ff;"&gt;var&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt; g &lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt;=&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt; $(&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt;"&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt;#txt1&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt;"&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt;).ligerTextBox(&lt;br /&gt;            {&lt;br /&gt;                &lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #008000;"&gt;//&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #008000;"&gt;如果没有输入时,会提示不能为空&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt;                nullText: &lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt;'&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt;不能为空&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt;'&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt;&lt;br /&gt;            });&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;            &lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #008000;"&gt;/*&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #008000;"&gt;&lt;br /&gt;            如何获取属性&lt;br /&gt;            &lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #008000;"&gt;*/&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt;&lt;br /&gt;            &lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #008000;"&gt;//&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #008000;"&gt;方式一&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt;            alert(&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt;'&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt;方式一:&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt;'&lt;/span&gt; &lt;span style="background-color: #f5f5f5; color: #000000;"&gt;+&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt; g.get(&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt;'&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt;disabled&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt;'&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt;));&lt;br /&gt;            &lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #008000;"&gt;//&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #008000;"&gt;方式二&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt;            alert(&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt;'&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt;方式二:&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt;'&lt;/span&gt; &lt;span style="background-color: #f5f5f5; color: #000000;"&gt;+&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt; $(&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt;"&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt;#txt1&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt;"&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt;).ligerTextBox(&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt;'&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt;option&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt;'&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt;, &lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt;'&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt;disabled&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt;'&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt;));&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;            &lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #008000;"&gt;/*&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #008000;"&gt;&lt;br /&gt;            如何设置属性&lt;br /&gt;            &lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #008000;"&gt;*/&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt;&lt;br /&gt;            &lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #008000;"&gt;//&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #008000;"&gt;方式一&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt;            g.set(&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt;'&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt;disabled&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt;'&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt;, &lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #0000ff;"&gt;true&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt;);&lt;br /&gt;            &lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #008000;"&gt;//&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #008000;"&gt;方式二 &lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt;            $(&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt;"&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt;#txt1&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt;"&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt;).ligerTextBox(&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt;'&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt;option&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt;'&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt;, &lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt;'&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt;disabled&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt;'&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt;, &lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #0000ff;"&gt;false&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt;);&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;            &lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #008000;"&gt;/*&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #008000;"&gt;&lt;br /&gt;            如何调用方法&lt;br /&gt;            &lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #008000;"&gt;*/&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt;&lt;br /&gt;            &lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #008000;"&gt;//&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #008000;"&gt;方式一&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt;            g.setDisabled();&lt;br /&gt;            &lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #008000;"&gt;//&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #008000;"&gt;方式二 &lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt;            $(&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt;"&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt;#txt1&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt;"&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt;).ligerTextBox(&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt;'&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt;setEnabled&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt;'&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt;);&lt;br /&gt;&lt;br /&gt;            &lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #008000;"&gt;/*&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #008000;"&gt;&lt;br /&gt;            如何设置事件&lt;br /&gt;            &lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #008000;"&gt;*/&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt;&lt;br /&gt;            &lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #008000;"&gt;//&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #008000;"&gt;这里给文本框绑定一个改变值的事件&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #008000;"&gt;//&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #008000;"&gt;也可以设置onChangeValue参数&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt;            g.bind(&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt;'&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt;changeValue&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt;'&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt;, &lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #0000ff;"&gt;function&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000;"&gt; (value)&lt;br /&gt;            {&lt;br /&gt;                alert(value);&lt;br /&gt;&lt;br /&gt;            });&lt;br /&gt;&lt;br /&gt;        }); &lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;script&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;head&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;body &lt;/span&gt;&lt;span style="color: #ff0000;"&gt;style&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="padding:10px"&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;input &lt;/span&gt;&lt;span style="color: #ff0000;"&gt;type&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="text"&lt;/span&gt;&lt;span style="color: #ff0000;"&gt; id&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="txt1"&lt;/span&gt;&lt;span style="color: #ff0000;"&gt; value&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;=""&lt;/span&gt;&lt;span style="color: #ff0000;"&gt; style&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="width:200px"&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;body&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;p&gt;更多的参数和方法的设置可以查看API：http://www.ligerui.com/api/&lt;/p&gt;&lt;p&gt;上面是TextBox的使用范例，其他的插件使用方式类似。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;如何使用ligerUI对象&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;我们应用完插件以后，是返回一个ligerui对象的，可以把这个对象保存在一个全局的变量里面。在后续的操作中可能会用到。如果因为变量作用域的限制等，没有及时保存起来。我们可以用其他方式获取。见如下：&lt;/p&gt;&lt;p&gt;&lt;strong&gt;保存到一个全局的javascript变量：&lt;/strong&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #0000ff;"&gt;var&lt;/span&gt; g;&lt;br /&gt;$(&lt;span style="color: #0000ff;"&gt;function&lt;/span&gt; ()&lt;br /&gt;{ &lt;br /&gt;g = $("#txt1").ligerTextBox();&lt;br /&gt;);&lt;/div&gt;&lt;p&gt;&lt;strong&gt;使用$.fn.ligerGetTextBoxManager&lt;/strong&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #0000ff;"&gt;var&lt;/span&gt; g = $("#txt1").ligerGetTextBoxManager ();&lt;/div&gt;&lt;p&gt;&lt;strong&gt;使用$.ligerui.get方法&lt;/strong&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #0000ff;"&gt;var&lt;/span&gt; g =  $.ligerui.get('txt1');&lt;/div&gt;&lt;blockquote style='border:2px solid #EFEFEF;color:#333333;padding:5px 10px;'&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;第三个方式的是使用ligerui对象的id直接获取的，在传入参数没有指定id的情况下，对象的id将会使用html元素的id，如果html元素没有id，将会自动生成一个。所以在这里我们可以用html文本框的id来获取。&lt;/li&gt;&lt;li&gt;如果没有指定html元素的id，可以用第一种方式或者第二种方式。&lt;/li&gt;&lt;li&gt;其实第二种方式可以用第一种方式来替代，实则上ligerText是可以重复调用的，不同的是第二次以后调用都是直接放回ligerui对象。当我们不确定html元素是否已经应用了插件的情况下可以使用第二种方式。&lt;/li&gt;&lt;li&gt;其他插件的命名跟TextBox类同&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;strong&gt;&lt;strong&gt;事件处理&lt;/strong&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;事件处理有两种方式。一种是以参数的形式传入，一种是调用ligerui对象的bind方法。&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;            &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;方式一&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;            &lt;span style="color: #0000ff;"&gt;var&lt;/span&gt; g = $("#txt1").ligerTextBox(&lt;br /&gt;            {&lt;br /&gt;                onChangeValue : &lt;span style="color: #0000ff;"&gt;function&lt;/span&gt;(value){alert(value);}&lt;br /&gt;            });&lt;br /&gt;&lt;br /&gt;           &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;方式二      &lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;            g.bind('changeValue', &lt;span style="color: #0000ff;"&gt;function&lt;/span&gt; (value)&lt;br /&gt;            {&lt;br /&gt;                alert(value);&lt;br /&gt;            });&lt;/div&gt;&lt;blockquote style='border:2px solid #EFEFEF;color:#333333;padding:5px 10px;'&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;使用bind方法是没有带&amp;rdquo;on&amp;rdquo;的。&lt;/li&gt;&lt;li&gt;事件监听是可以多次绑定的。&lt;/li&gt;&lt;li&gt;对于某些事件，如果函数的返回值是false，那么后面还没有触发的函数将不会再执行&lt;/li&gt;&lt;li&gt;第二种方式(bind)，是V1.1.3使用core机制以后引入的。&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;strong&gt;&lt;strong&gt;方法调用&lt;/strong&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;使用ligerui的接口很方便。只需要调用ligerui对象的方法即可。&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;这里设置文本框不能编辑&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;g.setDisabled();&lt;br /&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;这里设置文本框可以编辑&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;g.setEnabled();&lt;/div&gt;&lt;p&gt;也可以使用这种方式&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;$(&amp;ldquo;#grid&amp;rdquo;).ligerGrid(&amp;lsquo;setEnabled&amp;rsquo;);&lt;/div&gt;&lt;blockquote style='border:2px solid #EFEFEF;color:#333333;padding:5px 10px;'&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;至于这个对象有哪些方法，可以查看API&lt;/li&gt;&lt;li&gt;对象的方法是可以扩展的，后面会有一篇ligerui扩展的章节来介绍&lt;/li&gt;&lt;li&gt;第二种方式是在V1.1.4加入的&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;strong&gt;&lt;strong&gt;获取参数值&lt;/strong&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;每一个ligerui对象都会有get方法。可以获取参数值&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #0000ff;"&gt;var&lt;/span&gt; url = g.get(&amp;lsquo;url&amp;rsquo;);&lt;/div&gt;&lt;p&gt;或者是：&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #0000ff;"&gt;var&lt;/span&gt; url = $(&amp;ldquo;#grid&amp;rdquo;).ligerGrid(&amp;lsquo;option&amp;rsquo;,&amp;rsquo;url&amp;rsquo;);&lt;/div&gt;&lt;p&gt;&lt;strong&gt;动态设置参数&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;每一个ligerui对象都会有set方法。用于动态得设置参数。比如改变Grid的url，那么可以这样写：&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;g.set(&amp;lsquo;url&amp;rsquo;,url);&lt;/div&gt;&lt;p&gt;或者是：&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;g.set({url:url});&lt;/div&gt;&lt;p&gt;也可以用插件的方式：&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;$(&amp;ldquo;#grid&amp;rdquo;).ligerGrid(&amp;lsquo;option&amp;rsquo;,&amp;rsquo;url&amp;rsquo;,url);&lt;/div&gt;&lt;blockquote style='border:2px solid #EFEFEF;color:#333333;padding:5px 10px;'&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;第二种方式是允许同时传入多个参数的。&lt;/li&gt;&lt;li&gt;Set方法是所有插件的统一设置属性的接口&lt;/li&gt;&lt;li&gt;Set方法是V1.1.3使用core机制以后引入的。&lt;/li&gt;&lt;li&gt;插件传参的方式是V1.1.4引入的&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div style="text-align: right;"&gt;&lt;a href="#labelTop"&gt;回到顶部&lt;/a&gt;&lt;a name="label4"&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;如何扩展&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Ligerui的默认参数、方法都是可以扩展的，这里我们定义了两个入口: $.ligerDefaults和$.ligerMethods。&lt;/p&gt;&lt;p&gt;比如要改变或者扩展Grid的默认参数，可以改变$.ligerDefaults.Grid&lt;/p&gt;&lt;p&gt;&lt;strong&gt;默认参数扩展&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;只需要扩展对象：$.ligerDefaults.{Plugin}&lt;/p&gt;&lt;p&gt;比如要改变表格默认的头部标题：&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;($.ligerDefaults.Grid)&lt;br /&gt;{&lt;br /&gt;    $.ligerDefaults.Grid.title = "我的表格";&lt;br /&gt;}&lt;/div&gt;&lt;p&gt;&lt;strong&gt;本地化支持扩展&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;只需要扩展对象：$.ligerDefaults.{Plugin}String&lt;/p&gt;&lt;p&gt;比如把表格&amp;ldquo;加载时&amp;rdquo;翻译成英文：&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;($.ligerDefaults.GridString)&lt;br /&gt;{&lt;br /&gt;    $.ligerDefaults.GridString.loadingMessage = "loading...";&lt;br /&gt;}&lt;/div&gt;&lt;p&gt;&lt;strong&gt;方法扩展&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;只需要扩展对象：$. ligerMethos.{Plugin}&lt;/p&gt;&lt;p&gt;这里给Grid ligerui对象增加一个alert方法：&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;$.extend($.ligerMethods.Grid,&lt;br /&gt;            {&lt;br /&gt;                alert : &lt;span style="color: #0000ff;"&gt;function&lt;/span&gt; ()&lt;br /&gt;                {&lt;br /&gt;                     &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;要注意到一点，这里的this就是ligerui对象&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;                    &lt;span style="color: #0000ff;"&gt;var&lt;/span&gt; rowdata = &lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.getSelectedRow();&lt;br /&gt;                    &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; (!rowdata)&lt;br /&gt;                        alert('空');&lt;br /&gt;                    &lt;span style="color: #0000ff;"&gt;else&lt;/span&gt;&lt;br /&gt;                        alert(rowdata.CustomerID);&lt;br /&gt;                }&lt;br /&gt;            }&lt;br /&gt;        );&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;function&lt;/span&gt; show()&lt;br /&gt;{&lt;br /&gt;     &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;后面就可以这样使用&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;     Var g = $(&amp;ldquo;#maingrid&amp;rdquo;).ligerGrid();&lt;br /&gt;     g.alert();&lt;br /&gt;}&lt;/div&gt;&lt;img src="http://www.cnblogs.com/leoxie2011/aggbug/2324106.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/leoxie2011/archive/2012/01/16/2324106.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/leoxie2011/archive/2012/01/16/2323188.html</id><title type="text">jQuery LigerUI V1.1.5 (包括API和全部源码) 发布</title><summary type="text">前言2个月前以博文的形式发布了V1.1.0,到现在已经更新了5个版本,V1.1.3引入了core机制,提供了ligerui内置事件处理机制、属性动态设置机制等等,搭建了ligerui系列插件的基础。并在下一个版本进一步做了补充。V1.1.5主要是对表格进行进一步地加强,目前已经支持固定列、完美的多表头,并对表格的编辑能力优化了一番,支持行编辑模式和明细编辑模式,用户可以自己定义编辑器,比如使用外部的日期第三方控件,都可以引入到ligerGrid里面来。发布的版本将提供chm版本的api,方便用户查看。相关链接API:http://api.ligerui.com/ 演示地址:http://dem</summary><published>2012-01-15T16:22:00Z</published><updated>2012-01-15T16:22:00Z</updated><author><name>谢略</name><uri>http://www.cnblogs.com/leoxie2011/</uri></author><link rel="alternate" href="http://www.cnblogs.com/leoxie2011/archive/2012/01/16/2323188.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/leoxie2011/archive/2012/01/16/2323188.html"/><content type="html">&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;style&gt;&lt;!--p{margin: 5px auto 5px auto;text-indent:0px;}        h3.l-title        {            margin: 4px;            padding: 0;            font-size: 15px;            font-weight: bold;        }        .style1        {            font-size: 17px;            font-weight: bold;            margin: 7px;            padding: 0;        }        .style2        {            line-height: 22px;            font-size: 12px;            margin: 0;            padding-left: 20px;            padding-right: 0;            padding-top: 0;            padding-bottom: 0;        }        .style3        {            color: #008000;            font-weight: bold;            margin-right: 2px;        }    --&gt;&lt;/style&gt;&lt;h2 class="l-title" style="margin: 7px; font-size: 17px; font-weight: bold; padding: 0px;"&gt;前言&lt;/strong&gt;&lt;/p&gt;&lt;p class="style2"&gt;2个月前以博文的形式发布了V1.1.0,到现在已经更新了5个版本,V1.1.3引入了core机制,提供了ligerui内置事件处理机制、属性动态设置机制等等,搭建了ligerui系列插件的基础。并在下一个版本进一步做了补充。&lt;/p&gt;&lt;p class="style2"&gt;V1.1.5主要是对表格进行进一步地加强,目前已经支持固定列、完美的多表头,并对表格的编辑能力优化了一番,支持行编辑模式和明细编辑模式,用户可以自己定义编辑器,比如使用外部的日期第三方控件,都可以引入到ligerGrid里面来。&lt;/p&gt;&lt;p class="style2"&gt;发布的版本将提供chm版本的api,方便用户查看。&lt;/p&gt;&lt;h2 class="l-title" style="margin: 7px; font-size: 17px; font-weight: bold; padding: 0px;"&gt;相关链接&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;API:&amp;nbsp;&lt;a href="http://api.ligerui.com/"&gt;http://api.ligerui.com/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp; 演示地址:&lt;a href="http://demo.ligerui.com/"&gt;http://demo.ligerui.com/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp; 源码下载:&lt;a href="http://ligerui.googlecode.com/"&gt;http://ligerui.googlecode.com/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp; 技术支持：&lt;a href="http://www.cnblogs.com/leoxie2011/"&gt;http://www.cnblogs.com/leoxie2011/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;h2 class="style1"&gt;V1.1.5更新记录&lt;/strong&gt;&lt;/p&gt;&lt;h3 class="l-title"&gt;表格&lt;/strong&gt;&lt;/p&gt;&lt;p class="style2"&gt;&lt;span class="style3"&gt;[需求]&lt;/span&gt;固定列&lt;/p&gt;&lt;p class="style2"&gt;&lt;span class="style3"&gt;[需求]&lt;/span&gt;多表头支持跨行合并&lt;/p&gt;&lt;p class="style2"&gt;&lt;span class="style3"&gt;[需求]&lt;/span&gt;增加行编辑模式&lt;/p&gt;&lt;p class="style2"&gt;&lt;span class="style3"&gt;[需求]&lt;/span&gt;增加明细编辑模式&lt;/p&gt;&lt;p class="style2"&gt;&lt;span class="style3"&gt;[需求]&lt;/span&gt;增加扩展接口：排序、格式化器,优化扩展接口：编辑器&lt;/p&gt;&lt;p class="style2"&gt;&lt;span class="style3"&gt;[需求]&lt;/span&gt;选择行支持Ctrl选择&lt;/p&gt;&lt;p class="style2"&gt;&lt;span class="style3"&gt;[需求]&lt;/span&gt;明细框可以设置高度(detail参数增加onExtend、onCollapse 和height)&lt;/p&gt;&lt;p class="style2"&gt;&lt;span class="style3"&gt;[需求]&lt;/span&gt;参数移除renderDate、dblClickToEdit 方法移除stringToDate、getFormatDate&lt;/p&gt;&lt;p class="style2"&gt;&lt;span class="style3"&gt;[需求]&lt;/span&gt;增加参数detailToEdit、frozen、frozenDetail、frozenCheckbox、detailHeight、rownumbers、frozenRownumbers、rownumbersColWidth；&lt;br /&gt;增加方法beginEdit、SubmitEdit、cancelEdit、reRender、addEditRow、extendDetail、collapseDetail、getSelectedRows(支持Ctrl)、getSelected、getSelecteds、getSelectedRowObjs；&lt;br /&gt;增加事件onBeforeChangeColumnWidth、onAfterChangeColumnWidth、onBeginEdit、onAfterBeginEdit、onCancelEdit、onBeforeSubmitEdit、onAfterSubmitEdit&lt;/p&gt;&lt;h3 class="l-title"&gt;表单&lt;/strong&gt;&lt;/p&gt;&lt;p class="style2"&gt;&lt;span class="style3"&gt;[需求]&lt;/span&gt;combobox 增加事件onToggle、onShow、onHide&lt;/p&gt;&lt;h3 class="l-title"&gt;树&lt;/strong&gt;&lt;/p&gt;&lt;p class="style2"&gt;&lt;span class="style3"&gt;[BUG]&lt;/span&gt;修复右键菜单不触发的问题&lt;/p&gt;&lt;h2 class="style1"&gt;V1.1.4更新记录&lt;/strong&gt;&lt;/p&gt;&lt;h3 class="l-title"&gt;核心&lt;/strong&gt;&lt;/p&gt;&lt;p class="style2"&gt;&lt;span class="style3"&gt;[需求]&lt;/span&gt;增加方法的调用方式：liger{Plugin}(method)&lt;/p&gt;&lt;p class="style2"&gt;&lt;span class="style3"&gt;[需求]&lt;/span&gt;增加获取属性的调用方式：liger{Plugin}("option",name)&lt;/p&gt;&lt;p class="style2"&gt;&lt;span class="style3"&gt;[需求]&lt;/span&gt;增加设置属性的调用方式：liger{Plugin}("option",name,value)&lt;/p&gt;&lt;h3 class="l-title"&gt;综合&lt;/strong&gt;&lt;/p&gt;&lt;p class="style2"&gt;&lt;span class="style3"&gt;[BUG]&lt;/span&gt;修复V1.1.3部分插件没有触发事件的BUG&lt;/p&gt;&lt;h3 class="l-title"&gt;表单&lt;/strong&gt;&lt;/p&gt;&lt;p class="style2"&gt;&lt;span class="style3"&gt;[BUG]&lt;/span&gt;修复V1.1.3验证出现的气泡没有消失的BUG&lt;/p&gt;&lt;h3 class="l-title"&gt;布局&lt;/strong&gt;&lt;/p&gt;&lt;p class="style2"&gt;&lt;span class="style3"&gt;[需求]&lt;/span&gt;Tab控件增加双击关闭页签&lt;/p&gt;&lt;p class="style2"&gt;&lt;span class="style3"&gt;[需求]&lt;/span&gt;Tab控件增加拖动页签功能&lt;/p&gt;&lt;h2 class="style1"&gt;V1.1.3更新记录&lt;/strong&gt;&lt;/p&gt;&lt;h3 class="l-title"&gt;核心&lt;/strong&gt;&lt;/p&gt;&lt;p class="style2"&gt;&lt;span class="style3"&gt;[需求]&lt;/span&gt;引入core/base.js,每一个插件都需要依赖这个文件,其提供了ligerui内置事件处理机制、属性动态设置机制等等&lt;/p&gt;&lt;p class="style2"&gt;&lt;span class="style3"&gt;[需求]&lt;/span&gt;每一个插件拥有get、set、bind、trigger的方法&lt;/p&gt;&lt;h3 class="l-title"&gt;基础&lt;/strong&gt;&lt;/p&gt;&lt;p class="style2"&gt;&lt;span class="style3"&gt;[优化]&lt;/span&gt;优化了ligerResizable和ligerDrag&lt;/p&gt;&lt;p class="style2"&gt;&lt;span class="style3"&gt;[需求]&lt;/span&gt;ligerDrag增加副本模式&lt;/p&gt;&lt;p class="style2"&gt;&lt;span class="style3"&gt;[需求]&lt;/span&gt;ligerDrag增加指定区域释放拖动(Drop)的支持&lt;/p&gt;&lt;h2 class="style1"&gt;V1.1.2更新记录&lt;/strong&gt;&lt;/p&gt;&lt;h3 class="l-title"&gt;综合&lt;/strong&gt;&lt;/p&gt;&lt;p class="style2"&gt;&lt;span class="style3"&gt;[需求]&lt;/span&gt;给每一个插件提供onRender和onRendered接口&lt;/p&gt;&lt;h3 class="l-title"&gt;表格&lt;/strong&gt;&lt;/p&gt;&lt;p class="style2"&gt;&lt;span class="style3"&gt;[需求]&lt;/span&gt;为表格编辑器提供扩展接口&lt;/p&gt;&lt;p class="style2"&gt;&lt;span class="style3"&gt;[需求]&lt;/span&gt;参数onRClickToSelect(右击行时是否选中)改名whenRClickToSelect&lt;/p&gt;&lt;p class="style2"&gt;&lt;span class="style3"&gt;[需求]&lt;/span&gt;增加参数clickToEdit、minColumnWidth&lt;/p&gt;&lt;p class="style2"&gt;&lt;span class="style3"&gt;[需求]&lt;/span&gt;增加事件onEndEdit&lt;/p&gt;&lt;p class="style2"&gt;&lt;span class="style3"&gt;[需求]&lt;/span&gt;增加方法setColumnWidth(调整列宽)&lt;/p&gt;&lt;p class="style2"&gt;&lt;span class="style3"&gt;[需求]&lt;/span&gt;参数onRClickToSelect改名whenRClickToSelect&lt;/p&gt;&lt;h3 class="l-title"&gt;对话框&lt;/strong&gt;&lt;/p&gt;&lt;p class="style2"&gt;&lt;span class="style3"&gt;[优化]&lt;/span&gt;移除ligerDialogImagePath,改为$.ligerui.DialogImagePath&lt;/p&gt;&lt;p class="style2"&gt;&lt;span class="style3"&gt;[需求]&lt;/span&gt;添加设置url方法&lt;/p&gt;&lt;p class="style2"&gt;&lt;span class="style3"&gt;[需求]&lt;/span&gt;增加加载完成事件onloaded&lt;/p&gt;&lt;p class="style2"&gt;&lt;span class="style3"&gt;[需求]&lt;/span&gt;增加参数：show、title&lt;/p&gt;&lt;h3 class="l-title"&gt;Window&lt;/strong&gt;&lt;/p&gt;&lt;p class="style2"&gt;&lt;span class="style3"&gt;[需求]&lt;/span&gt;添加load远程文件方法和设置url方法&lt;/p&gt;&lt;h3 class="l-title"&gt;气泡&lt;/strong&gt;&lt;/p&gt;&lt;p class="style2"&gt;&lt;span class="style3"&gt;[优化]&lt;/span&gt;优化气泡控件&lt;/p&gt;&lt;h3 class="l-title"&gt;树&lt;/strong&gt;&lt;/p&gt;&lt;p class="style2"&gt;&lt;span class="style3"&gt;[需求]&lt;/span&gt;增加方法arrayToTree&lt;/p&gt;&lt;h2 class="style1"&gt;V1.1.1更新记录&lt;/strong&gt;&lt;/p&gt;&lt;h3 class="l-title"&gt;综合&lt;/strong&gt;&lt;/p&gt;&lt;p class="style2"&gt;&lt;span class="style3"&gt;[需求]&lt;/span&gt;给每一个组件管理器提供扩展接口&lt;/p&gt;&lt;h3 class="l-title"&gt;表格&lt;/strong&gt;&lt;/p&gt;&lt;p class="style2"&gt;&lt;span class="style3"&gt;[需求]&lt;/span&gt;增加addRows方法,一次性增加多行,参数为行数据数组&lt;/p&gt;&lt;p class="style2"&gt;&lt;span class="style3"&gt;[需求]&lt;/span&gt;增加了表格列初始化隐藏的属性hide&lt;/p&gt;&lt;p class="style2"&gt;&lt;span class="style3"&gt;[BUG]&lt;/span&gt;解决表格返回的数据为空时页面不反应的问题&lt;/p&gt;&lt;p class="style2"&gt;&lt;span class="style3"&gt;[BUG]&lt;/span&gt;解决表格隐藏列以后排序,依旧会把依把已经隐藏的数据显示出来的问题&lt;/p&gt;&lt;p class="style2"&gt;&lt;span class="style3"&gt;[BUG]&lt;/span&gt;解决在表头右键会出现【显示/隐藏列】，但是在表头点击 【显示/隐藏列】 不消失的问题&lt;/p&gt;&lt;p class="style2"&gt;&lt;span class="style3"&gt;[BUG]&lt;/span&gt;解决在表格的最后一列点击鼠标右键显示【显示/隐藏列】，【显示/隐藏列】错位的问题&lt;/p&gt;&lt;p class="style2"&gt;&lt;span class="style3"&gt;[BUG]&lt;/span&gt;解决在表格隐藏列以后，如果是明细情况，明细的宽度没有根据现有显示列改变的问题&lt;/p&gt;&lt;p class="style2"&gt;&lt;span class="style3"&gt;[BUG]&lt;/span&gt;解决调用显示/隐藏列后【显示/隐藏列菜单】没有更新的问题&lt;/p&gt;&lt;p class="style2"&gt;&lt;span class="style3"&gt;[BUG]&lt;/span&gt;解决树表格启用编辑状态时数据没有更新准确的问题&lt;/p&gt;&lt;p class="style2"&gt;&lt;span class="style3"&gt;[BUG]&lt;/span&gt;解决分组模式下启用明细出现问题的BUG&lt;/p&gt;&lt;p class="style2"&gt;&lt;span class="style3"&gt;[BUG]&lt;/span&gt;解决分组、明细展开框 显示时 没有右边框的问题&lt;/p&gt;&lt;p class="style2"&gt;&lt;span class="style3"&gt;[BUG]&lt;/span&gt;解决统计时存在 明细或者复选框 不能准确显示的问题&lt;/p&gt;&lt;p class="style2"&gt;&lt;span class="style3"&gt;[BUG]&lt;/span&gt;解决 分组显示时，收缩所有分组 不能准确显示的问题&lt;/p&gt;&lt;p class="style2"&gt;&lt;span class="style3"&gt;[BUG]&lt;/span&gt;解决 隐藏列后，调整表头宽度 不能准确显示的问题&lt;/p&gt;&lt;h3 class="l-title"&gt;下拉框&lt;/strong&gt;&lt;/p&gt;&lt;p class="style2"&gt;&lt;span class="style3"&gt;[BUG]&lt;/span&gt;解决带分页下拉框在调整grid宽度时没反应的问题&lt;/p&gt;&lt;h3 class="l-title"&gt;表单&lt;/strong&gt;&lt;/p&gt;&lt;p class="style2"&gt;&lt;span class="style3"&gt;[BUG]&lt;/span&gt;解决不能设置text长度。text本身是可以设置，但在form里初始化text时，没传参数的问题&lt;/p&gt;&lt;p class="style2"&gt;&lt;span class="style3"&gt;[需求]&lt;/span&gt;统一为每一个表单元素"管理器"提供 设置只读、获取值、设置值的接口&lt;/p&gt;&lt;p&gt;&lt;strong style="font-size: 14pt;"&gt;&amp;nbsp;界面展示：&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;V1.1.5支持固定列&lt;/p&gt;&lt;p&gt;&lt;img src="http://images.cnblogs.com/cnblogs_com/leoxie2011/frozen.jpg" alt="" width="675" height="336" border="0" /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;多表头支持跨列合并：&lt;/p&gt;&lt;p&gt;&lt;img src="http://images.cnblogs.com/cnblogs_com/leoxie2011/header.jpg" alt="" width="605" height="341" border="0" /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;行编辑模式：&lt;/p&gt;&lt;p&gt;&lt;img src="http://images.cnblogs.com/cnblogs_com/leoxie2011/editrow.jpg" alt="" width="585" height="319" border="0" /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;明细编辑模式：&lt;/p&gt;&lt;p&gt;&lt;img src="http://images.cnblogs.com/cnblogs_com/leoxie2011/editdetail.jpg" alt="" width="705" height="389" border="0" /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/leoxie2011/aggbug/2323188.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/leoxie2011/archive/2012/01/16/2323188.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/leoxie2011/archive/2011/11/20/2256091.html</id><title type="text">jQuery LigerUI V1.1.0 (包括API和全部源码) 发布</title><summary type="text">API:http://api.ligerui.com/演示地址:http://demo.ligerui.com/源码下载:http://ligerui.googlecode.com/技术支持：http://www.cnblogs.com/leoxie2011/V1.1.0更新记录：表格[需求]加入分组模式[需求]加入树模式[需求]加入统计行(位于底部)[需求]加入延时加载[需求]加入本地查询支持[需求]加入复选框初始化的支持[需求]列 百分比[需求]列 显示和隐藏[需求]列 表头改变文字[需求]编辑器事件: 编辑前事件、验证编辑器结果是否通过、结束编辑后事件[需求]增加右击接口[需求]多表头[</summary><published>2011-11-20T07:15:00Z</published><updated>2011-11-20T07:15:00Z</updated><author><name>谢略</name><uri>http://www.cnblogs.com/leoxie2011/</uri></author><link rel="alternate" href="http://www.cnblogs.com/leoxie2011/archive/2011/11/20/2256091.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/leoxie2011/archive/2011/11/20/2256091.html"/><content type="html">&lt;div&gt;&lt;p&gt;&lt;span class="Apple-style-span" style="line-height: normal; font-size: 14pt;"&gt;API:&amp;nbsp;&lt;a href="http://api.ligerui.com/" target="_blank"&gt;&lt;span style="font-size: 14pt;"&gt;http://api.ligerui.com/&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 14pt;"&gt;演示地址:&lt;/span&gt;&lt;a href="http://demo.ligerui.com/" target="_blank"&gt;&lt;span style="font-size: 14pt;"&gt;http://demo.ligerui.com/&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 14pt;"&gt;源码下载:&lt;/span&gt;&lt;a href="http://ligerui.googlecode.com/" target="_blank"&gt;&lt;span style="font-size: 14pt;"&gt;http://ligerui.googlecode.com/&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 14pt;"&gt;技术支持：&lt;/span&gt;&lt;a href="file:///E:/%E6%88%91%E7%9A%84%E9%A1%B9%E7%9B%AE/%E6%96%B0%E9%A1%B9%E7%9B%AE/LigerUI/%E5%8F%91%E5%B8%83%E7%89%88%E6%9C%AC/V1.1.0/welcome.htm"&gt;&lt;span style="font-size: 14pt;"&gt;http://www.cnblogs.com/leoxie2011/&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;V1.1.0更新记录：&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;表格&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color: #008000; margin-right: 2px; font-weight: bold;"&gt;[需求]&lt;/span&gt;加入分组模式&lt;/p&gt;&lt;p&gt;&lt;span style="color: #008000; margin-right: 2px; font-weight: bold;"&gt;[需求]&lt;/span&gt;加入树模式&lt;/p&gt;&lt;p&gt;&lt;span style="color: #008000; margin-right: 2px; font-weight: bold;"&gt;[需求]&lt;/span&gt;加入统计行(位于底部)&lt;/p&gt;&lt;p&gt;&lt;span style="color: #008000; margin-right: 2px; font-weight: bold;"&gt;[需求]&lt;/span&gt;加入延时加载&lt;/p&gt;&lt;p&gt;&lt;span style="color: #008000; margin-right: 2px; font-weight: bold;"&gt;[需求]&lt;/span&gt;加入本地查询支持&lt;/p&gt;&lt;p&gt;&lt;span style="color: #008000; margin-right: 2px; font-weight: bold;"&gt;[需求]&lt;/span&gt;加入复选框初始化的支持&lt;/p&gt;&lt;p&gt;&lt;span style="color: #008000; margin-right: 2px; font-weight: bold;"&gt;[需求]&lt;/span&gt;列 百分比&lt;/p&gt;&lt;p&gt;&lt;span style="color: #008000; margin-right: 2px; font-weight: bold;"&gt;[需求]&lt;/span&gt;列 显示和隐藏&lt;/p&gt;&lt;p&gt;&lt;span style="color: #008000; margin-right: 2px; font-weight: bold;"&gt;[需求]&lt;/span&gt;列 表头改变文字&lt;/p&gt;&lt;p&gt;&lt;span style="color: #008000; margin-right: 2px; font-weight: bold;"&gt;[需求]&lt;/span&gt;编辑器事件: 编辑前事件、验证编辑器结果是否通过、结束编辑后事件&lt;/p&gt;&lt;p&gt;&lt;span style="color: #008000; margin-right: 2px; font-weight: bold;"&gt;[需求]&lt;/span&gt;增加右击接口&lt;/p&gt;&lt;p&gt;&lt;span style="color: #008000; margin-right: 2px; font-weight: bold;"&gt;[需求]&lt;/span&gt;多表头&lt;/p&gt;&lt;p&gt;&lt;span style="color: #008000; margin-right: 2px; font-weight: bold;"&gt;[优化]&lt;/span&gt;grid新增行的时候可通过column的defaultValue进行设置默认值&lt;/p&gt;&lt;p&gt;&lt;span style="color: #008000; margin-right: 2px; font-weight: bold;"&gt;[修复]&lt;/span&gt;grid的编辑功能和checkbox多选功能存在冲突&lt;/p&gt;&lt;p&gt;&lt;span style="color: #008000; margin-right: 2px; font-weight: bold;"&gt;[修复]&lt;/span&gt;修复加载时不显示loading的问题，并加入自定义加载时的支持&lt;/p&gt;&lt;p&gt;&lt;span style="color: #008000; margin-right: 2px; font-weight: bold;"&gt;[修复]&lt;/span&gt;修改grid addRow()如果没有数据的时候row没有高度&lt;/p&gt;&lt;p&gt;&lt;span style="color: #008000; margin-right: 2px; font-weight: bold;"&gt;[修复]&lt;/span&gt;修改可编辑grid中DateEditor编辑错误的问题&lt;/p&gt;&lt;p&gt;&lt;strong&gt;下拉框&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color: #008000; margin-right: 2px; font-weight: bold;"&gt;[需求]&lt;/span&gt;支持动态改变值&lt;/p&gt;&lt;p&gt;&lt;span style="color: #008000; margin-right: 2px; font-weight: bold;"&gt;[需求]&lt;/span&gt;增加打开下拉框前事件，利用这个参数可以用来调用其他函数，比如打开一个新窗口来选择值&lt;/p&gt;&lt;p&gt;&lt;strong&gt;表单&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color: #008000; margin-right: 2px; font-weight: bold;"&gt;[需求]&lt;/span&gt;spinner支持最大最小值&lt;/p&gt;&lt;p&gt;&lt;strong&gt;树&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color: #008000; margin-right: 2px; font-weight: bold;"&gt;[需求]&lt;/span&gt;增加 选择/反选择节点 接口 &amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;弹窗&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color: #008000; margin-right: 2px; font-weight: bold;"&gt;[需求]&lt;/span&gt;支持回车关闭&lt;/p&gt;&lt;p&gt;&lt;span style="color: #008000; margin-right: 2px; font-weight: bold;"&gt;[修复]&lt;/span&gt;dialog.frame浏览器兼容支持&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong style="font-size: 14pt;"&gt;&amp;nbsp;界面展示：&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;多表头1:&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;img src="http://images.cnblogs.com/cnblogs_com/leoxie2011/QQ%E6%88%AA%E5%9B%BE20111120141527.jpg" alt="" width="834" height="331" border="0" /&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;多表头2：&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;img src="http://images.cnblogs.com/cnblogs_com/leoxie2011/QQ%E6%88%AA%E5%9B%BE20111120141542.jpg" alt="" width="833" height="331" border="0" /&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;分组支持：&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;img src="http://images.cnblogs.com/cnblogs_com/leoxie2011/QQ%E6%88%AA%E5%9B%BE20111120141620.jpg" alt="" width="621" height="332" border="0" /&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;树支持：&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;img src="http://images.cnblogs.com/cnblogs_com/leoxie2011/QQ%E6%88%AA%E5%9B%BE20111120141648.jpg" alt="" width="1044" height="255" border="0" /&gt;&lt;/p&gt;&lt;p&gt;在新窗口在选取数据：&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;img src="http://images.cnblogs.com/cnblogs_com/leoxie2011/QQ%E6%88%AA%E5%9B%BE20111120141936.jpg" alt="" width="786" height="380" border="0" /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/div&gt;&lt;img src="http://www.cnblogs.com/leoxie2011/aggbug/2256091.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/leoxie2011/archive/2011/11/20/2256091.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry></feed>
