﻿<?xml version="1.0" encoding="utf-8"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:media="http://search.yahoo.com/mrss/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><title>Intersoft Community - command</title><link>http://www.intersoftsolutions.com/Community/Tags/command/</link><description /><generator>http://www.intersoftsolutions.com</generator><language>en</language><copyright>Copyright 2002 - 2015 Intersoft Solutions Corp. All rights reserved.</copyright><ttl>60</ttl><item><title>Duplicate function for MVVM data application </title><link>http://www.intersoftsolutions.com/Community/Tags/command/</link><pubDate>Thu, 13 Oct 2011 16:24:16 GMT</pubDate><dc:creator>mg@hsig.ch</dc:creator><category>MVVM</category><category>command</category><category>generic</category><description>&lt;p&gt;Hi&lt;/p&gt;
&lt;p&gt;I use the ClientUI MVVM data application (WCF RIA SP1) Template.&lt;br /&gt;I would like to integrate a duplicating function. That is, that I would like to copy the selected row and insert it as a duplicate. All column values should be copied except the primary key (GUID). This is to be regenerated by the application.&lt;/p&gt;
&lt;p&gt;I have now created a new command (DuplicateRowCommand) in the class EditableGridViewModelBase. I've bound the command to a UXButton.&lt;/p&gt;&lt;span style="font-family: consolas"&gt;&lt;/span&gt;&lt;span style="font-family: consolas; color: #0000ff"&gt;&lt;span style="font-family: consolas; color: #0000ff"&gt;public&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: consolas"&gt; EditableGridViewModelBase() : &lt;/span&gt;&lt;span style="font-family: consolas; color: #0000ff"&gt;&lt;span style="font-family: consolas; color: #0000ff"&gt;base&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: consolas"&gt;() &lt;p&gt;{&lt;/p&gt;&lt;/span&gt;&lt;span style="font-family: consolas; color: #008000"&gt;&lt;span style="font-family: consolas; color: #008000"&gt;// Batch update is not supported in WCF RIA Services. &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: consolas"&gt;&lt;/span&gt;&lt;span style="font-family: consolas; color: #0000ff"&gt;&lt;span style="font-family: consolas; color: #0000ff"&gt;this&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: consolas"&gt;.IsBatchUpdate = &lt;/span&gt;&lt;span style="font-family: consolas; color: #0000ff"&gt;&lt;span style="font-family: consolas; color: #0000ff"&gt;false&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: consolas"&gt;; &lt;/span&gt;&lt;span style="font-family: consolas; color: #0000ff"&gt;&lt;span style="font-family: consolas; color: #0000ff"&gt;this&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: consolas"&gt;.AutoEditOperation = &lt;/span&gt;&lt;span style="font-family: consolas; color: #0000ff"&gt;&lt;span style="font-family: consolas; color: #0000ff"&gt;false&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: consolas"&gt;; &lt;/span&gt;&lt;span style="font-family: consolas; color: #0000ff"&gt;&lt;span style="font-family: consolas; color: #0000ff"&gt;...&lt;/span&gt;&lt;/span&gt; &lt;span style="font-family: consolas"&gt;&lt;/span&gt;&lt;span style="font-family: consolas; color: #0000ff"&gt;&lt;span style="font-family: consolas; color: #0000ff"&gt;this&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: consolas"&gt;.ValidateRowCommand = &lt;/span&gt;&lt;span style="font-family: consolas; color: #0000ff"&gt;&lt;span style="font-family: consolas; color: #0000ff"&gt;new&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: consolas"&gt; &lt;/span&gt;&lt;span style="font-family: consolas; color: #2b91af"&gt;&lt;span style="font-family: consolas; color: #2b91af"&gt;DelegateCommand&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: consolas"&gt;(ExecuteValidateRow); &lt;/span&gt;&lt;span style="font-family: consolas; color: #0000ff"&gt;&lt;span style="font-family: consolas; color: #0000ff"&gt;this&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: consolas"&gt;.DuplicateRowCommand = &lt;/span&gt;&lt;span style="font-family: consolas; color: #0000ff"&gt;&lt;span style="font-family: consolas; color: #0000ff"&gt;new&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: consolas"&gt; &lt;/span&gt;&lt;span style="font-family: consolas; color: #2b91af"&gt;&lt;span style="font-family: consolas; color: #2b91af"&gt;DelegateCommand&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: consolas"&gt;(ExecuteDuplicateRow); &lt;p&gt;}&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/span&gt;&lt;span style="font-family: consolas"&gt;&lt;/span&gt;&lt;span style="font-family: consolas; color: #0000ff"&gt;&lt;span style="font-family: consolas; color: #0000ff"&gt;private&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: consolas"&gt; &lt;/span&gt;&lt;span style="font-family: consolas; color: #0000ff"&gt;&lt;span style="font-family: consolas; color: #0000ff"&gt;void&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: consolas"&gt; ExecuteDuplicateRow(&lt;/span&gt;&lt;span style="font-family: consolas; color: #0000ff"&gt;&lt;span style="font-family: consolas; color: #0000ff"&gt;object&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: consolas"&gt; parameter) &lt;p&gt;{&lt;/p&gt;&lt;/span&gt;&lt;span style="font-family: consolas; color: #0000ff"&gt;&lt;span style="font-family: consolas; color: #0000ff"&gt;this&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: consolas"&gt;.EditableProductsSource.Insert(&lt;/span&gt;&lt;span style="font-family: consolas; color: #0000ff"&gt;&lt;span style="font-family: consolas; color: #0000ff"&gt;this&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: consolas"&gt;.SelectedItem); &lt;/span&gt;&lt;span style="font-family: consolas; color: #0000ff"&gt;&lt;span style="font-family: consolas; color: #0000ff"&gt;if&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: consolas"&gt; (!&lt;/span&gt;&lt;span style="font-family: consolas; color: #0000ff"&gt;&lt;span style="font-family: consolas; color: #0000ff"&gt;this&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: consolas"&gt;.IsBatchUpdate) &lt;/span&gt;&lt;span style="font-family: consolas; color: #0000ff"&gt;&lt;span style="font-family: consolas; color: #0000ff"&gt;this&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: consolas"&gt;.SaveChanges(); &lt;/span&gt;&lt;span style="font-family: consolas; color: #0000ff"&gt;&lt;span style="font-family: consolas; color: #0000ff"&gt;else &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: consolas"&gt;&lt;/span&gt;&lt;span style="font-family: consolas; color: #0000ff"&gt;&lt;span style="font-family: consolas; color: #0000ff"&gt;this&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: consolas"&gt;.HasChanges = &lt;/span&gt;&lt;span style="font-family: consolas; color: #0000ff"&gt;&lt;span style="font-family: consolas; color: #0000ff"&gt;true&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: consolas"&gt;; &lt;p&gt;}&lt;/p&gt;&lt;/span&gt;
&lt;p&gt;How / where do I change the primary key? I have problems, because it is a generic class. Should I override ExecuteDuplicateRow in each ViewModel?&lt;br /&gt;How do to I best this?&lt;/p&gt;
&lt;div lang="undefined" _msthash="826319"&gt; &lt;/div&gt;
&lt;div lang="undefined" _msthash="826319"&gt;&lt;strong&gt;A simpler sample is to initialize default values:&lt;/strong&gt;&lt;/div&gt;
&lt;div lang="undefined" _msthash="826319"&gt;How can I add default values? How do I get the "product" object?&lt;/div&gt;
&lt;div lang="undefined" _msthash="826319"&gt;((parameter.GetType())(parameter).ProductName = "New Product" does not work...&lt;/div&gt;
&lt;div lang="undefined" _msthash="826319"&gt; &lt;/div&gt;&lt;span style="font-family: consolas"&gt;&lt;/span&gt;&lt;span style="font-family: consolas; color: #0000ff"&gt;&lt;span style="font-family: consolas; color: #0000ff"&gt;private&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: consolas"&gt; &lt;/span&gt;&lt;span style="font-family: consolas; color: #0000ff"&gt;&lt;span style="font-family: consolas; color: #0000ff"&gt;void&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: consolas"&gt; ExecutePrepareNewRow(&lt;/span&gt;&lt;span style="font-family: consolas; color: #0000ff"&gt;&lt;span style="font-family: consolas; color: #0000ff"&gt;object&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: consolas"&gt; parameter) &lt;p&gt;{&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: consolas; color: #008000"&gt;&lt;span style="font-family: consolas; color: #008000"&gt;// It's possible to initialize the new row with default values &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/span&gt;
&lt;p&gt;&lt;span style="font-family: consolas; color: #008000"&gt;&lt;span style="font-family: consolas; color: #008000"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: consolas"&gt;&lt;/span&gt;&lt;span style="font-family: consolas; color: #008000"&gt;&lt;span style="font-family: consolas; color: #008000"&gt;// Example: &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: consolas; color: #008000"&gt;&lt;span style="font-family: consolas; color: #008000"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: consolas"&gt;&lt;/span&gt;&lt;span style="font-family: consolas; color: #008000"&gt;&lt;span style="font-family: consolas; color: #008000"&gt;// product.ProductName = "New Product"; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: consolas; color: #008000"&gt;&lt;span style="font-family: consolas; color: #008000"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: consolas"&gt;&lt;/span&gt;&lt;span style="font-family: consolas; color: #0000ff"&gt;&lt;span style="font-family: consolas; color: #0000ff"&gt;this&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: consolas"&gt;.NewItem = &lt;/span&gt;&lt;span style="font-family: consolas; color: #0000ff"&gt;&lt;span style="font-family: consolas; color: #0000ff"&gt;this&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: consolas"&gt;.EditableProductsSource.Create() &lt;/span&gt;&lt;span style="font-family: consolas; color: #0000ff"&gt;&lt;span style="font-family: consolas; color: #0000ff"&gt;as&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: consolas"&gt; T;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: consolas"&gt;&lt;/span&gt;&lt;span style="font-family: consolas; color: #0000ff"&gt;&lt;span style="font-family: consolas; color: #0000ff"&gt;this&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: consolas"&gt;.EditableProductsSource.Insert(&lt;/span&gt;&lt;span style="font-family: consolas; color: #0000ff"&gt;&lt;span style="font-family: consolas; color: #0000ff"&gt;this&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: consolas"&gt;.NewItem); 
&lt;p&gt;}&lt;/p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Thanks for help!&lt;/p&gt;
&lt;p&gt;Michael&lt;/p&gt;</description></item></channel></rss>