添加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>