copying one record to another in lightswitch

1.8k views Asked by At

Does anyone know how to do this. I googled it but it is an old tutorial video for 2010 and doesn't seem to match up proper instructions on how to do it. I'm using 2012. I would like to add a copy button and then click on a record , click copy and have it add a new record with the values defaulted from the one you selected.

1

There are 1 answers

2
embedded.kyle On BEST ANSWER

In my app I track sales quotes. I have the ability to make and keep revisions of quotes. I do this by having a button to make a new revision that starts by copying the previous revision.

You didn't mention which language you were using. I'm using VB.NET but most of the code is very simple stuff, just declarations and assignments, so you should be able to translate it to C# very easily. Replace the keyword Me by this and you're most of the way there.

Inside my button's _Execute() code, I first make a local copy of the record to be copied:

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

I then add a new record to the database:

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

And copy over the relevant information:

'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

That will make a copy of the currently selected record if each value in the record is a single value. If a value has a relationship to another table and contains several records, you will need to loop through that value.

For instance, the above is just the general information for my quote. I also have a relationship to a table of quote line items. Each quote has several line items and all of these need to be copied as well. So I need to loop through each line item and create a duplicate of it as well.

'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