Lightswitch HTML 客户端:如何重新渲染项目(重新执行 postRender 回调)

Lightswitch HTML Client: How to re-render an item (re-execute postRender callback)

本文关键字:新执行 执行 回调 postRender 项目 客户端 HTML 何重新 Lightswitch      更新时间:2023-09-26

我正在使用Visual Studio 2013开发一个lightswitch HTML客户端。我有一个带有客户磁贴列表的屏幕,其中标记为"高级"(这是客户实体的布尔字段)的客户以橙色背景突出显示,而所有其他客户则保留在默认的灰色背景中。

此外,该客户的磁贴底部会显示标签"高级"。

在屏幕代码隐藏文件中的"CustomerRow_postRender"处理程序函数中,以橙色突出显示"高级"客户,我在其中检查高级字段,然后将 css 类分配给磁贴。

我的问题

当我编辑客户并通过详细信息屏幕弹出窗口将其设置为"高级"时,我会保存它并返回到我的磁贴列表。

编辑后,标签"高级"将显示在客户磁贴中,这很好。但是背景不会变为橙色。我发现"postRender"函数在通过弹出屏幕从编辑回来后不会重新执行。

这个功能对我来说感觉很好。但哪条路要走呢?我目前的解决方法是重新加载浏览器页面 (F5) - 然后将磁贴呈现为橙色。

感谢您的任何提示。

为了使其正常工作,您需要在表行的 postRender 例程中配置 dataBind 更改处理程序。 dataBind 更改处理程序将监视对确定突出显示的字段值的任何更新,并且可以通过以下方式实现:-

myapp.BrowseCustomers.CustomerRow_postRender = function (element, contentItem) {
    contentItem.dataBind("value.IsPremium", function (value) {
        if (value) {
            $(element).css("background", "orange");
        } else {
            $(element).css("background", "transparent");
        }
    });
};

Jan Van der Haegen的《LightSwitch Mobile Business Apps Succinctly》一书可从Syncfusion免费获得,其中有一个很好的部分涵盖了这个领域(p63+'自定义控件:后期渲染')。

如果你还没有读过Jan的好书,我强烈建议你"拿起"一本,因为它是一个很好的资源。