将自定义屏幕导航编码为Lightswitch HTML

时间:2016-01-21 17:56:47

标签: javascript lightswitch-2013

我想在LS HTML中使用Button动作事件稍微违背内置导航框架。

具体来说,让LS自动从一个AddEditScreen导航到另一个AddEditScreen,由此Button事件触发。

诀窍就是这个 - 我需要它导航到"下一个项目的AddEditScreen"在浏览屏幕列表中,不返回浏览屏幕。

示例:

选择项目' ABC01'在浏览屏幕上>导航到' ABC01'的AddEditScreen; >编辑' ABC01' >完成编辑后,触发一个事件,使LS能够直接导航到AddEditScreen,以便 ABC02 '从浏览屏幕列表中。

我对这个事件的内容持开放态度。一个按钮......什么都没有。

我创建了一个按钮并选择了“编写我自己的方法”#。

这看起来是否接近可行的代码,或LS是否需要获得' ABC01'来自某种类型的查询?

myapp.AddEditHoldingInventory.Method_execute = function (screen) {
// Write code here.
var navigateToNextScreen = function (Method) {

        return screen.getStrRqsNum().then(function (StrRqsNum) {
            if (!!StrRqsNum) {

                return myapp.applyChanges().then(function () {

                    var paramValue = (Number(StrRqsNum) += 1).toString();

                            return myapp.ShowAddEditHoldingInventory(id);
                        }
                    });
                });
            }

上面的代码由我修改,我不是程序员或开发人员。这是我收集的作品的片段,我正在努力理解。

代码正在尝试什么'悲惨的'实现,是:

获取StrRqsNumber的值>保存在屏幕上进行的编辑>将+1添加到StrRqsNumber的值>使用新值导航到记录的AddEditSCreen。

StrRqsNumber =具有值的列。它是唯一的并且标识资产。这很可能不是实现我想要实现的目标的最佳方式,所以我在这里寻求建议。我不必将此作为参数,只要我可以点击下一个项目'从列表中。

非常感谢您的任何意见。我会因为这种行为而发挥作用。

1 个答案:

答案 0 :(得分:0)

这个问题由joshbooker解决了。这是解决方案,只需要最少的项目特定剪裁......

"问题 投票有帮助 0 投票 我想要实现的是这个,例如:

浏览屏幕>在列表中选择项目1 of 15>在项目1的AddEditScreen上扫描我们需要的信息>点击“触发器”,让LS自动保存该编辑,然后导航到15的项目2的AddEditScreen>等等。

以下是一个有效的解决方案:



/// <reference path="~/GeneratedArtifacts/viewModel.js" />

myapp.BrowseHoldingInventories.selectNextStrRqsNum_execute = function (screen)
{///custom screen method to set selected item to next StrRqsNum
    //calc next num
    var nextNum = (Number(screen.HoldingInventories.selectedItem.StrRqsNum) + 1).toString();
    // iterate collection data to find the next item
    var nextItem = msls.iterate(screen.HoldingInventories.data)
                        .where(function (i)
                        {
                            return i.StrRqsNum == nextNum;
                        }).first();
    if (nextItem)
    {   //if found - select the item & return true
        screen.HoldingInventories.selectedItem = nextItem;
        return true;
    }
    else
    {   //not found - return false
        return false;
    };
};

myapp.BrowseHoldingInventories.TapMethod_execute = function (screen) {
    // tap method of list item on browse screen.

    //handy way to save/set scroll position
    var scrollTopPosition = $(window).scrollTop();

    //currently selected item
    var item = screen.HoldingInventories.selectedItem;

    //showAddEditScreen - pass item
           // beforeShown: setup binding on FieldB
            //afterClosed: if commit & select next then recurse

    myapp.showAddEditHoldingInventory(item, {
        beforeShown: function (addEditScreen)
        {//this executes before the screen is shown
            //find the trigger field
            var contentItem = addEditScreen.findContentItem("FieldB");
            if (contentItem)
            {   //databind to catch value change
                contentItem.dataBind(contentItem.bindingPath, function(newValue){
                    if (newValue && contentItem.oldValue && newValue != contentItem.oldValue)
                    {   //if change then commit - this triggers close of addEditScreen
                        myapp.commitChanges();
                    }
                    contentItem.oldValue = newValue;
                });

            }
        },
        afterClosed: function (addEditScreen, navigationAction)
        {//this executes after the screen is closed
            //scroll browse screen to where we left off
            $(window).scrollTop(scrollTopPosition);
            //if commit
            if (navigationAction == msls.NavigateBackAction.commit)
            {   //try to select next item in list
                if (myapp.BrowseHoldingInventories.selectNextStrRqsNum_execute(screen) == true)
                {   //next item selected then recurse
                    myapp.BrowseHoldingInventories.TapMethod_execute(screen);
                }
            }
        }
    });
};
&#13;
&#13;
&#13;

&#34;