我正在使用Visual Studio 2013 LightSwitch尝试构建HTML应用程序。在尝试了几个小时后,在HTML客户端中显示“计算”列/字段后,我意识到这是不可能的。我考虑构建一个触发器来触发表,但是当我发布应用程序时,它不会被推送。因此,在不使用RIA客户端的情况下,使用两个或更多数据源字段计算并存储在另一个数据源字段中的最佳方法是什么?当用户单击保存按钮或甚至当字段包含可以计算的数据时,它可以被触发。
例如,表用户(之前):
First_Name (string) Last_Name (string) Stored_Full_Name (string)
John User NULL
Jane Doe NULL
当用户单击save时,或者first_name和last_name不为null时,“Last_Name,First_Name”将作为单个列存储在同一个表的Stored_Full_Name列中。
例如,表用户(之后):
First_Name (string) Last_Name (string) Stored_Full_Name (string)
John User User, John
Jane Doe Doe, Jane
我假设可以使用相同的技术来计算成本或其他项目?
非常感谢任何示例代码。
答案 0 :(得分:1)
对于简单的计算属性,您始终可以在Users原型上创建函数。 这篇博文中解释了这一点:http://lobfactory.wordpress.com/2013/05/03/computed-fields-in-the-html5-client/
答案 1 :(得分:1)
这很简单。创建一个字符串类型的屏幕变量,名为" FullName"显示文字为"全名"。编辑屏幕"创建"方法并将您想要的值分配给JavaScript中的变量。 - 在上面的示例中,您需要以下内容:
screen.FullName = screen.Last_Name.value + ", " + screen.First_name.value;
然后将变量从左侧的数据标签拖到您的屏幕上。
您可能需要将计算值更新为Save管道的一部分,但create()方法应在重绘屏幕时触发。如果你想将它保存到Users表中的可以为空的列中,你可以通过简单地将字段值分配给新值来实现,但我不确定为什么你会因为这会破坏你的表而烦恼#&# 39;标准化。在您在客户端预处理保存的更改的函数中,添加以下代码以实现此目的:
screen.FullNameTableField = screen.FullName.value;
我使用非常类似的技术来创建行内"编辑"和"删除"记录级表条目。
HTH