dorado 时间控件7 怎样在表格单元中添加多个控件

下次自动登录
现在的位置:
& 综合 & 正文
dorado7 基础数据操作的方法
一:在数据的添加时一般注意的方法
在主从表中的添加方法中,在datapilot中的onSubControlAction(self.arg)中的是:
var code = arg.
switch(code){
//得到主表的数据集对象
var dataSetDept = this.get("#主表dataSetde的ID");
//得到主表的数据集
var currentDept = dataSetDept.getData(#);
//根据主表的数据集得到其中的那个reference对应的数据集
var currendtEmployees = currentDept.get("主表中reference的name的值");
//根据得到的数据集向其中插入一条对象,注意的是:这里的deptId不是数据库中的字段,而是实体类的属性
currentEmployees.insert({deptId:currentDept.get("id")});
//防止系统自动的添加一行
arg.processDefault =
在单表中需要这样的代码时的写法:(一般是在用对话框修改时用的这中方式)
var code = arg.
switch(code){
//得到表的数据集
var dataSet = this.get("#dataSet的ID");
//出入一条空的记录,所有的数据是在对话框中添加的
dataSet.insert({});
//控制系统自动添加
arg.processDefault =
//对话框的显示,在对话框的按钮上提交数据
var dialog = this.get("#dialog的ID");
dialog.show();
在取消按钮上的方法一般这样写:
var dataSet = this.get("#ID");
//通过cancle函数可以取消从上次提交至今对数据的修改
dataSet.getData().cancle();
this.get("#对话框的ID").hide();
在确定按钮上这样写,好些:
var updateAction = this.get("#updateAction");
updateAction.execute(function(){
this.get("#dialogID").hide();
${dorado.getDataProvider("baseClassPR#getCodes").getResult("CLIENTTYPE")}
${dorado.getDataProvider("baseClassPR#getCodes").getResult("SEDSETTYPE")}
二:在显示数据时需要有条件查询的数据显示,包括了分页
在点击确定查询的时候把数据过去
//得到autoForm的对象
var autoForm = this.get("#autoFormId");
//得到数据集对象
var dataSet = this.get("#dataSetID");
//得到autoForm中填写的数据
var data = autoForm.get("entity");
//将数据作为参数传过去
dataSet.set("parameter",data);
//刷新数据集
dataSet.flushAsync();
${dorado.getDataProvider("deptDao#getAllDept").getResult()}
在tree上节点的上的onDataRowClick()
var nodeUrl = self.get("currentNode").get("data");
var MainiFrame = this.id("MainiFrame");
MainiFrame.set("path", nodeUrl);
//在dataGrid中onRwnderCell()
arg.dom.innerHTML = "&a href='../Issure.d?id="+arg.data.get('id')+"'&"+ arg.data.get('id') + "&/a&";
/////////////////////////////////////////////////////在点击删除的时候自定义
var updataAction = this.id("updateActionUserBsdn");
switch (code){
case "+" :
arg.processDefault =
currentReference.insert({ corp_id : currentDatapath.get("id") });
arg.processDefault =
dorado.MessageBox.confirm("是否删除数据?",function(){
currentReference.remove();
updataAction.execute();
//////////////////////在dorado中使用request得到代码中的信息
var RerrorMsg = "${request.getAttribute('RerrorMsg')}";
&&&&推荐文章:
【上篇】【下篇】在树的开发中自包含关系的对象结构也非常普遍,在本节中,我们将开发一个具有递归特性的树。本节中将使用到com.bstek.dorado.sample.standardlesson.entity包下的SlDept实体对象类。SlDept.java中通一对多关系配置了它自身存在的父子关系,它所代表的数据关系就是一种递归关系。
步骤1:在项目中创建com.bstek.dorado.sample.standardlesson.junior.middle.base包 步骤2:在com.bstek.dorado.sample.standardlesson.junior.middle.base目录下新建View,将View命名为DeptManage.view.xml。 步骤3:新建并配置DataType在【ViewConfig】节点下的【Model】节点下添加一个DataType,设定DataType的属性如下:nameSlDeptDataType的名称设定此DataType的parent属性为models目录中Common.model.xml中配置的SlDept,使之继承公共DataType:在当前DataType下新增3个PropertyDef,propertyDef1~propertyDef3,分别设置propertyDef的属性如下:readOnlypropertyDef1detpId部门编号truepropertyDef2detpName部门名称 propertyDef3slDeptSet
接下来选中slDeptSet这个propertyDef,设置其dataType属性,点击dataType右侧小按钮:在向导中选择【SELF】,同时由于是一对多关系,【object Type】选中Collection,如下图所示:
步骤4:新建并配置DataSet在【ViewConfig】节点下的【View】节点下添加一个DataSet控件,设定DataSet的属性如下:iddatasetDept控件的IddataType[SlDept]DataSet的数据类型dataProviderdeptService#getTopDept由deptService这个bean中的getTopDept方法为DataSet提供数据加载服务 步骤5:新建并配置SplitPanel接下来新建一个SplitPanel用于分割页面,SplitPanel可以将页面分割成两部分,如左右或上下,并且可以通过SplitPanel在浏览器中直接拖拽改变分割的布局。鼠标选择【ViewConfig】节点下的【View】节点,并通过Dorado7 ToolBox找到SplitPanel,双击添加SplitPanel控件:设置SplitPanel的属性如下:属性值说明position300边组件的当前位置
步骤6:新建并配置DataTree接下来需要在页面左侧添加一个DataTree。鼠标点开SplitPanel节点,选中【SideControl】,通过Dorado7 ToolBox找到DataTree,双击添加DataTree控件:设置DataTree属性如下:属性值说明iddatatreeDept控件的IddataSetdatasetDept通过dataSet属性告知DataTree绑定是哪些数据,以便在DataTree中展示和处理。currentNodeDataPathCURRENT_DEPT自动注册到DataPath中的自定义片段的名称。
在节点BindingConfigs下添加一个BindingConfig子节点,设定BindingConfig属性:labelPropertydeptName以当前节点对应的实体对象的label属性作为树节点的标题信息namedept名称childrenPropertyslDeptSet获取当前节点的slDeptSet属性,作为子节点的数据recursivetrue是否支持递归处理如下图所示: 步骤7:新建并配置Container接下来需要在页面右侧添加一个Container,用于放置子控件。鼠标点开SplitPanel节点,选中【MainControl】,通过Dorado7 ToolBox找到Container,双击添加Container控件:
步骤8:新建并配置FieldSet接下来需要在页面右侧添加一个FieldSet,FieldSet控件主要是对Html中的FieldSet标签的封装。鼠标点开SplitPanel节点,选中【MainControl】节点下的Container控件,通过Dorado7 ToolBox找到FieldSet,双击添加FieldSet控件:设置控件属性如下:属性值说明caption部门信息FieldSet控件显示的标题height200控件的高度 步骤9:新建并配置AutoForm接下来需要在FieldSet中添加一个AutoForm子控件,用于显示部门信息。鼠标点开FieldSet节点,选中【Children】,通过Dorado7 ToolBox找到AutoForm,双击添加AutoForm控件:设置控件属性如下:属性值说明idautoformDept控件的IddataSetdatasetDept通过dataSet属性告知AutoForm绑定是哪些数据,以便在AutoForm中展示和处理。dataPath!CURRENT_DEPT表示当前树节点下的数据实体labelSeparator:AutoForm Element中标签和输入框间的分隔符鼠标选中autoformDept控件,在左侧的【Dorado7 ToolBox】工作区的【AutoForm】分类中双击【AutoFormElement】将表单元素加入autoformDept控件中,新建 2个AutoForm Element,分别设置其属性为:AutoForm Element1deptIdAutoForm Element2deptName到目前为止,View的设置完毕,接下来我们准备后台服务。组装控件的来由在很多项目的开发中,我们会发现,在很多页面我们都使用了几个相同的控件组合,我们就希望能由这几个控件组合而成,形成一个新控件,另外还有可能是一个具有相同特性的控件在重复使用,它们具有相同的特性,如某些属性设定,或css风格(如Label的字体颜色,字体大小)等。但是这种特性又不是整个系统具有的相同特性,只是出现的几率比较大。我们就可以认为这是具有特殊业务特征的控件使用方式,这种特征在很多场景下因为客户临时的一个小调整会引起大量的页面代码的维护工作,如Panel中增加一个退回按钮,或把按钮的字体由绿色改为蓝色。在很多控件型框架的开发过程中,遇到这种情况就会被告知:利用我们的扩展技术做一个新的控件吧!但是大量的实践告诉我们这意味着两件事:太高的技术要求,导致我们很难开发出一个好用的新控件,且无法保证控件的代码品质;如果技术不够,我们就需要向原厂商求助,让原厂商的技术力量介入,协助我们完成这个控件的开发工作,这种情况就要求原厂商有较高的响应效率,但在现实情况下我们知道资源都是有限的,这个套用流行术语&我懂的!&。 另外特殊情况下还需要商务介入,这种事情对于项目开发人员而言实在是太麻烦了;以上两种情况总的结果是:开发一个新控件的成本太高。这导致我们无法很好的做业务控件的积累,这就意味着我们必须进行大量简单而重复的低效劳动:耐着性子干吧!而无法以一种享受的心态来编程,这种日子真的很疼苦,我们总是希望能改变现状,让痛苦的事变得稍稍简单和有趣一些。为此Dorado7中专门提供了两种类型的组件扩展技术:配置型组装控件对象型组装控件这两种控件都是使用现有控件做扩展的一种技术,并利用Dorado中特有的扩展技术进一步减低编程技术要求,例如:我是一个普通的技术编程人员,我对面向对象和模式都没有真正了解,我对java和spring也仅仅是简单应用而已;我是一个项目经理,我的主要工作是规划系统的实施,协调资源,通过管理提供项目的品质,并及时交付系统; 是的,似乎我也是这种人,但我有改进项目品质的愿望,我也想写高品质的代码,那么好,我们可以利用这两种扩展技术。配置型组装控件: 1.首先我们定义一个普通的视图,添加各种想要公用的控件,并为它们定义相关的属性; 2.在dorado的控件配置文件中申明1中的那些控件作为项目的业务控件; 3.在业务View中引用这个新的控件,这个时候业务View中的控件就具有1中定义控件的所有默认属性; 通过以上原理,我们就可以把通用的控件特性提取出来定义到1中对应的控件中,这样我们在业务View中只要引用一下就可以,而不用重复定义那些特性,这样将来用户有需求变更时我们只用调整1中控件的特性即可。 装配型控件的好处是,控件开发人员不需要Java编码就可以完成一个新控件的开发。对象型控件: 与配置型控件的唯一不同之处就在于第一步,对象型控件不定义在View中,而是用Java类来定义一个控件,并在dorado的控件配置文件中申明.与配置型组装控件相比它的优势是可以结合Java代码做更灵活的控制,例如:根据数据库的持久化信息初始化控件等.下面我们根据sample-center中的范例详细看配置型组装控件的开发定义步骤,对应的范例URL:组装控件的声明首先在一个普通视图中(本例为:com.bstek.ponent.AssembledComponents)添加任意的dorado控件,如本例:Button(id为ToggleButton)和Panel(id为ButtonPanel)对象。
我们设置了:ToggleButton的toggleable属性为true,该属性表示按钮是否可以按下ButtonPanel内部我们添加了一个Container布局容器,且在内部添加了一个含单击事件的Button按钮,caption的值后面再解释组装控件的注册假如我们希望在其它页面中,通过组装控件技术重复使用上面的两个控件对象,则我们就需要在dorado-home文件夹的控件配置文件components-context.xml中做如下声明:
parent属性值是组装控件默认的:name属性设置的目的是为了在IDE的控件列表显示控件对象时使用,如下图:src属性表示该组装控件定义的出处,如:ButtonPanel对应的src含义表示引用com.bstek.ponent.AssembledComponents视图中的ButtonPanel控件通过以上方式我们已经在工程的环境中注册了自己的组装控件。
组装控件的引用之后我们就可以自己的业务view中引入之前在视图AssembledComponents中申明的组装控件,如图:查看XML代码有:
组装控件属性的定义修改原有的控件属性,实现差异化.在很多情况下我们可能还需要在引用控件的基础上,对控件的属性进行设定,从而覆盖原先的定义,实现差异化:
其中,我们对控件的属性进行了定义,如ButtonPanel中的collapseable和buttonCaption以及width和height等的设定。另外我们也在ButtonPanel的内部添加了一个&TextArea&元素。虚拟属性组装控件技术允许我们在注册组装控件时申明虚拟属性,从而可以在原有控件的基础上增加更多的属性配置,如范例中控件声明视图:
其中${virtualProperty.buttonCaption}是一个引用虚拟属性的动态表达式,表示引用虚拟属性buttonCaption,之后我们在注册ButtonPanel控件的时候,利用d:virtual-property进行了虚拟属性buttonCaption的声明,如下:
其中buttonCaption是原始ButtonPanel对象不存在的属性。这样我们在业务视图中就可以按如下的方式定义新的控件,从而达到为控件内部按钮的caption赋值的效果:

我要回帖

更多关于 excel表格添加单元格 的文章

 

随机推荐