Dorado 9 : CustomDropDown(DCUG)

简介

Dorado中默认提供很多下拉框,有ListDropDow, DataSetDropDown, DateDropDown等等,他们都有自己默认的布局和内部控件元素的约定。

CustomDropDown是让你可以抛弃前面所有的DropDown,可以在DropDown内部定义元素,就如同你定义一个Dorado的View一样:灵活,自由。

使用方式一,在内部添加其他控件:

或添加布局容器,并在布局容器中添加子控件:

使用方式二,在内部添加IFrame控件,利用IFrame引入其他页面:

通过上面这种方式可以完全根据自己业务开发的需要定义出形态各异的DropDown,如下图:

对于ListDropDown或DataSetDropDown由于很容易可以获知下拉框行数据对应的实体对象:

因此我们可以利用DropDown的property或assignmentMap属性的配置自动完成实体对象间值的复制拷贝。

但是对于CustomDropDown对象,由于内部元素完全自定义,因此系统无法自动或者究竟要操作CustomDropDown中的那个Entity对象。为此我们需要通过DropDown的close方法,利用该事件告诉DropDown对象赋值的源Entity对象是什么。

范例1:

//@Bind #button1.onClick
!function(self, arg) {
	var dropDown = dorado.widget.DropDown.findDropDown(self);
	dropDown.close( {
		id: 1,
		label: "Jony"
	});
}

范例2:

//@Bind #button1.onClick
!function(self, arg) {
	var dropDown = dorado.widget.DropDown.findDropDown(self);
	dropDown.close(view.id("dsProduceList").getData("#"));//通过close参数通知DropDown,将这个参数作为赋值的源Entity对象
}

通过close参数通知DropDown,将这个参数作为赋值的源Entity对象

详细属性说明

CustomDropDown与ListDropDown有一些类似的特性,如:autoOpen, assignmentMap, buttonVisible,因此其基本属性请参考:ListDropDown(DCUG)

技巧

如何将一个URL作为CustomDropDown内部的内容

可以在CustomDropDown中添加IFrame控件,利用IFrame控件引入其他的页面: