我有2个表都在连接到Lightswitch Sharepoint应用程序的Azure SQL数据库中。我正在对代码中的数据进行一些操作,它似乎正在工作,除了当我从一个表中加载实体时,我无法在另一个表中看到相关的实体。
基本上,我有一个产品表和一个发票行表。每个发票行记录都包含一个与产品表PK相关的产品代码。我已经在Lightswitch中定义了关系,但是在加载发票行记录时,看不到产品信息。
我的代码如下:
// Select invoice and get products
myapp.AddEditServiceRecord.InvoicesByCustomer_ItemTap_execute = function (screen) {
screen.ServiceRecord.InvoiceNumber = screen.InvoicesByCustomer.selectedItem.INVO_NO;
// Delete existing lines (if any)
screen.ServiceDetails.data.forEach(function (line) {
line.deleteEntity();
});
// Add products for selected invoice
screen.getInvoiceLinesByNumber().then(function (invLines) {
invLines.data.forEach(function (invLine) {
invLine.getProduct().then(function (invProduct) {
var newLine = new myapp.ServiceDetail();
newLine.ServiceRecord = screen.ServiceRecord;
newLine.ProductCode = invLine.ProductCode;
newLine.ProductDescription = invProduct.Description;
newLine.CasesOrdered = invLine.Cases;
});
});
});
};
想法是在“ InvoicesByCustomer”屏幕上显示发票清单,用户单击一个即可将发票的详细信息添加到“ ServiceRecord”表中。如果我注释掉该newLine.ProductDescription = invProduct.Description
行,则可以完美地添加正确的产品代码和案例值。我还尝试了以下代码的其他一些组合,但是在每种情况下,相关的产品实体都像undefined
Javascript调试器中所示。
编辑:我还阅读了有关包括相关数据的文章(http://blogs.msdn.com/b/bethmassi/archive/2012/05/29/lightswitch-tips-amp-tricks-on-query-performance.aspx)并注意到“静态跨度”部分。我检查了一下,并将其设置为“自动(排除)”,因此将其更改为“包括”,但是不幸的是,这没有什么区别。我仍然收到invProduct is undefined
消息。我也尝试了简单,invLine.Product.Description
但它给出了相同的错误。
在这种情况下,解决方案很简单。我的数据有误,因此Lightswitch可以正确执行它的工作!
在我的Invoices
表中,产品代码类似于,'A123'
而在我的Products
表中,产品代码为'A123 '
(在右侧填充空格)。对数据执行SQL查询时,它可以匹配记录,但是Lightswitch(正确)将2个字段视为不同,因此无法将它们关联起来。
我可能在这上面浪费了几个小时,但是当学习到一些东西时,它并没有浪费……或者,我会告诉自己!
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句