Dorado 5 : 11.2.合同查询部分开发步骤 (T22)

添加Dataset

步骤1:添加一Common ViewModel,文件名为ContractQuery。
步骤2:为ContractQuery添加一ViewModel实现,代码如下:

import com.bstek.dorado.data.Dataset;
import com.bstek.dorado.data.ParameterSet;
import com.bstek.dorado.data.db.DBStatement;
import com.bstek.dorado.view.DefaultViewModel;
/**
 * ContractQueryViewModel
 */
public class ContractQueryViewModel extends DefaultViewModel {
    public void deleteContract(ParameterSet parameters,
            ParameterSet outParameters) throws Exception {
        DBStatement stDelItems = new DBStatement();
        try {
            stDelItems.setSql(DBStatement.DELETE, "contract_items");
            Dataset datasetContract = getDataset("datasetContract");
            if (datasetContract.getCurrent() != null) {
                stDelItems.parameters().setString("contract_no",
                        datasetContract.getString("contract_no"));
                stDelItems.execute();
                datasetContract.deleteRecord();
            }
        } finally {
            stDelItems.close();
        }
        super.doUpdateData(parameters, outParameters);
    }
}

步骤2:添加一FormDataset,id设置为datasetCondition。为其添加如下字段:

name

label

datatype

contract_no

合同号

 

owner

 

 

owner_name

业务员

 

customer

客户

 

sign_date1

合同时间(从)

date

sign_date2

合同时间(到)

date

步骤3:添加一AutoSqlDataset,选择contract表格,选择前6个字段,该Dataset属性设置如下:

属性

id

datasetContract

keyFields

contract_no

originTable

contract

retrieveAfterUpdate

true

为其添加一Join条件,属性设置如下:

属性

joinMode

select_expression

keyFields

employee_id

name

EMPLOYEE

originTable

employee

sourceKeyFields

owner

sourceTable

CONTRACT

为其添加5个BaseMatchRule,属性如下:

dataType

escapeEnabled

operator

originField

table

value

string

true

like

contract_no

contract

:contract_no

string

true

=

owner

contract

:owner

string

true

=

customer

contract

:customer

string

true

>=

sign_date

contract

:sign_date1

string

true

<=

sign_date

contract

:sign_date2

为datasetContract的afterScroll事件添加如下代码:

var hasCurrent = (datasetContract.getCurrent() != null); 
buttonEdit.disabled = !hasCurrent; 
buttonDelete.disabled = !hasCurrent;

步骤4:添加一AutoSqlDataset,选择customer表格,选择所有字段,该Dataset的属性设置如下:

属性

id

datasetCustomer

keyFields

custom_id

originTable

customer

 

添加查询部分

步骤1:添加一AutoForm,属性设置如下:

属性

dataset

datasetCondition

defaultControlWidth

200

id

formCondition

选中AutoForm,点击生成字段按钮。
设置AutoForm下面的FormGroup下的contract_no字段的colSpan为2。
设置AutoForm下面的FormGroup下的owner字段的visiblity属性为hidden。
步骤2:添加一CustomDropdown View Model,文件名为DropDownEmployeeTree。
在DropDownEmployeeTree中添加一AutoSqlDataset,选择Branch表,选择Branch表的所有字段,Dataset的设置如下:

属性

id

datasetBranch

originTable

BRANCH

在DropDownEmployeeTree中添加一AutoSqlDataset,选择Dept表,选择Dept表的所有字段,Dataset的设置如下:

属性

id

datasetDept

originTable

DEPT

在DropDownEmployeeTree中为datasetDept添加一BaseMatchRule,BaseMatchRule的属性设置如下:

属性

level

1

operator

=

originField

BRANCH_ID

table

DEPT

value

:BRANCH_ID

在DropDownEmployeeTree中为datasetDept设置MasterLink, MasterLink的属性设置如下:

属性

masterDataset

datasetBranch

masterKeyFields

BRANCH_ID

detailKeyFields

BRANCH_ID

detailKeyParameters

BRANCH_ID

在DropDownEmployeeTree中添加一AutoSqlDataset,选择Employee表,选择Employee表的如下字段:

datasetEmployee表的设置如下:

属性

id

datasetEmployee

originTable

EMPLOYEE

在DropDownEmployeeTree中为datasetEmployee添加一BaseMatchRule,BaseMatchRule的属性设置如下:

属性

level

1

operator

=

originField

DEPT_ID

table

EMPLOYEE

value

:DEPT_ID

在DropDownEmployeeTree中为datasetEmployee设置MasterLink, MasterLink的属性设置如下:

属性

masterDataset

datasetDept

detailKeyParameters

DEPT_ID

masterKeyFields

DEPT_ID

detailKeyFields

DEPT_ID

在DropDownEmployeeTree中添加一DataTree,id设置为treeHR。
在DropDownEmployeeTree中为DataTree添加一Simple TreeLevel,属性设置如下:

属性

name

levelBranch

dataset

datasetBranch

labelField

BRANCH_NAME

expanded

true

在DropDownEmployeeTree中为levelBranch添加一Simple TreeLevel,属性设置如下:

属性

name

levelDept

dataset

datasetDept

labelField

DEPT_NAME

在DropDownEmployeeTree中为levelDept添加一Simple TreeLevel,属性设置如下:

属性

name

levelEmployee

dataset

datasetEmployee

labelField

EMPLOYEE_NAME

hasChild

false

在DropDownEmployeeTree中为DataTree的onClick事件添加如下代码:

var node = treeHR.getCurrentNode(); 
if (node != null && node.getLevel() == 3) { 
	 DropDown.closeFrame(node.getRecord()); 
}

为DropDownEmployeeTree生成Jsp页面并进行编辑,最后代码如下:

<%@ page contentType="text/html; charset=UTF-8" %> 
<%@ taglib uri="http://www.bstek.com/dorado" prefix="d" %> 
 <html> 
 <head> 
 <title></title> 
 </head> 
 <body> 
 <d:DropDownView config="DropDownEmployeeTree"> 
 <d:DataTree id="treeHR" /> 
 </d:DropDownView> 
 </body> 
 </html>

步骤3:添加一CustomDropDown,属性设置如下:

属性

fixed

true

height

250

id

datasetEmployee

path

drop-down-employee-tree.jsp

readFields

employee_id,employee_name

width

200

writeFields

owner,owner_name

步骤4:添加一DatasetDropDown,属性设置如下:

属性

dataset

datasetCustomer

fixed

true

id

dropdownCustomer

labelField

custom_name

mapValue

true

valueField

custom_id

步骤5:添加一QueryCommand,属性设置如下:

属性

conditionDataset

datasetCondition

id

commandQuery

queryDataset

datasetContract

为commandQuery的beforeExecute事件添加如下代码:

var contract_no = datasetCondition.getValue("contract_no"); 
if (contract_no) { 
	command.parameters().setValue("contract_no", "%" + contract_no + "%"); 
} 
else { 
	command.parameters().setValue("contract_no", ""); 
}

步骤6:添加一Button,属性设置如下:

属性

command

commandQuery

id

buttonQuery

value

查询

width

80

添加编辑删除添加部分

步骤1:添加一RequestCommand,属性设置如下:

属性

id

commandAdd

path

contract-maintain.jsp

步骤2:添加一RequestCommand,属性设置如下:

属性

dataset

datasetContract

id

commandEdit

parameterFields

contract_no

path

contract-maintain.jsp

步骤3:添加一UpdateCommand,属性设置如下:

属性

id

commandDelete

method

deleteContract

为commandDelete的beforeExecute事件添加如下代码:

if (!confirm("您确定要删除该合同[" + datasetContract.getValue("contract_no") + "]吗?")) { 
	 return "abort"; 
}

步骤4:添加一Button,属性设置如下:

属性

command

commandAdd

id

buttonAdd

value

新增合同

width

80

步骤5:添加一Button,属性设置如下:

属性

command

commandEdit

disabled

true

id

buttonEdit

value

编辑合同

width

80

步骤6:添加一Button,属性设置如下:

属性

command

commandDelete

disabled

true

id

buttonDelete

value

删除合同

width

80

 

添加显示合同列表部分

步骤1:添加一DataTable,属性设置如下:

属性

dataset

datasetContract

height

100%

id

tableContract

showHScrollBar

false

width

100%

步骤2:为tableContract的onRecordDblClick事件添加如下代码:

buttonEdit.click();

步骤3:为tableContract的字段的onRefresh事件添加如下代码:

cell.innerHTML = "<a href=\"javascript:buttonEdit.click()\">" + value + "</a>"; 
return false;

创建Jsp页面

对ContractQuery生成Jsp页面并进行编辑,最后结果如下:

<%@ page contentType="text/html; charset=UTF-8" %> 
<%@ taglib uri="http://www.bstek.com/dorado" prefix="d" %> 
 <html> 
 <head> 
 <title></title> 
 </head> 
 <body style="overflow: hidden"> 
 <d:View config="ContractQuery"> 
 <d:Layout type="vflow" height="100%"> 
 <d:Pane> 
 <d:AutoForm id="formCondition" /> 
 </d:Pane> 
 <d:Pane align="right"> 
 <d:Layout type="Hflow"> 
 <d:Pane> 
 <d:Button id="buttonQuery" /> 
 </d:Pane> 
 <d:Pane> 
 <d:Button id="buttonAdd" /> 
 </d:Pane> 
 <d:Pane> 
 <d:Button id="buttonEdit" /> 
 </d:Pane> 
 <d:Pane> 
 <d:Button id="buttonDelete" /> 
 </d:Pane> 
 </d:Layout> 
 </d:Pane> 
 <d:Pane height="100%"> 
 <d:DataTable id="tableContract" /> 
 </d:Pane> 
 </d:Layout> 
 </d:View> 
 </body> 
 </html>