【问题标题】:SmartGWT Datasource filtering Combo Box issueSmartGWT 数据源过滤组合框问题
【发布时间】: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>

【问题讨论】:

    标签: gwt smartgwt


    【解决方案1】:

    选择银行后,尝试清除银行分行名称ComboBoxItem 的值。

    查看如何覆盖名为“Dependent Selects (Databound)”的 getPickListFilterCriteria() 的示例。这与您尝试执行的操作非常相似:
    http://www.smartclient.com/smartgwt/showcase/#dep_selectects_db_combobox_category

    【讨论】:

    • 你能告诉我POJO类、DataSource文件和我们在SmartGWt中从服务器得到的响应数据之间的关系吗?我会感谢你的帮助!
    • @ZAJ:银行分行名称组合框数据绑定到 BankBranchDS 数据源。 AdvancedCriteria POJO(在这里有点过分;您可以使用Criteria 对象)是当银行分行名称组合框获取数据以填充其pickList 时发送到服务器的标准。银行分行名称组合框使用响应数据向用户显示选项。
    猜你喜欢
    • 1970-01-01
    • 2011-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多