Sapui5 在组合的两个sap.m.Table列上应用sap.ui.model.Filter

Sapui5 在组合的两个sap.m.Table列上应用sap.ui.model.Filter,sapui5,Sapui5,两列firstName和lastName。 如何使用绑定的过滤器方法,以便某人输入John Doe的搜索字段中的查询保留firstName+“+lastName串联匹配的记录 注意:我是在客户端操作模式下执行此操作的,因此请不要使用后端筛选解决方案。正确的解决方案是使用自定义筛选器,正如@Andrii所指出的 因此,我们可以创建一个自定义筛选器,该筛选器将根据从中返回的布尔值为表中的每一行运行 自定义过滤器将在屏幕上呈现一行。过滤器API: 下面是运行代码: handleSearch: func

两列
firstName
lastName
。 如何使用绑定的
过滤器
方法,以便某人输入
John Doe
的搜索字段中的查询保留
firstName
+
+
lastName
串联匹配的记录


注意:我是在客户端操作模式下执行此操作的,因此请不要使用后端筛选解决方案。

正确的解决方案是使用自定义筛选器,正如@Andrii所指出的

因此,我们可以创建一个自定义筛选器,该筛选器将根据从中返回的布尔值为表中的每一行运行 自定义过滤器将在屏幕上呈现一行。过滤器API:

下面是运行代码:

handleSearch: function(e) {
    var sQuery = e.getParameter('query'); // Fecth search term
    var oCustomFilter = new sap.ui.model.Filter({
        path:"", // this refers to binding path of each row.
        test: function(oNode) {
            var oValue = oNode.fname + " " +oNode.lname;
            if (oValue.indexOf(sQuery) !== -1) {
                return true; // row will be rendererd
            } else {
                return false; // row will not be rendererd
            }

        }
    });
    var oBinding = this._table.getBinding('items');
    oBinding.filter(oCustomFilter);
}
表:

            <Table
                id='idTable'
                items= "{/}"
            >
                <columns>
                    <Column
                        headerText='FName'
                    />
                    <Column
                        headerText='LName'
                    />  
                </columns>
                <items>
                    <ColumnListItem>
                        <cells>
                            <Text
                                text='{fname}'
                            />
                            <Text
                                text='{lname}'
                            />
                        </cells>
                    </ColumnListItem>
                </items>
            </Table>


如果您需要任何其他信息,请告诉我。:)

正确的解决方案是使用定制过滤器,正如@Andrii所指出的那样

因此,我们可以创建一个自定义筛选器,该筛选器将根据从中返回的布尔值为表中的每一行运行 自定义过滤器将在屏幕上呈现一行。过滤器API:

下面是运行代码:

handleSearch: function(e) {
    var sQuery = e.getParameter('query'); // Fecth search term
    var oCustomFilter = new sap.ui.model.Filter({
        path:"", // this refers to binding path of each row.
        test: function(oNode) {
            var oValue = oNode.fname + " " +oNode.lname;
            if (oValue.indexOf(sQuery) !== -1) {
                return true; // row will be rendererd
            } else {
                return false; // row will not be rendererd
            }

        }
    });
    var oBinding = this._table.getBinding('items');
    oBinding.filter(oCustomFilter);
}
表:

            <Table
                id='idTable'
                items= "{/}"
            >
                <columns>
                    <Column
                        headerText='FName'
                    />
                    <Column
                        headerText='LName'
                    />  
                </columns>
                <items>
                    <ColumnListItem>
                        <cells>
                            <Text
                                text='{fname}'
                            />
                            <Text
                                text='{lname}'
                            />
                        </cells>
                    </ColumnListItem>
                </items>
            </Table>


如果您需要任何其他信息,请告诉我。:)

您需要第三个不可见列,只需将这两个字段绑定到一个列中。然后在此字段上应用筛选器。使用AND操作的两个筛选器对象如何?(当然,在应用之前需要拆分搜索值)@zyrex不起作用,AFAIK过滤是在绑定上完成的,而不是在列中的值上。但我将添加一个全名属性,并将其绑定到一个隐藏列。Thanks@AndriiNaumovych对于由多个部分组成的名称不起作用,因为您现在无法在何处拆分。使用自定义筛选函数如何?“test”?您需要第三个不可见列,只需将这两个字段绑定到一个列中即可。然后在此字段上应用筛选器。使用AND操作的两个筛选器对象如何?(当然,在应用之前需要拆分搜索值)@zyrex不起作用,AFAIK过滤是在绑定上完成的,而不是在列中的值上。但我将添加一个全名属性,并将其绑定到一个隐藏列。Thanks@AndriiNaumovych对于由多个部分组成的名称不起作用,因为您现在无法在何处拆分。使用自定义筛选函数如何?“测试”?