Dorado 9 : DataPilot(DCUG)

简介

继承dorado.widget.Control对象,基本属性和使用请参考:Control(DCUG)

界面效果如下:

DataPilot一般情况下都是与DataGrid控件配合使用,用于在Grid中数据的增删改和当前记录的定位功能,另外DataPilot还提供了翻页数据显示的功能。

重要属性说明

dataSet

DataPilot只有在结合DataSet开发的时候才有意义,因此对一个DataPilot控件而言dataSet属性是必须的配置。

dataPath

由于DataSet的结构可能是一个树,如:

而DataPilot设计的当前光标移动功能或数据的增删改以及分页功能都是针对其中的一个EntityList而言的。因此我们需要通过定义dataPath确定DataPilot要操作DataSet中的哪一个EntityList.

不过在很多场景下,由于DataSet被我们设计为一张简单的二维表,而不是上图的树形结构,则我们可以省略dataPath的设置,如果您不设置DataPilot的dataPath属性,默认就会自动取DataSet最顶层的EntityList。

关于DataSet和DataPath的设定和使用技巧请参考:DataControl(DCUG)#显示一个集合类对象

itemCodes

itemCodes用于控制DataPilot中可以出现的按钮,列表如下:

符号图标说明
pages是以下符号的一个集合:|<,<,goto,>,>|
|分割符号
+添加按钮
-删除按钮
x取消按钮
info显示数据的分页基本信息
pageSize是否允许用户自定义分页大小
goto是否显示goto编辑框
|<翻到第一页
<上一条
>下一条
>|翻到最后一页

由于DataSet的数据绑定特性,当当前绑定的EntityList的状态发生变化时,DataSet会自动通知DataPilot自动刷新按钮的状态,如利用DataPilot翻到第一页时:

前面两个翻页按钮就会灰化,同样如果翻到最后一页时最后两个按钮就会灰化:

还有如当前Entity对象未修改过,其取消按钮为灰化:

如果我们修改其中productName的值,则取消按钮就会自动变为可操作:

还有当绑定的EntityList为空时,删除按钮自动灰化:

重要事件说明

onSubControlAction

由于DataPilot是一个组合控件,当我们单击操作DataPilot中不同图标的时候,我们可以在onSubControlAction事件中通过参数的arg.code(参考:itemCodes)加以区分,例如:

switch (arg.code){
	case "+":{	
		//此时单击的是新增按钮
		break;
	}
	case "-":{	
		//此时单击的是删除按钮
		break;
	}
	case "<":{	
		//此时单击的是上一条记录按钮
		break;
	}
	case ">|":{	
		//此时单击的是最后一页按钮
		break;
	}
} 

onSubControlRefresh

与onSubControlAction类似,当DataPilot刷新时,我们可以在这个事件中通过arg.code(参考:itemCodes)区分此时刷新的是哪个按钮,例如:

switch (arg.code){
	case "-":{	
		//此时刷新的是删除按钮
		var entity = dataSet.getData("#");
		if (entity && entity.get("xxx")==xxx){
			arg.control.set("disabled", true);
		}else{
			arg.control.set("disabled", false);
		}
		arg.processDefault = false;
		break;
	}
} 

本例中,我们自定义了删除按钮的可操作逻辑,如果满足一定条件,就将这个设置为禁用状态(通过arg.control获取对应的子控件对象)。