DORADO5数据的持久化操作实现方法

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);
}


}











DORADO5数据的持久化操作实现方法


import com.bstek.dorado.data.Dataset;
import com.bstek.dorado.data.ParameterSet;
import com.bstek.dorado.data.Record;
import com.bstek.dorado.data.RecordIterator;
import com.bstek.dorado.view.DefaultViewModel;


public class UpdateCommandViewModel extends DefaultViewModel {


public void saveEmployee(ParameterSet inParams, ParameterSet outParams)
throws Exception {
Dataset empDataset = (Dataset) this.getDataset("datasetEmployee");
RecordIterator empIterator = empDataset.recordIterator();
empIterator.setVisibility(Dataset.FILTER_CHANGED);


while (empIterator.hasNext()) {
Record empRecord = empIterator.nextRecord();
int empState = empRecord.getState();
switch (empState) {
case Record.STATE_NEW:
System.out.println("新增员工:"
+ empRecord.getString("employee_name"));
break;
case Record.STATE_DELETED:
System.out.println("删除员工:"
+ empRecord.getString("employee_name"));
break;
case Record.STATE_MODIFIED:
System.out.println("修改员工:"
+ empRecord.getString("employee_name"));
break;
case Record.STATE_NONE:
System.out.println("没有修改:"
+ empRecord.getString("employee_name"));
break;
}
}
super.doUpdateData(inParams, outParams);
}
}






import com.bstek.dorado.data.Dataset;
import com.bstek.dorado.data.ParameterSet;
import com.bstek.dorado.data.Record;
import com.bstek.dorado.data.RecordIterator;
import com.bstek.dorado.view.DefaultViewModel;


public class UpdateCommandViewModel extends DefaultViewModel {


public void saveEmployee(ParameterSet inParams, ParameterSet outParams)
throws Exception {
Dataset empDataset = (Dataset) this.getDataset("datasetEmployee");
RecordIterator empIterator = empDataset.recordIterator();
empIterator.setVisibility(Dataset.FILTER_CHANGED);


while (empIterator.hasNext()) {
Record empRecord = empIterator.nextRecord();
int empState = empRecord.getState();
switch (empState) {
case Record.STATE_NEW:
System.out.println("新增员工:"
+ empRecord.getString("employee_name"));
break;
case Record.STATE_DELETED:
System.out.println("删除员工:"
+ empRecord.getString("employee_name"));
break;
case Record.STATE_MODIFIED:
System.out.println("修改员工:"
+ empRecord.getString("employee_name"));
break;
case Record.STATE_NONE:
System.out.println("没有修改:"
+ empRecord.getString("employee_name"));
break;
}
}
super.doUpdateData(inParams, outParams);
}
}

猜你喜欢

转载自blog.csdn.net/penghao_1/article/details/50125311
今日推荐