`

实现通用的CRUD之三——仅有RIA还不够

 
阅读更多

B/S三层架构在安全性、易部署方面有天然的优势,但是HTML简陋的form组件却难与丰富的桌面组件相提并论。于是RIA应运而生。

RIA的出现使得在B/S应用上实现传统C/S应用的复杂界面成为可能。ExtJS和flex都是奔着这一主题产生的。ExtJS采用开放的DOM模型,更为我所欣赏。

ExtJS实现了一套类似传统桌面组件库的,采用OOP和事件机制,具备可扩展性的组件集合。曾经编写桌面应用的朋友,看它的examples和API文档,可能会倍感亲切。但是Extjs也存在应用禁区:它的destory并不能解决IE下固有的内存泄漏问题。IE的内存泄漏是DOM元素与javascript存在未能释放的引用导致的,要杜绝这种引用存在现实上的困难。那么,有没有更简单易行的方法呢?

 

  1. 权衡再三,我们采用界面复用来绕开这个难题。基本思路是:
  2. 当需要建立一个界面(常见的grid或者form)时,首先查看索引是否已经在内存中缓存了同样的界面。
  3. 如果存在,则不再创建新的界面,而只是在旧的界面上进行数据刷新,并让它可见。
  4. 如果不存在,则建立新界面,并对它建立索引。
  5. 当关闭界面时,代替destory以hide,即仅仅是隐藏它而已。

采用上述规则之后,浏览器消耗的内存会随着新建立界面而增长,但会有一个上界——即所有可复用界面的最大集合。而不再象反复new->destory那样,少量但不断地消耗内存。

 

另一方面,RIA的编程对于曾经经历桌面界面开发人员可能熟悉,但这样的老程序员恐怕稀有了,有木有一种办法可以使用RIA,但却不需要为RIA的API细节所束缚呢?

有的,同样是上面那个界面复用的思路。但需要满足前提:界面的操作具备一致性。

想想看,对数据库表的CRUD不就是通用的操作么?而这种操作大致可以描述如下:

 

  1. 对一个或者多个表进行(联合)检索,允许自定义检索、排序条件。
  2. 检索结果分页显示在grid中。
  3. 在editorGrid中直接修改、增加、删除数据并保存。
  4. 在grid中选中一条,查看详细。
  5. 该条数据以tabPanel显示。
  6. tabPanel下包含了子表数据。
  7. 对子表数据重复以上展示和操作。

实现效果截图如下:

 

排序支持

对排序的支持

 

检索支持:

 

支持检索

 

 

editorGrid直接修改数据

 

editorGrid直接修改数据

http://dl.iteye.com/upload/attachment/0064/9461/65ea3fb2-2b60-36da-aad6-1c8474b67af4.png

  • 大小: 95.3 KB
  • 大小: 88 KB
  • 大小: 96.2 KB
  • 大小: 54.4 KB
  • 大小: 72.8 KB
分享到:
评论

相关推荐

    WCF RIA Services+Mef+MVVM实现CRUD示例源码

    WCF RIA Services+Mef+MVVM实现CRUD示例源码 实现了雇员的增删改查,雇员表(Employee)和部门表(Department)、雇员类型表 (EmployeeType)有外键关联,并和字典表(DataDict)有字典关系 示例采用技术说明: 1、...

    django-crudbuilder, 在 Django 中,通用CRUD实现.zip

    django-crudbuilder, 在 Django 中,通用CRUD实现 crudbuilder在 Django 中使用 Django tables2列出对象的通用CRUD实现。文档https://django-crudbuilder.readthedocs.org/en/la

    jsp 实现的CRUD

    **JSP实现的CRUD操作详解** 在Web开发中,CRUD(Create, Read, Update, Delete)是最基本的数据操作,广泛应用于各种业务系统。本项目以JSP(JavaServer Pages)技术为核心,实现了对MySQL数据库的CRUD操作,旨在...

    05实现mybatis简单crud功能demo

    05实现mybatis简单crud功能demo05实现mybatis简单crud功能demo05实现mybatis简单crud功能demo05实现mybatis简单crud功能demo05实现mybatis简单crud功能demo05实现mybatis简单crud功能demo05实现mybatis简单crud功能...

    JSF实现的CRUD例子 myeclipse

    在这个"JSF实现的CRUD例子 myeclipse"中,我们将探讨如何使用JSF和MyEclipse开发一个简单的CRUD(Create, Read, Update, Delete)应用,而无需连接到数据库。 首先,"first-java-server-faces-tutorial-en.pdf"可能...

    实现通用的CRUD之二—用jsonRPC打通B/S的任督二脉

    本篇文章将聚焦于如何实现一个通用的CRUD功能,并利用jsonRPC技术来构建B/S架构(Browser/Server,即浏览器/服务器模式)中的通信桥梁。jsonRPC是一种轻量级的远程过程调用协议,常用于前后端交互,它允许服务器提供...

    VB实现的CRUD例子

    标题“VB实现的CRUD例子”表明这是一个使用Visual Basic (VB)编程语言创建的应用程序,主要功能是实现数据库操作的基本功能:创建(Create),读取(Read),更新(Update)和删除(Delete),简称CRUD。在数据库应用开发中...

    WCF RIA 实现CRUD示例源码(包括MEF)

    WCF RIA Services+Mef+MVVM实现CRUD示例源码 实现了雇员的增删改查,雇员表(Employee)和部门表(Department)、雇员类型表 (EmployeeType)有外键关联,并和字典表(DataDict)有字典关系 示例采用技术说明: 1、...

    jsp简单明了实现CRUD

    在IT行业中,CRUD(Create, Read, Update, Delete)是数据库操作的四个基本功能,分别代表创建、读取、更新和删除数据。本案例主要介绍如何使用JSP(JavaServer Pages)技术来实现这些功能,这对于Web开发来说是基础...

    ssm框架实现CRUD

    SSM框架,全称Spring MVC + Spring + MyBatis,是Java Web开发中常见的三大组件集成框架,用于构建高效、灵活的Web应用程序。这个资源显然提供了一个完整的示例,演示了如何利用这些技术来实现对数据库中的实体进行...

    JDBC通用DAO CRUD(不是Hibernate)

    自己写的一个JDBC通用DAO 有几点需要注意: 1.数据库命明目前只支持没下血杠命名(_) 2.表ID字段名取名有2种方式 (1)ID (2)TableName + ID 例如:user表 则取名为 id 或者 userid 因为没有用xml来映射表结构确定哪一个...

    MybatisPlus中使用通用CRUD实现插入操作示例代码

    本示例主要介绍如何在MybatisPlus中利用其通用CRUD功能实现数据的插入操作。 首先,我们需要了解MybatisPlus的基本架构。MybatisPlus扩展了Mybatis的功能,提供了实体类与数据库表之间的映射,自动填充字段(如创建...

    使用EasyUI+Springmvc实现的CRUD

    【标题】"使用EasyUI+Springmvc实现的CRUD"主要涵盖了两个核心技术——EasyUI和SpringMVC,它们在Web开发中的应用以及如何协同工作来完成数据的创建、读取、更新和删除操作。 EasyUI是一款基于jQuery的前端UI框架,...

    通用CRUD源代码下载

    在这个"通用CRUD源代码下载"中,我们重点讨论如何利用 MyBatis Plus 扩展来实现高效、简洁的 CRUD 操作。 MyBatis Plus 是 MyBatis 的一个扩展,它简化了 CRUD 操作,提供了大量默认的 CRUD 方法,避免了大量的模板...

    第一个mybatis程序——CRUD

    在本教程中,我们将一起探索如何创建并运行你的第一个MyBatis程序,实现CRUD(Create, Read, Update, Delete)操作。这些基本操作是数据库管理的核心,对于任何应用程序来说都是必不可少的。 首先,我们需要理解...

    VUE实现静态数据的CRUD功能

    在本案例中,“VUE实现静态数据的CRUD功能”指的是利用Vue.js创建一个能够进行创建(Create)、读取(Retrieve)、更新(Update)和删除(Delete)操作的应用。这种功能通常用于管理数据库中的数据,而在这个特定场景下,...

    ToEat.ly:CRUD w AJAX——Express 后端,Underscore 模板

    【ToEat.ly: CRUD w AJAX —— Express 后端,Underscore 模板】 `ToEat.ly` 是一个基于 `JavaScript` 开发的应用程序,它利用 `CRUD`(创建、读取、更新和删除)操作来管理数据,并通过 `AJAX` 技术实现前端与后端...

    SSM-PageHelper实现Crud操作

    在本项目中,我们将深入探讨如何在SSM框架下实现Ajax的CRUD(Create、Read、Update、Delete)操作,并利用PageHelper进行分页查询。 首先,Spring框架作为基础,负责管理应用的bean和依赖注入。在配置文件中,我们...

    SpringMVC 使用 RESTful 架构实现 CRUD 操作

    在本教程中,我们将探讨如何使用 SpringMVC 实现基于 RESTful 风格的 CRUD(Create、Read、Update、Delete)操作。 **CRUD 操作概述** CRUD 操作是任何数据驱动应用的基础,它们分别代表创建新记录、读取现有记录、...

Global site tag (gtag.js) - Google Analytics