在灯开关中将一条记录复制到另一条记录

时间:2014-01-08 16:11:18

标签: lightswitch-2012

有谁知道如何做到这一点。我用谷歌搜索了它,但它是2010年的一个旧的教程视频,似乎没有匹配如何做到这一点的正确说明。我正在使用2012。 我想添加一个复制按钮,然后单击一个记录,单击复制并让它添加一个新记录,其中的值默认为您选择的记录。

1 个答案:

答案 0 :(得分:0)

在我的应用中,我跟踪销售报价。我有能力制作并保留报价的修订版。我这样做是通过一个按钮来制作一个新的修订版本,该版本从复制先前版本开始。

您没有提到您使用的是哪种语言。我使用的是VB.NET,但大部分代码都是非常简单的东西,只是声明和赋值,所以你应该能够很容易地将它转换为C#。将关键字Me替换为this,您就是那里的大部分。

在我的按钮的_Execute()代码中,我首先制作要复制的记录的本地副本:

'Create a quote object to hold the quote to be revised
Dim CurrentRev As Quote
CurrentRev = Me.qQuoteByFirm.SelectedItem

然后我将新记录添加到数据库中:

'Add a new quote entity to the database
Me.qQuoteByFirm.AddNew()

复制相关信息:

'Copy the necessary relevant values to the new quote
Me.qQuoteByFirm.SelectedItem.QuoteNumber = CurrentRev.QuoteNumber
Me.qQuoteByFirm.SelectedItem.RepFirm = CurrentRev.RepFirm
Me.qQuoteByFirm.SelectedItem.Customer = CurrentRev.Customer
Me.qQuoteByFirm.SelectedItem.QuoteStatus = CurrentRev.QuoteStatus

如果记录中的每个值都是单个值,那么它将复制当前选定的记录。如果某个值与另一个表有关系并且包含多个记录,则需要循环该值。

例如,以上只是我引用的一般信息。我还与报价行项目表有关系。每个报价都有几个订单项,所有这些都需要复制。所以我需要遍历每个订单项并创建它的副本。

'Duplicate all associate quote line items
For Each item In CurrentRev.QuoteLines
    Me.qLineItemsByQuoteID.AddNew()
    Me.qLineItemsByQuoteID.SelectedItem.ItemNo = item.ItemNo
    Me.qLineItemsByQuoteID.SelectedItem.ProductQty = item.ProductQty
    Me.qLineItemsByQuoteID.SelectedItem.Description = item.Description
    Me.qLineItemsByQuoteID.SelectedItem.SellPrice = item.SellPrice
    Me.qLineItemsByQuoteID.SelectedItem.PartNo = item.PartNo
Next