Lightswitch HTML客户端
执行查询后,我很好奇如何在客户端之后立即执行更改。例如,我有一个搜索框(文本框),它接受输入并将其传递给参数化查询。在客户端上,我想在查询完成后将焦点设置回搜索框。我有工作java脚本代码来设置foucs,我只是不知道何时何地使用它。我需要一些像服务器方法_Executed和_Executing但在客户端上。这可能吗?
答案 0 :(得分:1)
我认为您不知道查询何时完成,因为它是异步完成的,并且默认情况下只加载一部分结果。您是否尝试过将javascript设置为与搜索框关联的控件的postRender?您可以通过选择控件并选择“编写代码”旁边的下拉列表在屏幕设计器中找到它。
不要忘记使用setTimeout方法来确保在应用javascript之前正确呈现元素。有关正确的解释,请参阅Why is setTimeout(fn, 0) sometimes useful?。
我使用了以下内容并将焦点移至按钮:
myapp.BrowseMyEntity.MyButton_postRender = function (element, contentItem) {
setTimeout(function () {
element.focus();
}, 0);
};
如果你真的想在你故意调用一个查询并且它已经完成之后设置焦点,那么使用promise机制“.then(...)”,例如:
screen.details.dataWorkspace.ApplicationData.MyQuery().execute().then(function (result) {
// Do whatever you want here
}
});