Search code examples
lightswitch-2012

copying one record to another in lightswitch


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.


Solution

  • 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