我想用“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。有人可以帮我修改我的查询吗? 提前谢谢
答案 0 :(得分:0)
问题是您按原样使用 DatePicker 控件(没有数据绑定)并从输入本身获取值(字符串日期值)。
但问题是过滤器对象不理解日期字符串,它适用于日期对象(普通JS日期对象)。
所以你的情况我看到了2个解决方案:
成功获得日期对象后,在过滤器对象构造中使用 LT 运算符。
我会推荐第一个变体,因为这是更方便和可扩展的解决方案。