首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何构造基于表绑定值的筛选器?

如何构造基于表绑定值的筛选器?
EN

Stack Overflow用户
提问于 2017-04-27 12:48:37
回答 1查看 2.9K关注 0票数 1

我有这样的桌子:

代码语言:javascript
复制
<Table
    id="table"
    items="{path: invoices}/>
    <headerToolbar>
        <Toolbar>
            <Title id="tableHeader" text="table"/>
            <ToolbarSpacer />
            <Button tooltip="View Settings" icon="sap-icon://drop-down-list" press="handleFilterPressed" />
        </Toolbar>
    </headerToolbar>
</Table>

发票是这样的:

代码语言:javascript
复制
{
  invoiceid: 1,
  business area: 1
}
{
  invoiceid: 2,
  business area: 2
}
{
  invoiceid: 3,
  business area: 1
}

handleFilterPressed看起来是这样的:

代码语言:javascript
复制
handleFilterPressed : function(oEvent) {
    if (!this._oDialog) {
        this._oDialog = sap.ui.xmlfragment("vfb.view.Filter", this);
    }

    // toggle compact style
    jQuery.sap.syncStyleClass("sapUiSizeCompact", this.getView(), this._oDialog);               
    this._oDialog.open();
},

过滤器的片段如下所示:

代码语言:javascript
复制
<core:FragmentDefinition
    xmlns="sap.m"
    xmlns:core="sap.ui.core">
    <ViewSettingsDialog
        confirm="onSetFilter">
        <filterItems>
            <ViewSettingsFilterItem
                text="Business area"
                key="BusArea"
                multiSelect="true"
                id="filterList">
                <items>
                </items>
            </ViewSettingsFilterItem>
        </filterItems>
    </ViewSettingsDialog>
</core:FragmentDefinition>

因此,现在我的问题是:如何根据数据构造过滤列表项,使过滤器看起来像这样:

代码语言:javascript
复制
<items>
    <ViewSettingsItem text="1" key="1" />
    <ViewSettingsItem text="2" key="2" />
</items>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-27 19:44:18

您应该在片段中进行聚合绑定:

代码语言:javascript
复制
invoices:[
  {
    invoiceid: 1,
    businessArea: 1
  },
  {
    invoiceid: 2,
    businessArea: 2
  },
  {
    invoiceid: 3,
    businessArea: 1
  }
]


<core:FragmentDefinition
    xmlns="sap.m"
    xmlns:core="sap.ui.core">
    <ViewSettingsDialog
        confirm="onSetFilter"
        filterItems="{/invoices}">
        <filterItems>
            <ViewSettingsFilterItem
                text="{businessArea}"
                key="{businessArea}">
            </ViewSettingsFilterItem>
        </filterItems>
    </ViewSettingsDialog>
</core:FragmentDefinition>

但是,正确的方法是在JSON模型中有一个节点(或者entitySet在OData模型中),它列出了businessAreas。否则,如果使用当前的JSON,则在执行聚合绑定时将得到重复的JSON。所以用这样的方法来改进它:

代码语言:javascript
复制
invoices:[
  {
    invoiceid: 1,
    businessArea: 1
  },
  {
    invoiceid: 2,
    businessArea: 2
  },
  {
    invoiceid: 3,
    businessArea: 1
  }
],
businessAreas:[
  {
    businessAreaName: "Business 1"
    businessArea: 1
  },
  {
    businessAreaName: "Business 2"
    businessArea: 2
  }
]


<core:FragmentDefinition
    xmlns="sap.m"
    xmlns:core="sap.ui.core">
    <ViewSettingsDialog
        confirm="onSetFilter"
        filterItems="{/businessAreas}">
        <filterItems>
            <ViewSettingsFilterItem
                text="{businessAreaName}"
                key="{businessArea}">
            </ViewSettingsFilterItem>
        </filterItems>
    </ViewSettingsDialog>
</core:FragmentDefinition>

我认为这些小小的改变会对你有帮助。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43658308

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档