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