【发布时间】:2014-08-03 05:26:30
【问题描述】:
我在根据另一个 CB 的选择过滤 CB 时遇到问题。我在做什么错/失踪。请帮忙。 我有第一个 CB 获取银行名称,而第二个 CB 根据前一个 CB(即银行)的选择获取银行分行。现在,当用户选择银行名称时,我想过滤第二个 CB,即银行分行以仅显示该银行的相关分行。
我有这个 BankDS.ds.xml,它被第一个 CB 用来填充银行 CB,我有第二个 BankBranchDS.ds.xml(代码如下所示),它填充银行分行 CB。
我正在使用此版本 SmartClient 版本:v8.3p_2014-04-23/PowerEdition 部署(2014-04-23 构建)并在 Firefox 浏览器版本 23 上进行测试
这是我的 DSRequest 输出
{
dataSource:"BankBranchDS",
operationType:"fetch",
componentId:"isc_PickListMenu_10",
data:{
fieldName:"bankid",
operator:"equals",
value:1
},
startRow:0,
endRow:75,
textMatchStyle:"startsWith",
resultSet:[ResultSet ID:isc_ResultSet_11 (created by: isc_PickListMenu_10)],
callback:{
caller:[ResultSet ID:isc_ResultSet_11 (created by: isc_PickListMenu_10)],
methodName:"fetchRemoteDataReply"
},
willHandleError:true,
showPrompt:false,
prompt:"Finding Records that match your criteria...",
oldValues:{
fieldName:"bankid",
operator:"equals",
value:1
},
requestId:"BankBranchDS$62712",
internalClientContext:{
requestIndex:{
Class:"Number",
formatter:"toString",
localeStringFormatter:"toString",
localeProperties:Obj
}
},
fallbackToEval:false,
bypassCache:true
}
这是我的响应输出
[
{
data:[
{
bankid:1,
id:1,
perName:"",
bank:{
id:1,
createdBy:1,
created:null,
perName:"",
lastUpdated:null,
engName:"M Bank",
updatedBy:null
},
code:"11001"
},
{
bankid:1,
id:2,
perName:"",
bank:{
id:1,
createdBy:1,
created:null,
perName:"",
lastUpdated:null,
engName:"M Bank",
updatedBy:null
},
code:"2333"
},
{
bankid:1,
id:3,
perName:"",
bank:{
id:1,
createdBy:1,
created:null,
perName:"",
lastUpdated:null,
engName:"M Bank",
updatedBy:null
},
code:"47"
},
{
bankid:2,
id:4,
perName:"",
bank:{
id:2,
createdBy:1,
created:new Date(1405327425220),
perName:"",
lastUpdated:null,
engName:"S Mank",
updatedBy:null
},
code:"474747"
}
],
endRow:4,
invalidateCache:false,
isDSResponse:true,
operationType:"fetch",
queueStatus:0,
startRow:0,
status:0,
totalRows:4
}
]
这是我的 ComboxItem 代码
bankBranchName = new CustomComboBoxItem()
{
protected Criteria getPickListFilterCriteria()
{
Integer bankid = (Integer) bankName.getValue();
AdvancedCriteria criteria = new AdvancedCriteria("bankid", OperatorId.EQUALS, bankid);
return criteria;
}
};
我的 BankDS.ds.xml 看起来像这样
<DataSource ID="BankDS" serverType="sql" tableName="Bank">
<fields>
<field name="id" title="Id" type="int" primaryKey="true" />
<field name="engName" title="Name" type="string" />
<field name="perName" title="Persian Name" type="string" />
</fields>
<operationBindings>
<binding operationType="add" serverMethod="add">
<serverObject lookupStyle="new"
className="com.kaizen.erp.server.bussinessLogic.master.BankBussinessLogic" />
</binding>
<binding operationType="update" serverMethod="add">
<serverObject lookupStyle="new"
className="com.kaizen.erp.server.bussinessLogic.master.BankBussinessLogic" />
</binding>
<binding operationType="remove" serverMethod="delete">
<serverObject lookupStyle="new"
className="com.kaizen.erp.server.bussinessLogic.master.BankBussinessLogic" />
</binding>
<binding operationType="fetch" serverMethod="fetch">
<serverObject lookupStyle="new"
className="com.kaizen.erp.server.bussinessLogic.master.BankBussinessLogic" />
</binding>
</operationBindings>
这是我的 BankBranchDS.DS.XML 代码
<DataSource ID="BankBranchDS" serverType="sql" tableName="BankBranch">
<fields>
<field name="id" title="Id" type="int" primaryKey="true" />
<field name="code" title="Code" type="string" />
<field name="perName" title="Persian Name" type="string" />
<field name="bankid" type="text" hidden="true" valueXPath="bank/id" />
<field name="bank" displayField="bank" foreignKey="bank.id" />
</fields>
<operationBindings>
<binding operationType="add" serverMethod="add">
<serverObject lookupStyle="new"
className="com.erp.server.bussinessLogic.master.BankBranchBussinessLogic" />
</binding>
<binding operationType="update" serverMethod="add">
<serverObject lookupStyle="new"
className="com.erp.server.bussinessLogic.master.BankBranchBussinessLogic" />
</binding>
<binding operationType="remove" serverMethod="delete">
<serverObject lookupStyle="new"
className="com.erp.server.bussinessLogic.master.BankBranchBussinessLogic" />
</binding>
<binding operationType="fetch" serverMethod="fetch">
<serverObject lookupStyle="new"
className="com.erp.server.bussinessLogic.master.BankBranchBussinessLogic" />
</binding>
</operationBindings>
【问题讨论】: