Sapui5 选择增长为True的隐藏列表项

Sapui5 选择增长为True的隐藏列表项,sapui5,Sapui5,我有一个sap.m.表格,其增长(true)和增长阈值设置为5和多选模式。比如说,在任何时候,我的JSON模型中的记录数都超过5条(比如说20条)。因此,它总是执行延迟加载 我有一个按钮,需要选择我的模型中的所有元素,即20个项目。所以,单击按钮的处理程序时,我会说:-table.selectAll() 现在,由于UI(和DOM)中只显示5个项目,所以UI5库只选择显示哪些元素 console.log('选择了多少项?',oTable.getSelectedContexts(true).leng

我有一个sap.m.表格,其
增长(true)
增长阈值设置为5和
多选
模式。比如说,在任何时候,我的JSON模型中的记录数都超过5条(比如说20条)。因此,它总是执行延迟加载

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

现在,由于UI(和DOM)中只显示5个项目,所以UI5库只选择显示哪些元素

console.log('选择了多少项?',oTable.getSelectedContexts(true).length)//表示5。但它必须是20。

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

现在,

  • 用户不会多次单击“加载”来加载所有元素。在真实场景中可能有100个元素。如何选择模型中的所有n个元素
  • 我想在我的模型中保留额外的属性,只是为了标记一个项目是否被选中?欢迎提出任何建议
  • 用户可以先选择全部,然后取消选择几个他不想选择的项目。所以,选择了20项,比如说,删除了前2项,所以选择的总数应该是18项。欢迎提出任何建议
  • 代码:

    
    
    控制器:

        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 );
        }
    
    onInit:function(){
    变量aData=[];
    对于(变量i=0;i<20;i++){
    变量元素={
    id:'I00'+i,
    名称:“克隆-”+i
    };
    aData.push(元素);
    }
    var-oModel=new-sap.ui.model.json.JSONModel(aData);
    this.getView().setModel(oModel);
    },
    onSelectAll:功能(oEvent){
    var oSource=oEvent.getSource();
    var-oTable=this.byId('table0');
    if(oSource.getPressed()){
    oTable.selectAll();
    }否则{
    可旋转。移除选择(真);
    }
    },
    onSubmit:function(){
    var-oTable=this.byId('table0');
    console.log('选择了多少项?',oTable.getSelectedContexts(true).length);
    }
    
    如果您的模型已经是
    JSONModel
    ,那么使用
    growing
    属性没有实际价值,因为所有数据都已加载;然后它只是一个视觉属性。对于
    ODataModel
    来说,处理“选择所有数据”服务器端背后的逻辑可能更好,因为只有后端才能完全了解所有数据data@Qualiture:我们使用的不是oData模型,而是AJAX调用来获取数据。此外,由于数据可能非常庞大,而且没有必要显示用户100条记录,因此提供了不断增长的属性。由于UI5删除了分页,因此此时我们只能使用增长。请理解。但是,由于表选择是控件属性而不是模型属性(并且数据尚未完全加载到控件本身),您可能需要使用额外的布尔属性扩展模型,然后在“全选”时在模型级别设置该属性,并从中开始工作,或者在后端处理逻辑level@RahulBhardwaj是否可以使用多选默认功能选择所有项目(如果设置为true)?或者我们需要创建自己的复选框来实现您的场景?@RahulBhardwaj如果您的值已经在模型中,只需获取“table.\u bSelectAll”,如果选择全部,则返回true。然后清除并刷新模型。如果您的模型已经是
    JSONModel
    ,那么使用
    growing
    属性没有实际价值,因为所有数据都已加载;然后它只是一个视觉属性。对于
    ODataModel
    来说,处理“选择所有数据”服务器端背后的逻辑可能更好,因为只有后端才能完全了解所有数据data@Qualiture:我们使用的不是oData模型,而是AJAX调用来获取数据。此外,由于数据可能非常庞大,而且没有必要显示用户100条记录,因此提供了不断增长的属性。由于UI5删除了分页,因此此时我们只能使用增长。请理解。但是,由于表选择是控件属性而不是模型属性(并且数据尚未完全加载到控件本身),您可能需要使用额外的布尔属性扩展模型,然后在“全选”时在模型级别设置该属性,并从中开始工作,或者在后端处理逻辑level@RahulBhardwaj是否可以使用多选默认功能选择所有项目(如果设置为true)?或者我们需要创建自己的复选框来实现您的场景?@RahulBhardwaj如果您的值已经在模型中,只需获取“table.\u bSelectAll”,如果选择全部,则返回true。然后清除并刷新模型。
        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 );
        }