选择“增长为真”的隐藏列表项

时间:2019-11-16 12:54:41

标签: sapui5

我有一个sap.m.表,其中growing(true)growingThreshold设置为5和MultiSelect模式。说,无论何时,我的JSON模型中的记录数都超过了5(例如20)。因此,它将始终执行延迟加载。

我有一个按钮,需要选择模型中的所有元素,即20个项目。因此,在按钮的单击处理程序上,我说:-table.selectAll()

现在,由于UI(和DOM)中仅显示5个项目,因此UI5库仅选择显示的元素。

console.log('How many items selected ?', oTable.getSelectedContexts(true).length ) // says 5. But it needs to be 20.

问题是-如何选择所有项目而不将其加载到UI中?显示所有元素以仅选择它们对我来说没有意义。

现在

  1. 用户不会多次单击“加载”以加载所有元素。在实际情况下,可能有数百个元素。如何选择模型中的所有n个元素?
  2. 我确实想在模型中保留其他属性,只是为了标记某个项目是否已选中?欢迎任何建议。
  3. 用户可以首先全选,然后取消选择一些他不想要的项目。因此,选择了20个项目并说删除了第2个项目,因此选择的总数不应为18。欢迎提出任何建议。

代码:

                    <ToggleButton text='Select All' press='onSelectAll'/>
                    <Button text='Submit' press='onSubmit' />
                    <Table noDataText="No Data" id="table0" items="{/}" mode='MultiSelect' growing='true' growingThreshold='5'>
                        <items>
                            <ColumnListItem type="Active">
                                <cells>
                                    <Text text="{id}"/>
                                    <Text text="{name}"/>
                                </cells>
                            </ColumnListItem>
                        </items>
                        <columns>
                            <Column id="column0">
                                <header>
                                    <Label text="ID" id="label0"/>
                                </header>
                            </Column>
                            <Column id="column1">
                                <header>
                                    <Label text="NAME" id="label1"/>
                                </header>
                            </Column>
                        </columns>
                    </Table>

控制器:

    onInit: function () {
        var aData = [];
        for(var i =0;i< 20; i++) {
            var element = {
                id : 'I00' + i,
                name: 'Clone-' + i 
            };
            aData.push(element);
        }
        var oModel = new sap.ui.model.json.JSONModel(aData);
        this.getView().setModel(oModel);
    },
    onSelectAll: function (oEvent) {
        var oSource = oEvent.getSource();
        var oTable = this.byId('table0');
        if (oSource.getPressed()) {
            oTable.selectAll();
        } else {
            oTable.removeSelections(true);
        }
    },
    onSubmit: function() {
        var oTable = this.byId('table0');
        console.log('How many items selected ?', oTable.getSelectedContexts(true).length );
    }

0 个答案:

没有答案
相关问题