o2oa api: datagridpc | o2oa开发平台-游戏厅捕鱼达人

class

extends

datagridpc 数据网格组件(pc端)。从v6.2开始建议用数据表格(datatable)代替。

usable range

process cms

example

//可以在脚本中获取该组件
//方法1:
var datagrid = this.form.get("name"); //获取组件
//方法2
var datagrid = this.target; //在组件事件脚本中获取

source

members

jsonjsonobject

组件的配置信息,比如id,类型,是否只读等等。可以在组件的queryload事件里修改该配置来对组件做一些改变。

type

  • jsonobject

example

//可以在脚本中获取该组件
var json = this.form.get("fieldid").json; //获取组件对象
var id = json.id; //获取组件的id
var type = json.type; //获取组件的类型,如textfield 为文本输入组件,select为下拉组件
//在组件queryload事件里设置组件只读。
//当前组件的queryload事件运行时还没有在form里注册,通过this.form.get("fieldid")不能获取到当前组件,需要用this.target获取。
var json = this.target.json;
json.isreadonly = true; //设置组件为只读。

source

methods

setdata(data)

为数据网格赋值。

description

当参数为promise的时候,请查看文档:
当表单上没有对应组件的时候,可以使用this.data[fieldid] = data赋值。

parameters

  • data datagriddata | promise | array

    必选,数组或promise.

examples

this.form.get("fieldid").setdata([]); //赋空值
//如果无法确定表单上是否有组件,需要判断
 if( this.form.get('fieldid') ){ //判断表单是否有无对应组件
     this.form.get('fieldid').setdata( data );
 }else{
     this.data['fieldid'] = data;
 }
//使用promise
 var field = this.form.get("fieldid");
 var promise = new promise(function(resolve, reject){ //发起异步请求
   var oreq = new xmlhttprequest();
   oreq.addeventlistener("load", function(){ //绑定load事件
     resolve(oreq.responsetext);
   });
   oreq.open("get", "/data.json"); //假设数据存放在data.json
   oreq.send();
 });
 promise.then( function(){
   var data = field.getdata(); //此时由于异步请求已经执行完毕,getdata方法获得data.json的值
})
 field.setdata( promise );

source

isempty() → {boolean}

判断数据网格是否为空.

returns

  • boolean

    是否为空

example

if( this.form.get('fieldid').isempty() ){
    this.form.notice('至少需要添加一条数据', 'warn');
}

source

getdata() → {datagriddata}

获取数据网格数据.

description

在脚本中使用 this.data[fieldid] 也可以获取组件值。 区别如下:
1、当使用promise的时候
使用异步函数生成器(promise)为组件赋值的时候,用getdata方法立即获取数据,可能返回修改前的值,当promise执行完成以后,会返回修改后的值。
this.data[fieldid] 立即获取数据,可能获取到异步函数生成器,当promise执行完成以后,会返回修改后的值。

2、当表单上没有对应组件的时候,可以使用this.data[fieldid]获取值,但是this.form.get('fieldid')无法获取到组件。

returns

examples

var data = this.form.get('fieldid').getdata();
//如果无法确定表单上是否有组件,需要判断
 var data;
 if( this.form.get('fieldid') ){ //判断表单是否有无对应组件
     data = this.form.get('fieldid').getdata();
 }else{
     data = this.data['fieldid']; //直接从数据中获取字段值
 }
 
//使用promise
 var field = this.form.get("fieldid");
 var promise = new promise(function(resolve, reject){ //发起异步请求
   var oreq = new xmlhttprequest();
   oreq.addeventlistener("load", function(){ //绑定load事件
     resolve(oreq.responsetext);
   });
   oreq.open("get", "/data.json"); //假设数据存放在data.json
   oreq.send();
 });
 promise.then( function(){
   var data = field.getdata(); //此时由于异步请求已经执行完毕,getdata方法获得data.json的值
})
 field.setdata( promise );

source

getsource(typeopt) → {source|subsource|subsourceitem}

当前组件在数据源组件中时,可以通过此方法获取所在的上级数据源/子数据源/子数项组件.

parameters

  • type string

    需要获取的类型,"source"为表示数据源,"subsource"表示子数据源,"subsourceitem"表示子数据项组件。 如果该参数省略,则获取离当前组件最近的上述组件。

returns

  • source subsource subsourceitem

example

var source = this.target.getsource(); //获取当前组件的所在子上级数据源/子数据源/子数项组件.
var data = source.data; //获取数据
var source = this.form.get("fieldid").getsource("source"); //获取数据源组件
var data = source.data; //获取数据

source

getparentmodule(typeopt, validatefunctionopt) → {mwf.xapplication.process.xform.$module}

获取当前组件所在的祖先组件.

parameters

  • type string

    需要获取的组件类型。 如果该参数省略,则获取离当前组件最近的祖先组件。type有效值如下:

    form- 表单
    common- 通用组件
    datatable- 数据表格
    datatableline- 数据表格行
    datatemplate- 数据模板
    datatemplateline- 数据模板行
    div- 容器组件
    elcommon- element通用组件
    elcontainer- element容器组件
    subform- 子表单
    source- 数据源组件
    subsource- 子数据源
    subsourceitem- 子数据项组件
    tab- 分页组件
    tabpage- 分页组件的某个分页
    table- 表格
    tabletd- 单元格
    widget- 部件
  • validatefunction function

    进一步校验,参数为获取到匹配到类型的组件,返回false继续往上取对应类型的组件,返回true返回该组件。

returns

example

var module = this.target.getparentmodule(); //获取最近的祖先。
var datatemplateline = this.target.getparentmodule("datatemplateline"); //获取当前组件所在的数据模板行.
var module = this.target.getparentmodule(null, function(module){
    return module.json.id === "div_1";
}); //获取当前组件id为div_1的父组件。

source

events

completelineedit

当前条目编辑完成时触发。通过this.event可以获取对应的tr。

see

addline

添加条目时触发。通过this.event可以获取对应的tr。

see

deleteline

删除条目前触发。通过this.event可以获取对应的tr。

see

afterdeleteline

删除条目后触发。

see

editline

编辑条目时触发。

see

export

导出excel的时候触发,this.event指向导出的数据,您可以通过修改this.event来修改数据。

see

example

this.event数据格式如下:

{
 	data : [
  		["姓名","性别","学历","专业","出生日期","毕业日期"], //标题
 		[ "张三","男","大学本科","计算机","2001-1-2","2019-9-2" ], //第一行数据
 		[ "李四","男","大学专科","数学","1998-1-2","2018-9-2" ]  //第二行数据
	], //导出的数据
    colwidtharray : [100, 50, 100, 200, 150, 150], //每列宽度
    title : "xxxx" //导出的excel文件标题
}

validimport

在导入excel,进行数据校验后触发,this.event指向导入的数据。

see

example

this.event数据格式如下:

{
 	data : [
 	   {
 	 	"姓名" : "张三",
 	 	"性别" : "男",
 	 	"学历" : "大学本科",
 	    "专业" : "计算机",
 	    "出生日期" : "aa01-1-2",
 	 	"毕业日期" : "2019-9-2",
 	 	"errortextlist" : [
 	 	    "第5列:aa01-1-2不是正确的日期格式。"
 	 	] //校验出的错误信息,如果该行数据正确,则无该字段
 	 }
 	 ...
    ], //导入的数据
    "validted" : true  //是否校验通过,可以在本事件中修改该参数,确定是否强制导入
}

import

在导入excel,数据校验成功将要设置回数据网格的时候触发,this.event指向整理过的导入数据,格式见datagriddata

see

网站地图