`

实现通用的CRUD之四——视图定义

 
阅读更多

 

接上篇(javaEYE的图片只能插三个?),继续发截图。

选中一条,查看详细:

 

在详细中,显示子表数据:

 

截图完毕。

 

由于上文中我们已经总结出一个与数据库CRUD相对应的界面范式,那么进一步地,可以通过以下javascript代码,简单地给出必要的信息,

告诉ExtJS我们想获得怎样的界面。

相关代码如下:

 

BView.viewMap={
 "dao.hb.OStation":{
	req:{
		"pss" : [["id", "name","code","topology","tel", "longitude","latitude","status","tmCreate","tmModify","remark"]],
		"cns" : ["dao.hb.OStation"],
		"hql" : "from OStation"
	},
	func_title: function(o){ return o.items.map['name']+'详细信息'; },
	cfg_detail:{
	 btns:["保存"],
	 tabs:[{
		title : "基本信息",
		fset : [{
			legend : "",
			props :["id", "name","code","topology","tel", "longitude","latitude","status"]
		}]
		},{
			title : "电话",
			fset : [{
				legend : "",
				props :["tel"]
			}]
		},{
		title : "备注",
		fset : [{
			legend : "",
			props :["remark"]
		}]
	}]},
	cfg_grid:{
		btns:['增加','打开','保存','检索','刷新','排序'],
		hide: ["status","tmCreate","tmModify","remark"]
	},
	cfg_prop:{
	"id":{
	  display:'序号',
	  cfg:{
	  	readOnly:true
	  }
	},
	"name":{
	 display:"名称"
	},
	"code":{
	 display:"编号"
	},
	"topology":{
	 display:"拓扑附件"
	},"tel":{
	 display:"电话",
	 editor:"TextArea"
	},
	"longitude":{
	 display:"X坐标"
	},"latitude":{
	 display:"Y坐标"
	},
	"status":BView.cfg_status,
	"tmModify":{
	  editor:"DateField",
	  display:'更新时间',
	  dcfg:{
		readOnly:true
	 }
	},	
	"tmCreate":{
	  editor:"DateField",
	  display:'建立时间',
	  dcfg:{
		readOnly:true
	 }
	},"remark":{
	  display:'备注',
	  editor:"TextArea"
	}	

	
  },child_views : [{
  	title:"相关设备",
  	vn:"dao.hb.ODevice",
	func_filter: function(robj, ui) {
		var cn = robj.cns[0];
		var hql = " from ODevice where sid=" + (robj.items.map['id'] || 0)+" order by id";		
		ui.setHQL(hql);
	},
	func_setdefault:function(robj,objs){
		objs[0].items.map["sid"]=robj.items.map['id'];
	}
  },{
  	title:"相关附件",
  	vn:"dao.hb.OAttachment",
	func_filter: function(robj, ui) {
		var cn = robj.cns[0];
		var hql = " from OAttachment where entityName='"
		+ robj.cns[0]+"' and entityId=" + (robj.items.map['id'] || 0);		
		ui.setHQL(hql);
	},
	func_setdefault:function(robj,objs){
		objs[0].items.map["entityName"]="dao.hb.OStation";
		objs[0].items.map["entityId"]=robj.items.map['id'];
	}
  }],
  rel_views:[{
  	title:"关联附件",
  	vt:{
  		vn:"dao.hb.ODevice",
  		title:"已关联附件"
  	},
  	vs:{
  		vn:"dao.hb.UUser",
  		title:"可选附件"
  	}
  }]
 },
 "dao.hb.ODevice":{
	req:{
		"pss" : [["id","mid","sid","sno","name","cabinet","domain","ipaddr","status","iconid","comunityGet","comunitySet","showtip","tmCreate","tmModify","remark"]],
		"cns" : ["dao.hb.ODevice"],
		"hql" : "from ODevice order by id"
	},
	cfg_detail:{
	btns:["保存"],
	tabs:[{
		title : "基本信息",
		fset : [{
			legend : "",
			props :["id","mid","sid","sno","name", "cabinet","domain","ipaddr","status","iconid","comunityGet","comunitySet","showtip"]
		}]
		},{
		title : "备注",
		fset : [{
			legend : "",
			props :["tmCreate","tmModify","remark"]
		}]
	}]},
	cfg_grid:{
		hide: ["islinked","tmCreate","tmModify","remark"]
	},
	cfg_prop:{
	"id":{
	  display:'序号',
	  cfg:{
	  	readOnly:true
	  }
	},
	"mid":{
	 display:"设备类型",
	 editor : 'ComboBox',
	 cfg :BView.func_cfg_combo_hql("select id,model from ODeviceType order by id","id")
	},
	"sid":{
	 display:"位置序号"
	},
	"sno":{
	 display:"设备编号"
	},
	"name":{
	 display:"设备名称" 
	},
	"cabinet":{
	 display:"机柜编号"
	},
	"domain":{
	 display:"所属域/子系统"
	},
	"ipaddr":{
	 display:"ip地址"
	},
	"adminMode":{
	 display:"设备管理参数"
	},
	"adminUrl":{
	 display:"设备管理url"
	},
	"status":{
	 display:"状态",
		editor : 'ComboBox',
		renderer : function(val) {				
		  var dtxt = {						
			'0':'禁用',	
			'1':'启用',	
			'2':'备用'};
			return dtxt[val];
		},
		cfg :BView.func_cfg_combo([['启用', 1], ['禁用', 0], ['备用', 2]])
	},
	"iconid":{
	 display:"复用拓扑图设备图标ID"
	},
	"comunityGet":{
	 display:"snmp的Get方法"
	},
	"comunitySet":{
	 display:"snmp的Set方法"
	},
	"showtip":{
	 display:"是否显示tip"
	},
	"tmModify":{
	  editor:"DateField",
	  display:'更新时间',
	  dcfg:{
		readOnly:true
	 }
	},	
	"tmCreate":{
	  editor:"DateField",
	  display:'建立时间',
	  dcfg:{
		readOnly:true
	 }
	},"remark":{
	  display:'备注',
	  editor:"TextArea"
	}	
  }
 }
};

 

以上javascript代码遵循一个简单的视图定义规则,对规则简要描述如下:

 

 

父类成员

子类成员

类型

说明

Req

请求

Hql

String

列表方式下获得记录的查询语句

Rownum

Int

分页每页行数

Cns

String[]

多表查询的O/R mapping类名

Pss

String[][]

多表查询的O/R mapping类的属性子集

Start

Int

游标起始位置

SN

string

后台服务实例

Propdef

属性定义

display

string

属性的中文名

editor

string

属性的类型(文本框、组合框、树、附件等)

renderer

function

列表方式下对属性数据的显示方法

cfg

map

属性类型的配置参数

Grid

列表方式

Hide

String[]

列表方式下隐藏的成员列

Page

Boolean

是否分页

Hidebtns_objview

Int[]

查看权限下隐藏的按钮

Hidebtns_objmode

Int[]

编辑权限下隐藏的按钮

btns

Button[]

列表方式下的按钮数组

Edit

详细方式

包含多个标签页,每个标签页包括多个属性集合

Legend

String

属性集合名称

props

String[]

属性数组

Relviews

关联视图

titlefunc

Function

关联视图标题函数

V1

String

选中集合的视图

V2

string

待选集和的视图

 

 

 

 

 

 

分享到:
评论

相关推荐

    Backbone标准例子——通讯录

    总的来说,通过学习这个"Backbone标准例子——通讯录",你可以了解到如何使用Backbone.js构建一个具有CRUD(创建、读取、更新、删除)功能的Web应用,并理解MVC模式在实际项目中的应用。同时,还可以学习到前端开发...

    The Django Book.pdf

    - **使用通用视图**:通用视图是一系列预定义的视图函数,可以减少重复代码,提高开发效率。 - **对象的通用视图**:针对单一对象的操作,如详情页、编辑页等。 - **扩展通用视图**:可以通过继承通用视图类来扩展或...

    Building APIs with Django and Django Rest Framework

    - 视图应实现CRUD操作:创建(Create)、读取(Retrieve)、更新(Update)和删除(Delete)。 ##### 3.4 使用API - 通过发送HTTP请求测试API的功能。 - 可以使用Postman等工具进行测试。 ##### 3.5 为什么我们需要DRF? -...

    MVC asp.net 博客源代码

    9. **视图模版和部分视图**:为了提高代码复用,项目可能使用了视图模版(如 `_Layout.cshtml`)定义通用布局,部分视图(如 `_PartialPost.cshtml`)处理特定的UI组件。 10. **单元测试与集成测试**:良好的源代码...

    Castle3.0卷3

    在Castle Windsor中,你可以定义服务接口和服务实现,容器负责管理和注入依赖关系。这个卷将详细讲解如何配置和使用Windsor,包括服务注册、组件生命周期管理、拦截器和AOP(面向切面编程)等高级特性。 接下来,...

    图书管理系统(struts+hibernate+spring).zip

    AOP则用于实现如事务管理、日志记录等功能,可以将这些通用功能以切面的形式抽象出来,避免代码重复。 4. SSH整合:这三者集成后,Struts2处理用户的请求,将请求转发给Spring管理的业务服务,业务服务再调用...

    spring+hibernate教程

    在《深入浅出Hibernate》中,你将学习到如何配置Hibernate,创建实体类,定义映射文件,以及如何执行CRUD(创建、读取、更新、删除)操作。 接下来,我们转向Spring框架。Spring以其模块化和灵活性著称,它提供了...

    SpringMVC精品资源--基于SpringBoot + Shiro + MyBatisPlus的权限管理框架.zip

    MyBatisPlus是MyBatis的扩展,提供了更丰富的 CRUD 操作以及通用的 Mapper 和 Service 实现。它简化了SQL编写,支持自动生成代码,包括实体类、Mapper接口和Mapper XML文件,大大减轻了开发人员的工作量。在权限管理...

    网上订餐系统(struts+spring+hibernate)130221.zip

    3. **Hibernate持久化框架**:Hibernate是Java领域中流行的对象关系映射(ORM)工具,它简化了数据库操作,通过映射XML文件或注解,将Java对象与数据库表对应起来,实现对象的CRUD(Create、Read、Update、Delete)...

    ssh模拟登陆练习

    SSH模拟登陆练习是一个针对初学者的宝贵资源,它涵盖了Java开发中的重要框架——Spring、Hibernate和Struts2.0的整合应用。这三个框架是企业级Java应用开发的常用技术栈,能够帮助开发者构建高效、可维护的Web应用...

    BookManage-master.rar

    3. `view.py`:视图文件,定义了UI组件和布局。 4. `controller.py`:控制器文件,作为模型和视图的桥梁,处理用户交互。 5. `resources`:资源文件夹,可能包含图标、样式表等资源。 四、PyQt5界面设计 在PyQt5中...

    struts2+spring+hibernate新闻发布系统

    在本系统中,Hibernate负责数据的存取,通过编写实体类和映射文件,可以实现对象的CRUD(创建、读取、更新、删除)操作。Hibernate的HQL(Hibernate查询语言)使得开发者可以使用面向对象的方式来执行数据库查询,...

    简单自定义框架-帮助你理解SSH框架的原理

    通过接口或抽象类定义操作,具体实现由用户根据需求进行扩展,这样的设计有助于提高代码的可复用性和可维护性。 2. **登录验证**:这一部分涉及到用户身份验证和授权。在SSH框架中,Spring Security或Struts的拦截...

    WebWork+Spring+Hibernate整合开发网络书城 第4讲

    在本课程"WebWork+Spring+Hibernate整合开发网络书城 第4讲"中,我们将深入探讨如何将这三大主流的Java技术框架——WebWork、Spring和Hibernate——集成在一起,构建一个功能完善的网络书城系统。这个系统的核心目标...

    SSM基础框架(整合Spring、Spring MVC 、MyBatis-plus)(全注解版)

    SSM基础框架是Java开发中常用的三大组件——Spring、Spring MVC和MyBatis的集成,它们共同构建了一个高效、灵活的后端应用架构。在这个全注解版本中,我们将探讨如何利用注解来简化配置,实现快速开发。 首先,...

    基于PHP的成都咖啡网站管理系统源码.zip

    4. **模型**:与数据库进行交互,执行CRUD操作。 5. **视图**:展示给用户的界面,可能包含HTML、CSS和JavaScript。 6. **路由**:定义URL与控制器方法的映射关系。 7. **配置文件**:设置系统参数,如数据库连接...

    rose的简单deno

    4. **数据处理**:Rose可以方便地与数据库进行交互,例如MongoDB、MySQL等,提供CRUD操作和模型定义。 5. **错误处理**:Rose提供了优雅的错误处理机制,帮助开发者捕获并处理程序中的异常,保持应用的稳定性。 **...

    java高级面试框架整理

    - **拦截器机制:** Struts还支持拦截器,可以用来实现一些通用功能,如权限控制、日志记录等。 - **国际化支持:** Struts内置了对多语言的支持,方便开发全球化应用。 - **插件体系:** Struts可以通过插件的形式...

    RUBY完全自学手册

    - **MVC架构**:将应用程序分为三个核心部分——模型(Model)、视图(View)和控制器(Controller),每个部分负责不同的功能,实现了良好的代码分离。 - **DRY原则**:Don't Repeat Yourself(不要重复自己),...

Global site tag (gtag.js) - Google Analytics