1

我正在尝试在 Visual Studio Code 中使用 SetAscending for Business Central 销售订单列表页面。它可以设置销售订单“No”。字段降序但它不会将滚动条重置到页面顶部。我试过将它添加到多个地方,它对页面进行排序,但没有滚动条更新。我可能会丢失什么代码?

我已将其添加到的地方:销售订单列表页面扩展 - OnAfterGetRecord 和 OnAfterGetCurrRecord 销售订单列表页面事件 - OnOpenPageEvent、OnAfterGetRecordEvent 和 OnAfterGetCurrRecordEvent

trigger OnAfterGetCurrRecord()
    begin
        rec.SetCurrentKey("Document Type", "No.");
        rec.SetAscending("No.", false);
    end

在此处输入图像描述

4

4 回答 4

3

您必须告诉页面导航到新的第一条记录。

在 OnOpenPage 触发器中,您执行以下操作:

Rec.SetCurrentKey("Document Type", "No.");
Rec.SetAscending("No.", false);
if Rec.FindSet() then; // use if-then to avoid error if there are no records within the filter
于 2020-12-21T19:12:10.017 回答
1

您有 3 种方法可用作 FIND

FindFirst= 找到你的过滤器的第一次出现

Findlast= 查找过滤器的最后一次出现

FindSet= 找到你的过滤器的一组出现

您可以将所有这些与repeatanduntil语句一起使用来循环记录。

FindFirstFindSetforRepeat和之间的区别在于Until找到FindSet一组寄存器而FindFirst只找到一个,因此FindSet它的性能更高。

对于您的情况,您需要修改属性 sourceTableView。这是一个页面属性。FindSet 用于页面列表中不用于 DataSourceTable 的变量。

在表中创建一个键,然后将此键放在页面的 sourceTableView 属性中。

于 2020-12-23T19:26:35.070 回答
0

这对我有用。由于这是 Business Central 中的标准列表页面,因此我无法修改 SourceTableView。我必须使用两个触发器进行第一次排序并将光标移动到列表顶部。

    trigger OnAfterGetRecord()
    begin
        rec.SetCurrentKey("Document Type", "No.");
        rec.SetAscending("No.", false);
    end;

    trigger OnOpenPage()
    begin
        rec.FindLast();
    end;
于 2020-12-28T15:35:04.210 回答
0

我正在 docs.microsoft.com 上测试答案并阅读有关此主题的内容,但唯一有效的技巧如下:

    trigger OnOpenPage()
    begin
        Rec.SetCurrentKey(SystemCreatedAt);
        Rec.Ascending := false;
    end;

注意:我按日期时间对象排序。但线索是:OnOpenPage触发器SetCurrentKeyAscending属性而不是SetAscending. 这是将滚动条留在顶部的独特解决方案,至少对我来说是这样。

于 2021-12-15T17:19:32.183 回答