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

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

我正在用 Visual Studio 2013 开发一个电灯开关 HTML 客户端。我有一个屏幕,上面有 平铺列表 的客户,其中那些是标记为 "premium"(这是客户实体的布尔字段)以 橙色背景 突出显示,而所有其他客户保持默认的灰色背景。

此外,该客户的磁贴底部会出现一个标签 "premium"。

在屏幕代码隐藏文件中的“CustomerRow_postRender”处理函数中以橙色突出显示 "premium" 客户,我在其中检查对于 premium 字段,然后将 css class 分配给磁贴。

我的问题

当我编辑客户并通过 DetailsS​​creen 弹出窗口将其设为 "premium" 时,我将其保存并返回到我的磁贴列表。

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

我觉得这个功能设计得很好。但该走哪条路呢?我当前的解决方法是重新加载浏览器页面 (F5) - 然后磁贴呈现为橙色。

感谢任何提示。

为了使其正常工作,您需要在 table 行的 postRender 例程中配置数据绑定更改处理程序。 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 available for free from Syncfusion 所著的 'LightSwitch Mobile Business Apps Succinctly' 书中有一个很好的章节涵盖了这个领域 (p63+ 'Custom controls: PostRendering')。

如果您还没有读过 Jan 的这本好书,我强烈推荐 'picking up' 一本,因为它是一个很好的资源。