SAP UI5过滤日期范围内的表行

时间:2018-02-10 15:10:43

标签: sapui5

我有一个包含记录列表的表(从本地JSON获取的行数据)。 enter image description here

我想用“TO”字段过滤表格。 如果我将日期指定为2018年2月13日,请单击“显示”按钮。表必须过滤截至2018年2月13日的所有行。但我无法实现这一目标。你能帮我解决一下吗?以下是我的代码..

XML ::

<DatePicker id="leaveSince" valueFormat="dd-MM-yyyy" class="leaveSinceInput"/>
<Button text="Display" type="Accept" class="sapUiSmallMarginBegin" press="displayTable"></Button>

<Table id="idLeaveTable" inset="true" items="{path: 'overviewModel>/leaveOverview'}">
  <columns>
    <Column>
      <Text text="Type of Leave" />
    </Column>
    <Column minScreenWidth="Tablet" demandPopin="true">
      <Text text="From" />
    </Column>
    <Column minScreenWidth="Tablet">
      <Text text="To" />
    </Column>
    <Column>
      <Text text="Status" />
    </Column>
    <Column minScreenWidth="Tablet" demandPopin="true">
      <Text text="Used" />
    </Column>
  </columns>
  <items>
    <ColumnListItem>
      <cells>
        <Text text="{overviewModel>typeofleave}" />
        <Text text="{overviewModel>from}" />
        <Text text="{overviewModel>to}" />
        <Text text="{overviewModel>status}" />
        <Text text="{overviewModel>used}" />
      </cells>
    </ColumnListItem>
  </items>
</Table>

控制器

displayTable:function(oEvent){
        var leaveSince=this.getView().byId("leaveSince").getValue();        
        var filter = new sap.ui.model.Filter("to", sap.ui.model.FilterOperator.BT, leaveSince);
        var list = this.getView().byId("idLeaveTable");
        var binding = list.getBinding("items");
        binding.filter([filter]);
}

日期的价值格式为dd-MM-yyyy。有人可以帮我修改我的查询吗? 提前谢谢

1 个答案:

答案 0 :(得分:0)

问题是您按原样使用 DatePicker 控件(没有数据绑定)并从输入本身获取值(字符串日期值)。

但问题是过滤器对象不理解日期字符串,它适用于日期对象(普通JS日期对象)。

所以你的情况我看到了2个解决方案:

  1. 将DatePicker绑定到本地JSON模型,然后按“显示”,只需通过 getProperty 方法。
  2. 利用DatePicker的“getDateValue”方法获取JS日期对象
  3. 成功获得日期对象后,在过滤器对象构造中使用 LT 运算符。

    我会推荐第一个变体,因为这是更方便和可扩展的解决方案。