将自定义屏幕导航编码为 Lightswitch HTML
Coding custom Screen Navigation into Lightswitch HTML
我希望LS HTML中的按钮操作事件稍微违背内置导航框架。
具体而言,让 LS 自动从一个 AddEditScreen 导航到另一个 AddEditScreen,由此按钮事件触发。
诀窍是这样的 - 我需要它导航到浏览屏幕列表中"下一个项目"的 AddEditScreen ,而无需返回浏览屏幕。
例:
在浏览屏幕上选择项目"ABC01">导航到"ABC01"的添加编辑屏幕>编辑"ABC01">完成编辑后,触发一个事件,使 LS 能够直接从"浏览屏幕"列表中导航到"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 = 带有值的列。它是唯一的,用于标识资产。这很可能不是实现我想要实现的目标的最佳方式,所以我在这里寻求建议。我不必使用它作为参数,只要我可以从列表中点击"下一项"。
非常感谢您的任何意见。我会非常兴奋地让这种行为发挥作用。
这个问题由joshbooker解决。这是解决方案,只需要最少的项目特定定制...
"问题投票为有帮助0投票我想要实现的是这个,例如:
浏览屏幕> 在列表中选择第 1 项(共 15 项),>扫描我们在 AddEditScreen 上需要的第 1 项信息,以查找第 1 项>点击"触发器",并让 LS 自动保存该编辑,然后导航到第 2 项(共 15 项>)的 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);
}
}
}
});
};
"
- 可以't让我的if语句处理js中的html表单输入
- 如何设置html元素填充的动画
- 使用JS如何动态更改显示的html文件中的文本背景颜色
- Lightswitch HTML 自定义控件仅显示一次
- 根据用户登录凭据(Lightswitch HTML)添加数据
- Insert DateTime.now() Lightswitch HTML
- 将一个驱动器与 Visual Studio Lightswitch HTML 2013 配合使用
- 将自定义屏幕导航编码为 Lightswitch HTML
- 将光标聚焦在 HTML 上创建,然后在 Lightswitch 2013 中的属性字段之间移动光标
- 保存Lightswitch HTML后刷新
- Visual Studio Lightswitch HTML客户端验证失败
- Lightswitch HTML客户端-基于权限禁用/隐藏按钮
- 使用lightswitch html客户端中的自定义方法将数据保存到sql server中
- Lightswitch 2013 HTML客户端-在一个屏幕上而不是全部屏幕上更改背景
- Lightswitch 2013-HTML客户端->commitChanges()和showOtherPage()
- Lightswitch HTML Client 2013-根据表中的单元格值更改单元格颜色
- Lightswitch HTML全局JS文件以传递变量
- Lightswitch HTML -点击放大图像
- Lightswitch HTML 客户端:如何重新渲染项目(重新执行 postRender 回调)
- Lightswitch HTML 客户端输入验证未更新