003-Webbuilder应用HTML表单

HTML和控件的混合编程

通常普通的表单界面使用UI控件来构建,对于复杂的界面也可以使用HTML来直接构建,WebBuilder中提供特定的语法可以把相关的控件比如日期控件插入到指定的DOM位置。HTML和控件的混合编程一方面可以使界面的构建更加灵活,另一方面可以充分利用组件库件的强大功能,使两者有机结合起来。

显示html

所有的UI控件都具有html属性,设置该属性即可在该控件中显示HTML.比如设置panel的html属性可以在panel中显示任意的HTML

把控件插入到HTML中

通过以下4种方法可以把控件插入到HTML中:

在dom的obj属性中添加控件的JSON表达式

<div obj="{itemId:'name', allowBlank:'false', xtype:'textfield'}"></div>

但是我这样做只能够调用控件,但是控件里面的属性都拿不到。

在dom的obj属性中绑定控件

<div obj="_controlItemId"><div>

_controlItemId为添加到模块根节点的控件,其itemId为controlItemId,_controlItemId指向控件的配置对象。注意使用该方法绑定的控件,控件的createInstance属性必须为false

模块根节点的控件位置

在这里插入图片描述
【sex,】【edu】就是根节点控件

下拉框引用键值配置器配置

调用键值配置器中存在的键值对时,必须设置keyName,keyName就是键名,比如我们这里用到的sex和edu分别对应性别和学历
在这里插入图片描述
只要有键名就可以调用

默认键值使用顺序

我在测试的时候发现,在填充pickList后

[['k1','v1'],['k2','v2'],['k3','v3']]

即使keyName依旧存在对简直配置器的引用,也会优先调用pickList静态填充的内容。

在dom的内容中绑定控件

在dom的内容中可以添加以“##”为前缀的控件绑定表达式,例如:

<p>##_controlItemId</p>

_controlItemId为添加到模块根节点的控件,其itemId为controlItemId,_controlItemId指向控件的配置对象。注意该方法绑定的控件,控件的createInstance属性必须为false

在dom的内容中添加控件的JSON表达式

<p>##{itemId:'birthdate', xtype:'datefield', width:160}</p>

使插入到HTML的控件立即生效

通常容器控件和其他一些控件如panel,comp提供属性createObject,用于是否自动生成html中插入的控件实例。如果该属性为true,当控件生成时,html中插入的控件实例也将同步生成。
此外也可以通过APi方法control.updateObject()

app.viewport1.update("<table## 标题><tr><td>这是动态生成的页面</td><td obj="{itemId:'name', xtype:'textField', allowBlank:false, width:160}"></tr></table>")
app.viewpoint1.updateObject();//立即生成html中的实例

注释:最后一点好像没用。

前端代码

放在html属性处:
在这里插入图片描述

<div style="padding:20px;">
  <h1 style="text-align:center;">员工录用审批表</h1>
  <table style="border:3px solid #555;line-height:30px;" class="wb_tb" border="1" cellpadding="4">
    <tr>
      <td rowspan="6" align="center" width="25px">录用员工资料</td>
      <td width="80px">姓名</td><td obj="{itemId:'name',allowBlank:false}"></td> 
      <td width="80px">性别</td><td obj="_sex"></td>
      
      <td width="80px">出生日期</td><td obj="{itemId:'birthdate',xtype:'datefield'}"></td>
    </tr>
    <tr>
      <td>学历</td><td obj="_edu"></td>
      <td>毕业院校</td><td obj="{itemId:'school'}"></td>
      <td>专业</td><td obj="{itemId:'major'}"></td>
    </tr>
    <tr>
      <td>录用部门</td><td colspan="3" obj="{itemId:'dept'}"></td>
      <td>录用职位</td><td obj="{itemId:'duty'}"></td>
    </tr>
    <tr>
      <td>试用期期限</td><td colspan="3" obj="{itemId:'trial'}"></td>
      <td>入公司日期</td><td obj="{itemId:'entryDate',xtype:'datefield'}"></td>
    </tr>
    <tr>
      <td>试用期工资</td><td colspan="3" obj="{itemId:'salary1',xtype:'numberfield'}"></td>
      <td>转正工资</td><td obj="{itemId:'salary2',xtype:'numberfield'}"></td>
    </tr>
    <tr>
      <td>现居住地</td><td colspan="5" obj="{itemId:'address'}"></td>
    </tr>
    <tr>
      <td rowspan="3">审批意见</td>
      <td>部门经理</td><td colspan="5" obj="{itemId:'comment1',xtype:'textarea'}"></td>
    </tr>
    <tr><td>总经办</td><td colspan="5" obj="{itemId:'comment2',xtype:'textarea'}"></td>
    <tr><td>首席执行官</td><td colspan="5" obj="{itemId:'comment3',xtype:'textarea'}"></td>
  </table>
</div>

html代码我还得自己写

最后效果

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值