数据展示控件(DataView)提供一种新的展示方式,可以用来显示本地数据或者远程数据,提供了模板的定义与解析,多种分页功能,序号的处理,多种展现方等功能。
本控件利用模板来将展示与逻辑进行分离,控件本身的HTML结构不再是固定的,可以通过定义模板来修改DataView本身的HTML结构,但必须遵守一定的规范。同时还可以通过定义每行的模板,来使得DataView的显示多样化。
<wafctrl:dataView id="id" name="name" />
页面div需要加入行模板代码,即
<body>
<script id="testdataview" type="text/html">
<div class='row' seq='' index='' id=''>
<span class='seq'>
<span class='rowNum'>
</span>
<span class='move'>
<span class='up'></span>
<span class='down'></span>
</span>
</span>
<div class='rowContent' id='_r_'>
<div class='rowCtrls' id='_rcs_'>
<table class="table-default">
<tr>
<td width="30%">
<span>测试:</span>
</td>
</tr>
</table>
</div>
<div class='rowButtons'>
<a href='javascript:void(null)' class='editRow hide-text btn-edit'></a>
</div>
</div>
</div>
</script>
</body>
再创建展示类:
var options = {
title:'dataView' ,id:'dataView',name:"dataViewName",
afterCreateSwitcher:null,
rowTemplate:$("#testdataview").html(),seqProp:'seq',
afterInsertRow:null,afterProcessRowButtonMeta:null,afterProcessRowContentMeta:null,afterRefreshIndex:null,
beforeProcessing:null,beforeRequest:null,data:"系统提供",datatype:"local",height:"",
hidden:false,initStatus:"view",loadComplete:null,loadInit:true,multiselect:false,
pager:true,pagerModel:"block",rowNum:"1",rowTitle:false,rowTitleTemplate:"分录{0}",seq:false,
seqSave:false,serializeGridData:null,style:"",switcher:false,tagClass:"",
cell:false,
cellGap:false,
move:null
};
var rowMeta={
"id":options.id,
"componentType":"com.kingdee.bos.ctrl.web.dataView",
"parent":"result",
"parentEl":"result",
"properties":{},
"childrens":[
{
"buttonPanel":{
"id":"buttonPanel",
"parent":"entry",
"parentEl":"entry",
"properties":{},
"childrens":[
{
"id":"addNew",
"componentType":"com.kingdee.bos.ctrl.web.Button",
"parent":"buttonPanel",
"parentEl":"buttonPanel",
"properties":{"id":"addNew", "caption":"新增", "onclick":"addRow", tagClass:"btn",iconCls:"ui-icon-add"},
"childrens":[]
}
]
},
"rowButtonPanel":{
"id":"rowButtonPanel",
"parent":"entry",
"parentEl":"entry",
"properties":{},
"childrens":[]
},
"rowObject":{
"id":"rowObject",
"parent":"entry",
"parentEl":"entry",
"properties":{},
"childrens":[
{"id":"labelsection_client_id", "componentType":"com.kingdee.bos.ctrl.web.LabelContainer", "parent":"section_gridLayoutPanel_0_0", "parentEl":"section_gridLayoutPanel_0_0", "properties":{"id":"labelsection_client_id", "labelPosition":"right", "caption":"客户"}, "childrens":[
{"id":"section_client_id", "componentType":"com.kingdee.bos.ctrl.web.TextField", "field":"client_id", "parent":"labelsection_client_id", "parentEl":"labelsection_client_id_ctrl", "properties":{"id":"section_client_id", "title":"客户"}, "childrens":[]}
]}
]
}
}
]};
options.rowMeta = rowMeta;
options.data = [
{"invid":1820,"id":"testId","amount":135,"client_id":2052,"invdate":"2011-10-03 00:00:00","note":"This is record 641","total":1429,"tax":685,"status":1,"personid":null,"net":0,"clienttype":"old","birthdayTime":"23:56:59"}
];
var dom = waf.createDOM("dataView", options);
waf.appendDOM(waf("body"), dom);
waf.initComponent("dataView", options, dom);
<input id="id" name="number" type="text" class="enter2tab ui-dataView form" ctrlrole="dataView" aria-disabled="false" style="" tabindex="0">
<!--DOM创建好之后,使用js初始化控件-->
waf.initComponent("dataView", options, dom);
//调用方法
waf("#id").wafDataView('method', parameter...);
//eg:更改事件
waf("#id").wafDataView("options","onchange",fn);
定义信息块的id.(必填)
定义信息块的宽度.
定义信息块的高度.
定义信息块样式类,可以添加一个或多个.
定义信息块的样式.
定义初始化时是否自动装载数据。
如果初始化时不自动装载数据,一般在initalizeAction中手动调用waf(“#list2”).wafInfoBlock(“reload”)来装载数据.
定义请求方式,值为:post或get.
定义数据展示的数据源格式,有两种方式,分别为json和local. json要求url必须存在,会从对应的url获取数据。local为定义在客户端的数组数据,比如分录信息块。如果没有必要从后台请求数据,则使用local方式.
定义是否可以被多选,多选时按住ctrl键来多选.
设置直接通过url传递到服务器的参数. 本属性的调用方式是传递一个形如{name1:value,name2:value2…}的数组.
定义请求的URL地址.
定义当datatype为local时,信息块加载数据的数据源对象,为一个数组.
如果定义为true,则会在信息块的左边增加序号.
如果定义为true,在保存时调用方法getRowData和getData时,会将序号返回到数据模型中.
定义序号对应的Info对象属性,如果序号需要保存,一般这个属性需要设置,默认为seq.
数据展示时是否需要分页,默认不分页,分页提供两种展现方式,一种是普通的分页,另外一种是加载更多,一直往页面下方加载.
默认每页显示多少行.
定义那个属性为每行数据对应的主键,默认为id.
规定信息块为隐藏状态,默认值为false.
以cell的方式进行展现.
cell之间存在间隙,使用列布局来实现目的.
数据展示分页后,显示的页数(建议最好为奇数).
是否显示序号旁边的上移、下移.如果不为null,则显示.
获得或设置显示信息块/可编辑信息块某属性的值,当value参数存在时,设置控件的property属性值,且无返回值,否则返回控件的property属性值.
刷新数据展示,内容重新加载.
获取所有行id.
清除数据.
获取当前选中行的id.
获取当前选中行的索引.
设置数据集合.
获取数据集合.
新增行.
插入行.
根据行id获取序号.
根据序号获取行id.
根据行id删除行.
根据行id获取控件索引.
获取行数据.
获取行数据.
选中某行.
选中某行.
事件在开始请求数据之前触发,如果事件返回false,不会发起远程请求,此事件调用时还未发送ajax请求
刚从服务器端返回的数据还未处理之前触发.
注意:数据会依据datatype的类型来格式化,如果是local,则数据是一个Javascript对象
当从服务器端返回数据并装载完成后触发
在每行记录被插入后触发. 注意:在gridview设置为true时,该事件不会触发
设置发送ajax请求时的序列化数据,返回值是序列化后的数据。如果想加自定义的参数传递到后台,可以使用这个函数
在更改行序号时,调用此回调函数,可以在这里更改行标题等