Kendo UI Openedge ABL 中的服务器过滤

Kendo UI server filtering in Openedge ABL

我想知道是否有人能够想出一种从 Openedge 中的 Kendo UI 小部件实现服务器过滤的好方法。我们目前遇到一个问题,即我们现有的代码库阻止使用 PAS 或 JSDO。

谢谢:)

我在去年的许多会议上介绍了如何使用 Kendo UI 和 WebSpeed:

https://dl.dropboxusercontent.com/u/2749528/2015%20Kendo%20UI%20with%20WebSpeed.pdf

幻灯片 46 显示了 Kendo UI 组件将向后端发出的示例 URI。您只需将其转换为 ABL 查询字符串即可。

这是我们处理查询选择的方式的一部分。 oListQueryExpression 是我们用于构建查询的 object。但是您也可以直接创建一个 WHERE 子句。

WebUtilities 只是一个静态 class,提供对 get-field.

等功能的访问
        REPEAT:
        ASSIGN cFilterField    = WebUtilities:GetField (SUBSTITUTE ("filter[filters][&1][field]":U, i))
               cFilterOperator = WebUtilities:GetField (SUBSTITUTE ("filter[filters][&1][operator]":U, i))
               cFilterValue    = WebUtilities:GetField (SUBSTITUTE ("filter[filters][&1][value]":U, i)).

        IF cFilterField > "":U THEN . ELSE LEAVE .

        CASE cFilterOperator:
            WHEN "eq":U THEN
                oListQueryExpression:Add (NEW BufferFieldName (THIS-OBJECT:EntityTable, cFilterField),
                                          OperatorEnum:EQ,
                                          NEW CharacterHolder (cFilterValue)) .
            WHEN "neq":U THEN
                oListQueryExpression:Add (NEW BufferFieldName (THIS-OBJECT:EntityTable, cFilterField),
                                          OperatorEnum:NE,
                                          NEW CharacterHolder (cFilterValue)) .
            WHEN "startswith":U THEN
                oListQueryExpression:Add (NEW BufferFieldName (THIS-OBJECT:EntityTable, cFilterField),
                                          OperatorEnum:Begins,
                                          NEW CharacterHolder (cFilterValue)) .
            WHEN "contains":U THEN
                oListQueryExpression:Add (NEW BufferFieldName (THIS-OBJECT:EntityTable, cFilterField),
                                          OperatorEnum:Matches,
                                          NEW CharacterHolder ("*":U + cFilterValue + "*":U)) .
            WHEN "endswith":U THEN
                oListQueryExpression:Add (NEW BufferFieldName (THIS-OBJECT:EntityTable, cFilterField),
                                          OperatorEnum:Matches,
                                          NEW CharacterHolder (cFilterValue + "*":U)) .
        END CASE .

        ASSIGN i = i + 1 .
    END.

我不太熟悉 pscript 提供的 API。但我知道有可用的 WebSpeed 框架可以轻松地与其他框架集成。