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 框架可以轻松地与其他框架集成。
我想知道是否有人能够想出一种从 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 框架可以轻松地与其他框架集成。