dorado:AutoForm中的灵活布局!

(2011-02-21 12:00:04)

转载
标签:

it

 

场景描述:

本例使用AuotForm组件实现不同的排版布局,以实现应用当中遇到不同的需求。

实例实现:

实现1:

功能:

使用 checkBox控制文本框是否可以进行编辑。

界面:

实现步骤:

  1. 在viewmodel中添加多个textEditor、fieldLabel和checkBox,并绑定dataset1(Dataset)相应的Field。在AutoForm添加ElementRenderer,这样在JSP中使用d:FormElementRenderer标签就可以添加任何元素到AutoForm中

JSP中代码如下:

<d:AutoForm id="form1">
<d:FormElementRenderer group="group1"element="element1">
<table id="form1_group1_table1" width="100%"class="InnerTable" style="table-layout:fixed;" cellpadding="4"cellspacing="0" border="0">
<colgroup>
<col width="47"/>
<col width="50"/>
<col width="50%"/>
<col width="50"/>
<col width="50"/>
<col width="50%"/>
</colgroup>
<tr>
<td class="InnerTableLabelCell" align="right"><d:CheckBox id="editor3"/></td>
<td class="InnerTableLabelCell" align="right"><d:FieldLabel id="fieldlabel4"/></td>
<td class="InnerTableLabelCell"><d:TextEditor id="editor4"/></td>
<td class="InnerTableLabelCell" align="right"><d:CheckBox id="editor5"/></td>
<td class="InnerTableLabelCell" align="right"><d:FieldLabel id="fieldlabel6"/></td>
<td class="InnerTableLabelCell"><d:TextEditor id="editor6"/></td>
</tr>
<tr>
<td class="InnerTableLabelCell" align="right"><d:CheckBox id="editor7"/></td>
<td class="InnerTableLabelCell" align="right"><d:FieldLabel id="fieldlabel8"/></td>
<td class="InnerTableLabelCell"><d:TextEditor id="editor8"/></td>
<td class="InnerTableLabelCell" align="right"><d:CheckBox id="editor9"/></td>
<td class="InnerTableLabelCell" align="right"><d:FieldLabel id="fieldlabel10"/></td>
<td class="InnerTableLabelCell"><d:TextEditor id="editor10"/></td>
</tr>
</table>
</d:FormElementRenderer>
</d:AutoForm>
  1. 在dataset1(Dataset)的afterChange事件中控制相应字段的只读状态。代码如下:

    switch (field.getName()){
    case "field3":
    dataset.getField("field4").setReadOnly(!record.getValue("field3"));
    break;
    case "field5":
    dataset.getField("field6").setReadOnly(!record.getValue("field5"));
    break;
    case "field7":
    dataset.getField("field8").setReadOnly(!record.getValue("field7"));
    break;
    case "field9":
    dataset.getField("field10").setReadOnly(!record.getValue("field9"));
    break;

    }
    dataset.refreshControls();

    实现2:

    功能:

    使用AutoForm本身的属性进行布局,其中包括使用FormGroup的columnCount属性、FormGroup中Element的colSpan属性和rowSpan属性。

    界面:

    实现代码:

    <Control id="form2" type="AutoForm"dataset="dataset2">
    <FormGroup name="group1" columnCount="3"title="<b>行列布局</b>">
    <Element field="field1" type="TextEditor"name="field1">
    <FieldLabel />
    <TextEditor />
    </Element>
    <Element field="field2" type="TextEditor"name="field2">
    <FieldLabel />
    <TextEditor />
    </Element>
    <Element field="field3" type="TextEditor"name="field3">
    <FieldLabel />
    <TextEditor />
    </Element>
    <Element field="field4" type="TextEditor"name="field4" colSpan="2">
    <FieldLabel />
    <TextEditor />
    </Element>
    <Element field="field5" type="TextEditor"name="field5" rowSpan="3">
    <FieldLabel />
    <TextEditor height="80px" editorType="textarea"/>
    </Element>
    <Element field="field6" type="TextEditor"name="field6" colSpan="2">
    <FieldLabel />
    <TextEditor />
    </Element>
    <Element field="field7" type="TextEditor"name="field7">
    <FieldLabel />
    <TextEditor />
    </Element>
    <Element field="field8" type="TextEditor"name="field8">
    <FieldLabel />
    <TextEditor />
    </Element>
    </FormGroup>
    </Control>

    实现3.

     功能:

    同一个AutoForm的多个Group的布局,使用AutoForm本身firstGroupAsHeader、lastGroupAsFooter与layout属性实现。

     界面:

    实现代码:

    <Control id="form3" type="AutoForm"dataset="dataset2" firstGroupAsHeader="true"lastGroupAsFooter="true" layout="horizontal">
    ……
    ……
    ……
    </Control>

    实现4.

    功能:

    在AutoForm中的Element后添加元素。

    界面:

    实现代码:

    AutoForm中field1(TextEditor)的onActive事件代码如下:

    var pn=editor.parentNode;
    var btnQuery=document.createElement_x_x("button");
    btnQuery.innerText="查询";
    btnQuery.style.width="70px";
    btnQuery.style.height="18px";
    btnQuery.className="Button";
    btnQuery.onclick=function(){
    alert("查询噢~");
    };
    pn.a(btnQuery);

    field2(TextEditor)的onActive事件代码如下:

    var pn=editor.parentNode;
    var label=document.createElement_x_x("label");
    label.innerHTML="<b>%</b>";
    label.style.width="70px";
    label.style.height="18px";
    pn.a(label);

    延伸思路:

    其实AutoForm在布局方面还是比较灵活的,只要能正确使用其中的组件都可以满足我们的应用需求,更多的方法等待您的发现。

dorado:AutoForm中的灵活布局!相关推荐

  1. Android中动态初始化布局参数以及ConstraintLayout使用中遇到的坑

    Android中动态初始化布局以及ConstraintLayout遇到的一个坑 ConstraintLayout是Android中的一个很强大的布局,它通过控件之间的相对定位,来完成一个layout中 ...

  2. android 继承relativelayout,Android开发中RelativeLayout相对布局

    Android开发中RelativeLayout相对布局 RelativeLayout布局是Android界面布局中应用最广也最强大的一种布局,其不只十分灵活,能够解决开发中各类界面布局需求,同时也很 ...

  3. java swt gridlayout_关于SWT中的GridLayout布局方式

    GridLayout 布局的功能非常强大,也是笔者常用的一种布局方式.GridLayout是网格式布局,它把父组件分成一个表格,默认情况下每个子组件占据一个单元格的空间,每个子组件按添加到父组件的顺序 ...

  4. 三分钟学会css3中的flexbox布局

    2019独角兽企业重金招聘Python工程师标准>>> 这篇文章里我们将学习CSS里flexbox布局的几个最重要的概念,通过学习flexbox布局,你会发现以往遇到的所有的关于布局 ...

  5. 【鸿蒙 HarmonyOS】Ability 中使用 XML 布局文件 绘制布局及 UI 组件

    文章目录 一.创建 XML 布局文件 二.XML 布局文件中添加子组件 三.创建 Ability 四.配置 Ability 五.Ability 加载布局文件 六.完整代码及效果展示 四.GitHub ...

  6. android界面布局题,【填空题】Android 系统中, 用于定义布局显示在界面上的风格。...

    [填空题]Android 系统中, 用于定义布局显示在界面上的风格. 更多相关问题 [37]A.anotherB.each otherC.the otherD.one another Tabor ma ...

  7. Android中的约束布局

    文章目录 1 Android中的约束布局 1.1 约束布局的重要属性 1.2 约束布局示例 1 Android中的约束布局 1.1 约束布局的重要属性 重要属性: app:layout_constra ...

  8. Android中的网格布局

    文章目录 1 Android中的网格布局 1 Android中的网格布局 重要属性: android:rowCount(行数量) android:columnCount (列数量) android:l ...

  9. Android中的表格布局

    文章目录 1 Android中的表格布局 1 Android中的表格布局 重要属性: android:stretchColumns android:shrinkColumns android:coll ...

最新文章

  1. Docker学习笔记_安装ActiveMQ
  2. c:数据结构-线性表
  3. OpenCV学习笔记(二十六)——小试SVM算法ml OpenCV学习笔记(二十七)——基于级联分类器的目标检测objdect OpenCV学习笔记(二十八)——光流法对运动目标跟踪Video Ope
  4. Java虚拟机JVM简单理解
  5. (React 框架)React技术
  6. 《Internet 路由结构(第2版•修订版)》一7.5 常见问题
  7. C语言家谱管理程序,课内资源 - 基于C语言实现的家谱管理系统
  8. 桌面云的四大协议解析
  9. mbot编程机器人怎么连接蓝牙_台式机蓝牙怎么连接
  10. 【易实战】Spring Cloud Greenwich Ribbon:负载均衡的服务调用
  11. 容器精华问答 | Docker是否比虚拟技术要好?
  12. Ubuntu 16.04部署ROS bridge服务器流程
  13. Pytorch中的einsum
  14. Vue3实现打字机效果
  15. 实习周记(附):学习笔记
  16. Linux 磁盘管理-分区管理-磁盘修复-断电导致磁盘损坏【fsck】修复异常磁盘
  17. 2022R2移动式压力容器充装操作考试题及在线模拟考试
  18. 网教9. 一夜发白《千字文》
  19. 怎样使用MFC 调用windows系统程序 windows media player
  20. python英文诗歌统计_Python-Data-mining-Tutorial

热门文章

  1. ThinkPHP的发展历程及特性
  2. [HITML]哈工大2020秋机器学习期末试题
  3. 微信小程序登录报错接口异常处理方法汇总
  4. 给3D设计师读的Verge3D入门指南
  5. python signal模块_Python使用signal模块实现定时执行
  6. 2022年全球及中国比特币交易软件行业头部企业市场占有率及排名调研报告
  7. Python案例——用Python写个桌面挂件
  8. WIN7管理员账号删除后无法获取管理员权限解决
  9. vsftp账号_vsftp怎么配置系统用户登录啊
  10. 千与千寻 学生网页设计与制作