在Lightswitch HTML查询执行后,将焦点设置在客户端上

时间:2016-02-10 02:50:57

标签: c# html visual-studio-lightswitch

Lightswitch HTML客户端

执行查询后,我很好奇如何在客户端之后立即执行更改。例如,我有一个搜索框(文本框),它接受输入并将其传递给参数化查询。在客户端上,我想在查询完成后将焦点设置回搜索框。我有工作java脚本代码来设置foucs,我只是不知道何时何地使用它。我需要一些像服务器方法_Executed和_Executing但在客户端上。这可能吗?

1 个答案:

答案 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
    }
});