Lightswitch HTML 客户端:如何重新渲染项目(重新执行 postRender 回调)
Lightswitch HTML Client: How to re-render an item (re-execute postRender callback)
我正在使用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的好书,我强烈建议你"拿起"一本,因为它是一个很好的资源。
- 如果数组仍在执行,async.forEach()将运行我添加到数组中的新元素
- 如何打开一个新窗口或选项卡,并将其提供给javascript执行
- 如何在Ajax加载新内容时停止JavaScript执行
- 如何在新选项卡中打开新网页后获取书签中的 JavaScript 代码以执行
- 执行打开新窗口并执行Javascript
- 超链接单击以加载新页面并执行JavaScript
- 使用Node中的Q promise库对值数组顺序调用/执行相同的函数;并返回带有结果的新数组/集合
- 浏览器在“打开”之后继续执行Javascript;PageUnload”&新的“;PageLoad”;
- jQuery没有为具有新id的新元素执行代码
- 到达新页面后执行js
- 如何在不打开新窗口的情况下在单页应用中执行 Dropbox 身份验证
- 在 Javascript 中执行新的 Date.toString() 时出现错误字符
- 如何在新加载的页面上执行(下拉)操作
- JavaScript 不会保留新的标签内容来执行函数
- Javascript在右键单击新选项卡时未执行
- 是否有类似于“$(window).load();”的东西用于在新插入的 Ajax 内容完成加载后执行函数
- 单击新添加的链接不会执行JavaScript函数
- 为什么我的MutationObserver回调没有为一些新标签执行
- 用新进程执行函数,就像在java中使用新线程一样
- 打开window self并为新窗口执行javascript