dorado5的查询

本文介绍了Dorado5中实现查询功能的几种方法,包括FormDataset结合QueryCommand的自动匹配查询,Dataset的flushData方法实现局部刷新查询,监听用户输入触发查询以及SqlDataset动态拼装SQL语句进行条件查询。这些方法提供了灵活的查询机制,无需额外的查询按钮,提升了用户体验。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


1.FormDataset+QueryCommand
QueryCommand控件自动将FormDataset中的Field与AutoSqlDataset中的MatchRules匹配实现查询功能。


2.Dataset自身的flushData方法实现局部刷新的AJAX机制的查询功能。
button的onclick事件中的代码:
var conditionRecord = datasetCondition.getCurrent();
if(conditionRecord){
var empid = conditionRecord.getValue("empid");
var empName = conditionRecord.getValue("empName");
var empMinSalsry = conditionRecord.getValue("empMinSalsry");
var empMaxSalary = conditionRecord.getValue("empMaxSalary");

datasetEmployee.parameters().setValue("empId",empid);
datasetEmployee.parameters().setValue("empMinSalary",empMinSalsry);
datasetEmployee.parameters().setValue("empMaxSalary",empMaxSalary);

if("" != empName && null != empName){
datasetEmployee.parameters().setValue("empName","%"+empName+"%");
}


datasetEmployee.flushData();
datasetCondition.flushData();
}
与第一个查询相比,本处查询并没有出现服务端处理状态框。

3.通过Dataset数据集对象自身事件的触发调用查询的执行,当用户输入完成后即触发事件,并不需要用户单击Button控件触发。
switch (field.getName()) {
  case "empid":
    if(dataset.getCurrent()){//注意这里的dataset是传递过来的参数
var empid = record.getValue("empid");//record是传递过来的参数
datasetEmployee.parameters().setValue("empId",empid);
datasetEmployee.flushData();

if(datasetEmployee.getCurrent()){
var empName = datasetEmployee.getValue("employee_name");
if("" != empName && null != empName){
dataset.disableEvents();
dataset.setValue("empName",empName);
dataset.enableEvents();

dataset.getField("empid").setReadOnly(true);
dataset.getField("empName").setReadOnly(false);
dataset.refreshControls();
}
}
}
    break;
}


4.Dataset的监听器中动态拼装SQL语句的方式实现条件查询功能。利用到的是SqlDataset数据集实现,先设置sql:
select * from employee where 1=1 ,在按钮中实现
var currentRecord = datasetCondition.getCurrent();
if(currentRecord){
var empId = currentRecord.getValue("empId");
var empName = currentRecord.getValue("empName");
var empMinSalary = currentRecord.getValue("empMinSalary");
var empMaxSalary = currentRecord.getValue("empMaxSalary");

alert(empId);
datasetEmployee.parameters().setValue("empId",empId);
datasetEmployee.parameters().setValue("empName",empName);
datasetEmployee.parameters().setValue("empMinSalary",empMinSalary);
datasetEmployee.parameters().setValue("empMaxSalary",empMaxSalary);

datasetEmployee.flushData();
}
这里通过setValue来设置类似于Map,接着通过datasetEmployee 右键生成Open Listener 
beforeLoadData(Dataset)重载该方法。
public class EmployeeDatasetListener extends AbstractDatasetListener {


@Override
public boolean beforeLoadData(Dataset dataset) throws Exception {

String empId = dataset.parameters().getString("empId");
String empName = dataset.parameters().getString("empName");
String empMinSalary = dataset.parameters().getString("empMinSalary");
String empMaxSalary = dataset.parameters().getString("empMaxSalary");

SqlDataset empDataset = (SqlDataset) dataset;
String sql = empDataset.getSql();
System.out.println("+++++++++++++++"+sql);
if(StringHelper.isNotEmpty(empId)){
sql += " and employee_id = '" + empId + "'";
}
if(StringHelper.isNotEmpty(empName)){
sql += " and employee_name like '%" + empName +"%'";
}
if(StringHelper.isNotEmpty(empMinSalary)){
sql += " and salary >= " + empMinSalary;
}
if(StringHelper.isNotEmpty(empMaxSalary)){
sql += " and salary <= " + empMaxSalary;
}
empDataset.setSql(sql);
System.out.println("+++++++++++++++"+sql);
return super.beforeLoadData(dataset);
}


}





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值