SAPUI5表内搜索(Uncaught Error:Only" String" FilterOperator支持的值:"包含"。)

时间:2015-05-21 11:23:27

标签: type-conversion sapui5

我有一个SAPUI5表,其中包含String值数据(例如名称)和整数数据(例如ID)。当我使用字符串的表内搜索选项时,它可以很好地工作。

当我尝试搜索部分ID时,会抛出以下错误:

  

(未捕获错误:仅#34;字符串"支持的值   FilterOperator:"包含"。)

我想搜索我的整数,好像它们是字符串

尝试1:

var oTextView = new sap.ui.commons.TextView( {
            text : {
                path : "id",
                formatter : function(oContext) {
                    if (oContext) {
                        return oContext.toString();
                    } else
                        return;
                }
                }
            });

尝试2:

var oTextView = new sap.ui.commons.TextView( {
            text : {
                path : "id",
                type : new sap.ui.model.type.String(),
                }
            });

尝试3:

将先前的尝试与此结合(结果是我无法再对该列进行表内搜索):

oColumn.setFilterProperty(sap.ui.model.type.String())
oColumn.setSortProperty(new sap.ui.model.type.String())

编辑:视图/控制器

  

视图:

var oTable = new sap.ui.table.Table();
oTable.setModel(sap.ui.getCore().getModel("myModel"));
oTable.bindRows("/myPath");

var oTextView = new sap.ui.commons.TextView();
            oTextView.bindProperty("text", "myProperty");

var oColumn =   var oColumn = new sap.ui.table.Column({
label : new sap.ui.commons.Label( {
                text : "My Column"
            }),
            template : oTextView,
            sortProperty : "myProperty",
            filterProperty : "myProperty",
});
oTable.addColumn(oColumn);
  

控制器:

var oModel = new sap.ui.model.json.JSONModel(MyData); 
sap.ui.getCore().setModel(oModel, "myModel");

2 个答案:

答案 0 :(得分:2)

我遇到了同样的问题并且转换为字符串解决了它。但是我会提交错误报告,因为过滤器也应该使用数字。特别是因为排序仅按预期使用数字。作为一种解决方法,我做了以下几点:

  1. 通过以下方式转换为字符串:var my_string = my_num.toString();这似乎更好,然后通过上面提出的连接进行隐式转换。
  2. 在过滤器的绑定中使用字符串值
  3. 使用绑定中的数字值进行排序
  4. 这里有一些伪代码,因为有人要求它。字符串值仅添加到用于排序的模型中:

    var your_data_model = [{int_value = 111},{int_value=222}];
    your_data_model[0].string_value = "111"; //add a string value for filter
    your_data_model[1].string_value = "222"; //add a string value for filter
    
    //in your table object add the sorting as usal on the column level
    var oColumn = new sap.ui.table.Column({
        label : oLabel,
        template : oObject
    });
    oColumn.setSortProperty("int_value"); //sort well for numbers
    oColumn.setFilterProperty("string_value"); //filter worlds for string
    

答案 1 :(得分:0)

尝试使用:

var oTextView = new sap.ui.commons.TextView( {
    text : "" + "{id}" + ""
});

这样你的整数将以字符串

的形式发出