Dorado 5 : 6.dorado查询开发:使用Dataset自身事件 (T1)

本节中主要通过Dataset数据集对象自身事件的触发调用查询的执行,当用户输入完成后即触发事件,并不需要用户单击Button控件触发。其中会涉及控件状态的动态设置。

准备工作

在sample项目的src下新建ViewModel,命名eventQuery。(参考<dorado查询开发:使用flushData方法>章节)

图13-25
设置datasetConditions中EMPLOYEE_NAME的readOnly属性值为true。

图13-26
新建eventQuery相关JSP页面event_query.jsp,通过【Browse】打开页面查看效果。

图13-27
从页面中可以看到,EMPLOYEE_NAME目前处于不可编辑状态(文本框灰化显示)。

编写Dataset触发事件

用户在AutoForm的某文本框中输入查询条件时,在输入焦点离开后即触发AutoForm控件绑定的FormDataset的afterChange事件,在该事件中编写JavaScript查询代码。

switch (field.getName()) { 
	 case "EMPLOYEE_ID": 
	 if(dataset.getCurrent()){ 
		var employee_id=record.getValue("EMPLOYEE_ID"); 
	 	if(employee_id!=null&&employee_id!=""){ 
	 		datasetEmployee.parameters().setValue("EMPLOYEE_ID",employee_id); 
	 		datasetEmployee.flushData(); 
 
			 if(datasetEmployee.getCurrent()){ 
	 			dataset.disableEvents(); 
	 			dataset.setValue("EMPLOYEE_NAME",datasetEmployee.getValue("EMPLOYEE_NAME")); 
	 			dataset.enableEvents(); 
 
	 			dataset.getField("EMPLOYEE_ID").setReadOnly(true); 
	 			dataset.getField("EMPLOYEE_NAME").setReadOnly(false); 
	 			dataset.refreshControls(); 
	 		} 
 		} 
 	} 
 break; 
 }



图13-28

保存修改,刷新页面查看效果。在EMPLOYEE_ID的文本框中输入"ANLIN",使输入焦点离开文本框。

图13-29
当输入焦点离开EMPLOYEE_ID文本框时,触发datasetConditions的afterChange事件,执行查询完成后,将值填入EMPLOYEE_NAME文本框中,并同时将EMPLOYEE_ID文本框设置为只读,而EMPLOYEE_NAME文本框被设置为可编辑,实现了我们想要的最终结果。

开发步骤

利用Dataset的afterChange事件触发查询功能的操作,实际上是替代了用户的操作过程,使点击按钮的被动查询变为事件触发的主动查询。

开发步骤

 


第一步:查询前准备工作。


第二步:在FormDataset的afterChange事件中编写JavaScript脚本代码。


详细步骤图