<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://www.infragistics.com/community/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"><channel><title>Infragistics Community</title><link>http://www.infragistics.com/community/blogs/</link><description>Infragistics Community</description><dc:language>en-US</dc:language><generator>CommunityServer 2008.5 SP3 (Build: 36.8414)</generator><item><title>FREE Metro Light and Dark Themes for WPF and Silverlight Microsoft Controls</title><link>http://www.infragistics.com/community/blogs/blagunas/archive/2013/05/25/free-metro-light-and-dark-themes-for-wpf-and-silverlight-microsoft-controls.aspx</link><pubDate>Sat, 25 May 2013 00:52:39 GMT</pubDate><guid isPermaLink="false">7a8b7c76-b7ad-48e0-9694-5b04ca132ed0:405257</guid><dc:creator>Brian Lagunas</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;The quest for a good application theme never ends.&amp;nbsp; You spend hours scouring the realms of Google and Bing looking for a clean, modern, and touch friendly theme to use in your application.&amp;nbsp; That is, until now!&amp;nbsp; If you have been looking for a free Metro theme for WPF and Silverlight, then look no further.&lt;/p&gt; &lt;p&gt;Infragistics ships a number of great themes with their NetAdvantage for &lt;a href="http://www.infragistics.com/products/wpf" target="_blank"&gt;WPF&lt;/a&gt; and &lt;a href="http://www.infragistics.com/products/silverlight/" target="_blank"&gt;Silverlight&lt;/a&gt; products.&amp;nbsp; As the Product Manager for these controls, I started asking myself, “Why should we keep these great themes to ourselves?”.&amp;nbsp; If you know me, you know I am a hard core XAML developer and I am all about community.&amp;nbsp; Heck, I single handedly wrote the most popular Extended WPF toolkit in the world, and I provided it to everyone for free.&amp;nbsp; So starting today, I am excited to announce that I am going to be giving away, all of our themes for the standard WPF and Silverlight Microsoft controls.&amp;nbsp; Yes, I said &lt;strong&gt;GIVING AWAY&lt;/strong&gt;, as in &lt;strong&gt;FREE&lt;/strong&gt;.&amp;nbsp; &lt;/p&gt; &lt;p&gt;There is a catch though.&amp;nbsp; We will &lt;strong&gt;NOT&lt;/strong&gt; support every single Microsoft control.&amp;nbsp; Why?&amp;nbsp; Well, because we would prefer for you to use our controls instead.&amp;nbsp; For example, we will not be providing a style for the Microsoft DataGrid because we have a much better xamDataGrid control.&amp;nbsp; You get the idea.&amp;nbsp; Also,&amp;nbsp; I am not going to give them to you all at once.&amp;nbsp; I am going to release them a one at a time.&amp;nbsp; Why?&amp;nbsp; Well, I want to see what kind of response I get from the community.&amp;nbsp; If I get zero response or support from the community, then there is no need to keep releasing themes.&amp;nbsp; I don’t want to waste my time, or the developers who create these themes time.&amp;nbsp; On the other hand, if the community gives me an overwhelming show of support, then I will be releasing more themes.&amp;nbsp; Seems fair, wouldn’t you agree?&lt;/p&gt; &lt;p&gt;Today’s free theme is a clean, modern, touch friendly theme in the form of the Infragistics’ &lt;strong&gt;Metro Theme&lt;/strong&gt;.&amp;nbsp; You will be getting both a Light and Dark version.&lt;/p&gt; &lt;p&gt;Wait, did you say “Metro”?&amp;nbsp; Yes, I said Metro.&amp;nbsp; Why?&amp;nbsp; Because, that’s what everyone knows it as no matter how many times Microsoft tries to rename it.&amp;nbsp; As we all know by now, there is a ton of confusion around the term “Metro”.&amp;nbsp; First its “Metro”, then it’s “Modern UI”, then it’s “Microsoft Design Style”, and now it’s…&amp;nbsp; Well, I don’t know what it is right now.&amp;nbsp; What’s important here is not the name, but rather the theme itself.&amp;nbsp; Now on to the free theme.&lt;/p&gt; &lt;h2&gt;Silverlight&lt;/h2&gt; &lt;p&gt;First up is the Silverlight version of the Infragistics Metro Theme.&amp;nbsp; We are providing a Metro style for each primitive control that appears in the Visual Studio toolbox, the controls that ship with the Silverlight SDK, and of course some controls from the Silverlight Toolkit.&amp;nbsp; As you can see, we organized the themes by their respective source so that you have the option to use which ever control you need and not add any unnecessary dependencies on other assemblies.&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.infragistics.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/blagunas.metablogapi/5127.image_5F00_2.png"&gt;&lt;img title="Infragistics Light and Dark Metro Theme Structure" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;padding-top:0px;padding-left:0px;border-left:0px;display:inline;padding-right:0px;" border="0" alt="Infragistics Light and Dark Metro Theme Structure" src="http://www.infragistics.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/blagunas.metablogapi/0841.image_5F00_thumb.png" width="347" height="297" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Adding the theme to your application is very simple.&amp;nbsp; Just include the resource files for the controls you require the Resources section of your view, or in your App.xaml.&lt;/p&gt; &lt;p&gt; &lt;div id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:2126ce0e-a781-4be1-a1e9-ee9de4acd8c8" class="wlWriterEditableSmartContent" style="float:none;padding-bottom:0px;padding-top:0px;padding-left:0px;margin:0px;display:inline;padding-right:0px;"&gt; &lt;div style="border:#000080 1px solid;color:#000;font-family:&amp;#39;Courier New&amp;#39;, Courier, Monospace;font-size:10pt;"&gt; &lt;div style="background-color:#ffffff;max-height:300px;overflow:auto;padding:2px 5px;"&gt;&lt;span style="background:#ffffff;color:#000000;"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515;"&gt;ResourceDictionary&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;     &lt;span style="background:#ffffff;color:#000000;"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515;"&gt;ResourceDictionary.MergedDictionaries&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;         &lt;span style="background:#ffffff;color:#000000;"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#008000;"&gt;&amp;lt;!-- Light Theme --&amp;gt;&lt;/span&gt;&lt;br /&gt;         &lt;span style="background:#ffffff;color:#000000;"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515;"&gt;ResourceDictionary&lt;/span&gt;&lt;span style="background:#ffffff;color:#ff0000;"&gt; Source&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff;"&gt;=&amp;quot;Themes/Metro/Light/Metro.MSControls.Core.Implicit.xaml&amp;quot; /&amp;gt;&lt;/span&gt;&lt;br /&gt;         &lt;span style="background:#ffffff;color:#000000;"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515;"&gt;ResourceDictionary&lt;/span&gt;&lt;span style="background:#ffffff;color:#ff0000;"&gt; Source&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff;"&gt;=&amp;quot;Themes/Metro/Light/Metro.MSControls.SDK.Implicit.xaml&amp;quot; /&amp;gt;&lt;/span&gt;&lt;br /&gt;         &lt;span style="background:#ffffff;color:#000000;"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515;"&gt;ResourceDictionary&lt;/span&gt;&lt;span style="background:#ffffff;color:#ff0000;"&gt; Source&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff;"&gt;=&amp;quot;Themes/Metro/Light/Metro.MSControls.Toolkit.Implicit.xaml&amp;quot; /&amp;gt;&lt;/span&gt;&lt;br /&gt;     &lt;span style="background:#ffffff;color:#000000;"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515;"&gt;ResourceDictionary.MergedDictionaries&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt; &lt;span style="background:#ffffff;color:#000000;"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515;"&gt;ResourceDictionary&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt; &lt;/div&gt; &lt;/div&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;You can see the full list of supported controls in the list below.&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Accordion&lt;/li&gt; &lt;li&gt;AutoCompleteBox&lt;/li&gt; &lt;li&gt;BusyIndicator&lt;/li&gt; &lt;li&gt;Button&lt;/li&gt; &lt;li&gt;CheckBox&lt;/li&gt; &lt;li&gt;ComboBox&lt;/li&gt; &lt;li&gt;Expander &lt;/li&gt; &lt;li&gt;GridSplitter&lt;/li&gt; &lt;li&gt;Label&lt;/li&gt; &lt;li&gt;ListBox&lt;/li&gt; &lt;li&gt;PasswordBox&lt;/li&gt; &lt;li&gt;ProgressBar&lt;/li&gt; &lt;li&gt;RadioButton&lt;/li&gt; &lt;li&gt;Rating&lt;/li&gt; &lt;li&gt;RepeatButton&lt;/li&gt; &lt;li&gt;Slider&lt;/li&gt; &lt;li&gt;TabControl&lt;/li&gt; &lt;li&gt;TextBox&lt;/li&gt; &lt;li&gt;ToggleButton&lt;/li&gt; &lt;li&gt;Tooltip&lt;/li&gt;&lt;/ul&gt; &lt;h5&gt;Metro Theme Light&lt;/h5&gt; &lt;p&gt;&lt;a href="http://www.infragistics.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/blagunas.metablogapi/7380.Metro_2D00_Theme_2D00_Light_2D00_Silverlight_5F00_2.jpg"&gt;&lt;img title="Metro Theme Light Silverlight" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="Metro Theme Light Silverlight" src="http://www.infragistics.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/blagunas.metablogapi/8345.Metro_2D00_Theme_2D00_Light_2D00_Silverlight_5F00_thumb.jpg" width="644" height="279" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;h5&gt;Metro Theme Dark&lt;/h5&gt; &lt;p&gt;&lt;a href="http://www.infragistics.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/blagunas.metablogapi/1401.Metro_2D00_Theme_2D00_Dark_2D00_Silverlight_5F00_2.jpg"&gt;&lt;img title="Metro Theme Dark Silverlight" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="Metro Theme Dark Silverlight" src="http://www.infragistics.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/blagunas.metablogapi/5040.Metro_2D00_Theme_2D00_Dark_2D00_Silverlight_5F00_thumb.jpg" width="644" height="299" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;h2&gt;WPF&lt;/h2&gt; &lt;p&gt;Next up is the WPF version of the Infragistics’ Metro Theme.&amp;nbsp; Just like the Silverlight version, we are providing you with styles for the primitive WPF controls that appear in the Visual Studio toolbox, as well as some controls in the WPF Toolkit.&amp;nbsp; Just like for the Silverlight version, we organized the themes by their respective source so that if you don’t use the WPF toolkit, there will be no need for your code to take a dependency on it..&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.infragistics.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/blagunas.metablogapi/4150.image_5F00_4.png"&gt;&lt;img title="Infragistics Light and Dark Metro Theme Structure for WPF" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;padding-top:0px;padding-left:0px;border-left:0px;display:inline;padding-right:0px;" border="0" alt="Infragistics Light and Dark Metro Theme Structure for WPF" src="http://www.infragistics.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/blagunas.metablogapi/4456.image_5F00_thumb_5F00_1.png" width="343" height="258" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Adding the theme to your applicantion is the same as the Silverlight version.&amp;nbsp; Just add the resource dictionaries to the Resources section of your View or App.xaml.&lt;/p&gt; &lt;p&gt; &lt;div id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:f2d96c0f-8b80-4968-bd4c-b7d4a8c7f847" class="wlWriterEditableSmartContent" style="float:none;padding-bottom:0px;padding-top:0px;padding-left:0px;margin:0px;display:inline;padding-right:0px;"&gt; &lt;div style="border:#000080 1px solid;color:#000;font-family:&amp;#39;Courier New&amp;#39;, Courier, Monospace;font-size:10pt;"&gt; &lt;div style="background-color:#ffffff;max-height:300px;overflow:auto;padding:2px 5px;"&gt;&lt;span style="background:#ffffff;color:#000000;"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515;"&gt;ResourceDictionary&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;     &lt;span style="background:#ffffff;color:#000000;"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515;"&gt;ResourceDictionary.MergedDictionaries&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;         &lt;span style="background:#ffffff;color:#000000;"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#008000;"&gt;&amp;lt;!-- Dark Theme --&amp;gt;&lt;/span&gt;&lt;br /&gt;         &lt;span style="background:#ffffff;color:#000000;"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515;"&gt;ResourceDictionary&lt;/span&gt;&lt;span style="background:#ffffff;color:#ff0000;"&gt; Source&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff;"&gt;=&amp;quot;Themes/Metro/Dark/MetroDark.MSControls.Core.Implicit.xaml&amp;quot; /&amp;gt;&lt;/span&gt;&lt;br /&gt;         &lt;span style="background:#ffffff;color:#000000;"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515;"&gt;ResourceDictionary&lt;/span&gt;&lt;span style="background:#ffffff;color:#ff0000;"&gt; Source&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff;"&gt;=&amp;quot;Themes/Metro/Dark/MetroDark.MSControls.Toolkit.Implicit.xaml&amp;quot; /&amp;gt;&lt;/span&gt;&lt;br /&gt;     &lt;span style="background:#ffffff;color:#000000;"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515;"&gt;ResourceDictionary.MergedDictionaries&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt; &lt;span style="background:#ffffff;color:#000000;"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515;"&gt;ResourceDictionary&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt; &lt;/div&gt; &lt;/div&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Here is the full list of support controls:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Accordion&lt;/li&gt; &lt;li&gt;AutoCompleteBox&lt;/li&gt; &lt;li&gt;Button&lt;/li&gt; &lt;li&gt;CheckBox&lt;/li&gt; &lt;li&gt;ComboBox&lt;/li&gt; &lt;li&gt;Expander&lt;/li&gt; &lt;li&gt;GridSplitter&lt;/li&gt; &lt;li&gt;GroupBox&lt;/li&gt; &lt;li&gt;Label&lt;/li&gt; &lt;li&gt;ListBox&lt;/li&gt; &lt;li&gt;PasswordBox&lt;/li&gt; &lt;li&gt;ProgressBar&lt;/li&gt; &lt;li&gt;RadioButton&lt;/li&gt; &lt;li&gt;Rating&lt;/li&gt; &lt;li&gt;RepeatButton&lt;/li&gt; &lt;li&gt;Slider&lt;/li&gt; &lt;li&gt;TextBox&lt;/li&gt; &lt;li&gt;ToggleButton&lt;/li&gt; &lt;li&gt;Tooltip&lt;/li&gt;&lt;/ul&gt; &lt;h5&gt;Metro Theme Light&lt;/h5&gt; &lt;p&gt;&lt;a href="http://www.infragistics.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/blagunas.metablogapi/3566.Metro_2D00_Theme_2D00_Light_2D00_WPF_5F00_2.jpg"&gt;&lt;img title="Metro Theme Light WPF" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="Metro Theme Light WPF" src="http://www.infragistics.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/blagunas.metablogapi/4544.Metro_2D00_Theme_2D00_Light_2D00_WPF_5F00_thumb.jpg" width="644" height="258" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;h5&gt;Metro Theme Dark&lt;/h5&gt; &lt;p&gt;&lt;a href="http://www.infragistics.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/blagunas.metablogapi/8863.Metro_2D00_Theme_2D00_Dark_2D00_WPF_5F00_2.jpg"&gt;&lt;img title="Metro Theme Dark WPF" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="Metro Theme Dark WPF" src="http://www.infragistics.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/blagunas.metablogapi/5226.Metro_2D00_Theme_2D00_Dark_2D00_WPF_5F00_thumb.jpg" width="644" height="253" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;h2&gt;That’s All Folks&lt;/h2&gt; &lt;p&gt;I hope you enjoy this theme and find it useful.&amp;nbsp; If you like this theme and want me to continue to give away our other themes, please let me know.&amp;nbsp; Otherwise, I will just assume you’re not interested and move on to other things.&amp;nbsp; Go ahead, &lt;a href="http://brianlagunas.com/downloads/source/freewpfsilverlightmetrothemes.zip" target="_blank"&gt;download the Metro Light and Dark Themes for WPF and Silverlight Microsoft Controls&lt;/a&gt; and let me know what you think.&amp;nbsp; After you’ve done that, feel free contact me on my &lt;a href="http://brianlagunas.com/"&gt;blog&lt;/a&gt;, connect with me on Twitter (&lt;a href="http://twitter.com/brianlagunas"&gt;@brianlagunas&lt;/a&gt;), or leave a comment below for any questions or comments you may have.&lt;/p&gt; &lt;p&gt;Enjoy!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.infragistics.com/community/aggbug.aspx?PostID=405257" width="1" height="1"&gt;</description><category domain="http://www.infragistics.com/community/blogs/blagunas/archive/tags/WPF/default.aspx">WPF</category><category domain="http://www.infragistics.com/community/blogs/blagunas/archive/tags/silverlight/default.aspx">silverlight</category></item><item><title>NetAdvantage for ASP.NET Release Notes - May: 12.1, 12.2, 13.1 Service Releases</title><link>http://www.infragistics.com/community/blogs/engineering/archive/2013/05/24/netadvantage-for-asp-net-release-notes-may-12-1-12-2-13-1-service-releases.aspx</link><pubDate>Fri, 24 May 2013 15:50:00 GMT</pubDate><guid isPermaLink="false">7a8b7c76-b7ad-48e0-9694-5b04ca132ed0:405214</guid><dc:creator>[Infragistics] Aaron Marisi</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;With every release comes a set of release notes that reflects the state of resolved bugs and new additions from the previous release. You&amp;rsquo;ll find the notes useful to help determine the resolution of existing issues from a past release and as a means of determining where to test your applications when upgrading from one version to the next.&lt;/p&gt;
&lt;p&gt;Release notes are available in both PDF and Excel formats. The PDF summarizes the changes to this release along with a listing of each item. The Excel sheet includes each change item and makes it easy for you to sort, filter and otherwise manipulate the data to your liking.&lt;/p&gt;
&lt;h2&gt;Download the Release Notes&lt;/h2&gt;
&lt;h3&gt;ASP.NET 2012 Volume 1&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://dl.infragistics.com/community/aspnet/releasenotes/2013/05/12-1-20121-2236_ASPNET_RELEASE_NOTES_PDF.pdf"&gt;PDF (NetAdvantage for ASP.NET 2012 Volume 1, Build 12.1.20121.2236)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://dl.infragistics.com/community/aspnet/releasenotes/2013/05/12-1-20121-2236_ASPNET_RELEASE_NOTES_EXCEL.xlsx"&gt;Excel (NetAdvantage for ASP.NET 2012 Volume 1, Build 12.1.20121.2236)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;ASP.NET 2012 Volume 2&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://dl.infragistics.com/community/aspnet/releasenotes/2013/05/12-2-20122-2147_ASPNET_RELEASE_NOTES_PDF.pdf"&gt;PDF (NetAdvantage for ASP.NET 2012 Volume 2, Build 12.2.20122.2147)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://dl.infragistics.com/community/aspnet/releasenotes/2013/05/12-2-20122-2147_ASPNET_RELEASE_NOTES_EXCEL.xlsx"&gt;Excel (NetAdvantage for ASP.NET 2012 Volume 2, Build 12.2.20122.2147)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;ASP.NET 2013 Volume 1&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://dl.infragistics.com/community/aspnet/releasenotes/2013/05/13-1-20131-2045_ASPNET_RELEASE_NOTES_PDF.pdf"&gt;PDF (NetAdvantage for ASP.NET 2013 Volume 1, Build 13.1.20131.2045)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://dl.infragistics.com/community/aspnet/releasenotes/2013/05/13-1-20131-2045_ASPNET_RELEASE_NOTES_EXCEL.xlsx"&gt;Excel (NetAdvantage for ASP.NET 2013 Volume 1, Build 13.1.20131.2045)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.infragistics.com/community/aggbug.aspx?PostID=405214" width="1" height="1"&gt;</description><category domain="http://www.infragistics.com/community/blogs/engineering/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://www.infragistics.com/community/blogs/engineering/archive/tags/Release+Notes/default.aspx">Release Notes</category><category domain="http://www.infragistics.com/community/blogs/engineering/archive/tags/12.1/default.aspx">12.1</category><category domain="http://www.infragistics.com/community/blogs/engineering/archive/tags/12.2/default.aspx">12.2</category><category domain="http://www.infragistics.com/community/blogs/engineering/archive/tags/13.1/default.aspx">13.1</category></item><item><title>Responsive Web Design with jQuery Grids: A closer look</title><link>http://www.infragistics.com/community/blogs/damyan_petev/archive/2013/05/23/responsive-web-design-with-jquery-grids-a-closer-look.aspx</link><pubDate>Thu, 23 May 2013 21:11:00 GMT</pubDate><guid isPermaLink="false">7a8b7c76-b7ad-48e0-9694-5b04ca132ed0:405126</guid><dc:creator>[Infragistics] Damyan Petev</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;&lt;img title="Responsive Web Design with jQuery Grids" style="float:left;margin:0px 5px 0px 0px;display:inline;" alt="Responsive Web Design with jQuery Grids" align="left" src="http://media.infragistics.com/community/Release/13.1/jQuery/responsive-grid/responsive-web-design-jquery-grids.png" /&gt;I really hope I got you excited about the &lt;a title="jQuery Grids and Responsive Web Design" href="http://www.infragistics.com/community/blogs/damyan_petev/archive/2013/04/12/jquery-grids-and-responsive-web-design.aspx" target="_blank"&gt;Responsive Web Design mode for the Ignite UI Grids last time&lt;/a&gt; – as it is the kind of an unique feature that truly makes this jQuery control stand out! As previously explained it’s not exactly a simple thing to make a grid responsive, but our team made serious considerations on how to best approach this and I do believe they’ve pretty much nailed it and this will turn out to be very useful addition. There were also plenty of things that can’t fit in a single blog, plus the fact that the actual feature was not yet released so there wasn’t too much of demo material to see. So now, with &lt;a title="Infragistics Releases 13.1!" href="http://www.infragistics.com/community/blogs/marketing/archive/2013/04/18/infragistics-releases-13-1.aspx" target="_blank"&gt;13.1 out&lt;/a&gt; and even accompanied by a &lt;a title="Ignite UI Release Notes - April: 13.1 Release and Service Release" href="http://www.infragistics.com/community/blogs/engineering/archive/2013/04/25/ignite-ui-release-notes-april-13-1-release-and-service-release.aspx" target="_blank"&gt;service release&lt;/a&gt;, without further due, let’s dig into the technical stuff! I’ll start with some interesting design considerations and even potential pitfalls related with Responsive Web Design and then have some specific Grid tips.&lt;/p&gt; &lt;h1&gt;A Getting Started, of sorts&lt;/h1&gt; &lt;p&gt;Now these are more of honorary mentions as the most basic stuff were already covered elsewhere, but hey, it doesn’t hurt to have them on a speed dial. So in case you missed it - here’s a nice summary on &lt;a title="Building responsive web design using CSS3 Media Queries!" href="http://www.infragistics.com/community/blogs/anarain/archive/2012/09/30/building-responsive-web-design-using-css3-media-queries.aspx" target="_blank"&gt;Building responsive web design using CSS3 Media Queries!&lt;/a&gt; &lt;/p&gt; &lt;p&gt;And because creating a Responsive app is all in the name of providing users with a better experience I figured some UX tips and food for thought are in order. Our &lt;a title="D3 Services - User Experience Design and Training - UI Architect Experts" href="http://d3.infragistics.com/" target="_blank"&gt;Services or as of recently D3&lt;/a&gt; (from Discover – Design – Develop) have a solid expertise in the field and they share some of it in their blogs. For example this on &lt;a title="UX of Responsive Web Design | User Experience Blogs - Blogs by Designer - UI Architects Blogs" href="http://d3.infragistics.com/ux-of-responsive-web-design/" target="_blank"&gt;&lt;strong&gt;UX of Responsive Web Design&lt;/strong&gt;&lt;/a&gt; you should definitely check out! There’s a whole lot more on UX, Design and usability and I highly recommend keeping an eye on those. &lt;/p&gt; &lt;p&gt;Once you have technology and design considerations in check, I’d like to turn your attention to the now available &lt;strong&gt;Documentation&lt;/strong&gt; for the &lt;a title="Responsive Web Design (RWD) Mode (igGrid) - Ignite UI&amp;trade; Online Help ::  2013.1" href="http://help.infragistics.com/NetAdvantage/jQuery/2013.1/CLR4.0?page=igGrid_Responsive_Web_Design_Mode_LandingPage.html" target="_blank"&gt;igGrid Responsive Web Design (RWD) Mode&lt;/a&gt;. There’s an good coverage on the theory behind this and also a good amount of examples! Speaking of which, you can also check out our &lt;strong&gt;samples&lt;/strong&gt; for &lt;a title="Responsive Web Design Custom Mode Template Switching - Ignite UI samples" href="http://www.infragistics.com/products/jquery/sample/grid/responsive-web-design-custom-mode-template-switching" target="_blank"&gt;Responsive Web Design Custom Mode Template Switching&lt;/a&gt; and &lt;a title="Responsive Web Design Mode of the Grid with Twitter Bootstrap - Ingnite UI samples" href="http://www.infragistics.com/products/jquery/sample/grid/responsive-web-design-mode-of-the-grid-with-twitter-bootstrap" target="_blank"&gt;Responsive Web Design Mode of the Grid with Twitter Bootstrap&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Additional considerations&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Some “good to know about” extras&amp;nbsp; – like the browser viewport. One of the most important things to consider is that many (if not all) smartphone browsers will &amp;#39;lie&amp;#39; about their dimensions. It&amp;#39;s not a bad thing, mind you – most phones these days have such high &lt;a title="Dots per inch - Wikipedia" href="http://en.wikipedia.org/wiki/Dots_per_inch" target="_blank"&gt;dpi&lt;/a&gt; that it will be impossible to read and interact normally with pages where everything is shrunk to the native resolution. Instead, as you can read on &lt;a title="CSS pixel ratios (or, why all mobile sites are 320 pixels)" href="http://gamon.org/blog/2013/04/26/css-pixel-ratios-or-why-all-mobile-sites-are-320-pixels/" target="_blank"&gt;CSS pixel ratios (or, why all mobile sites are 320 pixels)&lt;/a&gt;,&amp;nbsp; pixels we would use for web development are now relative. The term ‘CSS pixels’ also pops up here and there, but basically the browser will almost always scale the pixels down (so 1 pixel will actually be multiple physical ones), which in term affects the browser viewport dimensions. Those dimensions, usually wider than the screen, are still small enough to squish a non-responsive page and big enough to force the user to scroll. This is where the all-time favorite meta tag comes in setting the viewport to match the device width (which removes that annoying scrolling) but limits your space further, something in the range of 320 – 460 of them virtual pixels! Remember the &lt;a title="Scaffolding &amp;middot; Bootstrap" href="http://twitter.github.io/bootstrap/scaffolding.html#responsive" target="_blank"&gt;utility class table&lt;/a&gt; from Bootstrap I showed last time? I hope it does it make sense now why phones end up in their respective visibility class even in landscape. &lt;/p&gt; &lt;p&gt;On the other side are tablets where many have a pixel ratio of 1 or 2 in the case of retina displays, but for all intents and purposes tablets usually hit the desktop size mark in landscape and only get to the tablet-specific styles in portrait. There’s a very large and very incomplete &lt;a title="List of displays by pixel density on Wikipedia" href="http://en.wikipedia.org/wiki/List_of_displays_by_pixel_density" target="_blank"&gt;List of displays by pixel density on Wikipedia&lt;/a&gt; if you wan to have a look.&lt;/p&gt; &lt;p&gt;There’s also an interesting issue with setting the&lt;strong&gt; IE10 viewport&lt;/strong&gt; in CSS (as is per recommendation) rather than using the meta tag. The issue came out of nowhere and this blog on &lt;a title="Responsive Design in IE10 on Windows Phone 8" href="http://mattstow.com/responsive-design-in-ie10-on-windows-phone-8.html" target="_blank"&gt;Responsive Design in IE10 on Windows Phone 8&lt;/a&gt; helped me a lot. As it turns out, the bug applies actual physical pixels when using “device-width” in CSS. Eventually I tracked down the issue to Bootstrap’s own CSS - they applied to fix Win 8 apps in snapped mode, but it completely broke Bootstrap pages on Windows Phone. Keep that in mind, there’s a fix provided that feels hacky at best, but it does work so consider it if working with Bootstrap.&lt;/p&gt; &lt;p&gt;Additionally, good things to remember is that touch devices have their special needs and oddities – make sure touch targets are big enough, remember touch events are separate and in the case of the Grid – consider applying the touch-friendly &lt;a title="Grid Windows UI Theme - Ignite UI samples" href="http://www.infragistics.com/products/jquery/sample/grid/grid-metro-theme" target="_blank"&gt;Windows UI Theme&lt;/a&gt;. And once more, have a look around those &lt;a title="User Experience Blogs - Blogs by Designer - UI Architects Blogs" href="http://d3.infragistics.com/insights/blog/" target="_blank"&gt;D3 blogs for mobile and usability related articles&lt;/a&gt; that can help you.&lt;/p&gt; &lt;h1&gt;Merging and Column Hiding&lt;/h1&gt; &lt;p&gt;As I hope it has become clear the Responsive feature allows for both hiding columns through setting and modifying the structure (markup) via templates. The template swapping is a source of quite a few possible modifications, perhaps one of the most useful ones is merging columns, as you may read in the docs. Now I know this might not be necessary, but better safe than sorry: don’t attempt to hide columns through the template or merge them (e.g. writing one less &amp;lt;td&amp;gt; cell). A main thing about the Ignite UI Grid is that is has columns array you usually define or have auto-generated – either way, row templates are designed to do just that – allow you to format the already existing layout! In other words, templated columns MUST match the layout defined or all data properties if generated! You will not get any results if column definitions and markup clash. So, for hiding columns you are stuck with defining column settings (not too pretty if they are a lot, I know).  &lt;p&gt; So how then exactly do you merge columns? Well one option is hiding a column though settings and adding its data to another still visible ones in a template. This is the approach you can see in &lt;a title="Responsive Web Design Custom Mode Template Switching - Ignite UI" href="http://www.infragistics.com/products/jquery/sample/grid/responsive-web-design-custom-mode-template-switching" target="_blank"&gt;our samples&lt;/a&gt; and it works best when the target column header is something that makes sense after you merge, like in that sample the Address taking in the country and city values as well. &lt;p&gt;Another possible way that I personally like is though an &lt;a title="Unbound Columns - Ignite UI&amp;trade; Online Help ::  2013.1" href="http://help.infragistics.com/NetAdvantage/jQuery/2013.1/CLR4.0?page=igGrid_UnboundColumns_Overview.html" target="_blank"&gt;Unbound Column&lt;/a&gt;. That way you can have the unbound setup with multiple data properties and only revealed when other are not. For example take this part of a grid definition where you have first and last name separate and an unbound column to take their place when&amp;nbsp; on phone:&lt;/p&gt; &lt;div id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:cc05da20-bfb5-4a99-84fa-a90fe22a59cb" class="wlWriterEditableSmartContent" style="float:none;padding-bottom:0px;padding-top:0px;padding-left:0px;margin:0px;display:inline;padding-right:0px;"&gt; &lt;div style="border:#000080 1px solid;color:#000;font-family:&amp;#39;Courier New&amp;#39;, Courier, Monospace;font-size:10pt;"&gt; &lt;div style="background:#ddd;max-height:200px;overflow:auto;"&gt; &lt;ol style="background:#ffffff;margin:0 0 0 2.5em;padding:0 0 0 5px;white-space:nowrap;"&gt; &lt;li&gt;&lt;span style="background:#ffffff;color:#000000;"&gt;$(&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515;"&gt;&amp;quot;#grid&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000;"&gt;).igGrid({&lt;/span&gt;&lt;/li&gt; &lt;li&gt;    &lt;span style="background:#ffffff;color:#000000;"&gt;columns : [{&lt;/span&gt;&lt;/li&gt; &lt;li&gt;        &lt;span style="background:#ffffff;color:#000000;"&gt;unbound : &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff;"&gt;true&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000;"&gt;,&lt;/span&gt;&lt;/li&gt; &lt;li&gt;        &lt;span style="background:#ffffff;color:#000000;"&gt;key : &lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515;"&gt;&amp;#39;name&amp;#39;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000;"&gt;,&lt;/span&gt;&lt;/li&gt; &lt;li&gt;        &lt;span style="background:#ffffff;color:#000000;"&gt;dataType : &lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515;"&gt;&amp;#39;string&amp;#39;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000;"&gt;,&lt;/span&gt;&lt;/li&gt; &lt;li&gt;        &lt;span style="background:#ffffff;color:#000000;"&gt;headerText : &lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515;"&gt;&amp;#39;Full Name&amp;#39;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;    &lt;span style="background:#ffffff;color:#000000;"&gt;}, {&lt;/span&gt;&lt;/li&gt; &lt;li&gt;        &lt;span style="background:#ffffff;color:#000000;"&gt;key : &lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515;"&gt;&amp;#39;FirstName&amp;#39;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000;"&gt;,&lt;/span&gt;&lt;/li&gt; &lt;li&gt;        &lt;span style="background:#ffffff;color:#000000;"&gt;dataType : &lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515;"&gt;&amp;#39;string&amp;#39;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000;"&gt;,&lt;/span&gt;&lt;/li&gt; &lt;li&gt;        &lt;span style="background:#ffffff;color:#000000;"&gt;headerText : &lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515;"&gt;&amp;#39;First name&amp;#39;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;    &lt;span style="background:#ffffff;color:#000000;"&gt;}, {&lt;/span&gt;&lt;/li&gt; &lt;li&gt;        &lt;span style="background:#ffffff;color:#000000;"&gt;key : &lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515;"&gt;&amp;#39;LastName&amp;#39;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000;"&gt;,&lt;/span&gt;&lt;/li&gt; &lt;li&gt;        &lt;span style="background:#ffffff;color:#000000;"&gt;dataType : &lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515;"&gt;&amp;#39;string&amp;#39;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000;"&gt;,&lt;/span&gt;&lt;/li&gt; &lt;li&gt;        &lt;span style="background:#ffffff;color:#000000;"&gt;headerText : &lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515;"&gt;&amp;#39;Last Name&amp;#39;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;    &lt;span style="background:#ffffff;color:#000000;"&gt;}],&lt;/span&gt;&lt;/li&gt; &lt;li&gt;    &lt;span style="background:#ffffff;color:#000000;"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#008000;"&gt;//...&lt;/span&gt;&lt;/li&gt; &lt;li&gt;    &lt;span style="background:#ffffff;color:#000000;"&gt;features : [{&lt;/span&gt;&lt;/li&gt; &lt;li&gt;        &lt;span style="background:#ffffff;color:#000000;"&gt;name : &lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515;"&gt;&amp;#39;Responsive&amp;#39;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000;"&gt;,&lt;/span&gt;&lt;/li&gt; &lt;li&gt;        &lt;span style="background:#ffffff;color:#000000;"&gt;forceResponsiveGridWidth : &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff;"&gt;false&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000;"&gt;,&lt;/span&gt;&lt;/li&gt; &lt;li&gt;        &lt;span style="background:#ffffff;color:#000000;"&gt;columnSettings : [{&lt;/span&gt;&lt;/li&gt; &lt;li&gt;            &lt;span style="background:#ffffff;color:#000000;"&gt;columnKey : &lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515;"&gt;&amp;#39;name&amp;#39;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000;"&gt;,&lt;/span&gt;&lt;/li&gt; &lt;li&gt;            &lt;span style="background:#ffffff;color:#000000;"&gt;classes: &lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515;"&gt;&amp;quot;ui-visible-phone&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000;"&gt;,&lt;/span&gt;&lt;/li&gt; &lt;li&gt;            &lt;span style="background:#ffffff;color:#000000;"&gt;configuration: {&lt;/span&gt;&lt;/li&gt; &lt;li&gt;                &lt;span style="background:#ffffff;color:#000000;"&gt;phone: {&lt;/span&gt;&lt;/li&gt; &lt;li&gt;                    &lt;span style="background:#ffffff;color:#000000;"&gt;template: &lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515;"&gt;&amp;quot;&amp;lt;span&amp;gt;${LastName}, ${FirstName}&amp;lt;/span&amp;gt;&amp;quot;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;                &lt;span style="background:#ffffff;color:#000000;"&gt;}&lt;/span&gt;&lt;/li&gt; &lt;li&gt;            &lt;span style="background:#ffffff;color:#000000;"&gt;}&lt;/span&gt;&lt;/li&gt; &lt;li&gt;        &lt;span style="background:#ffffff;color:#000000;"&gt;},{&lt;/span&gt;&lt;/li&gt; &lt;li&gt;            &lt;span style="background:#ffffff;color:#000000;"&gt;columnKey : &lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515;"&gt;&amp;#39;FirstName&amp;#39;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000;"&gt;,&lt;/span&gt;&lt;/li&gt; &lt;li&gt;            &lt;span style="background:#ffffff;color:#000000;"&gt;classes: &lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515;"&gt;&amp;quot;ui-hidden-phone&amp;quot;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;        &lt;span style="background:#ffffff;color:#000000;"&gt;},{&lt;/span&gt;&lt;/li&gt; &lt;li&gt;            &lt;span style="background:#ffffff;color:#000000;"&gt;columnKey : &lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515;"&gt;&amp;#39;LastName&amp;#39;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000;"&gt;,&lt;/span&gt;&lt;/li&gt; &lt;li&gt;            &lt;span style="background:#ffffff;color:#000000;"&gt;classes: &lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515;"&gt;&amp;quot;ui-hidden-phone&amp;quot;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;        &lt;span style="background:#ffffff;color:#000000;"&gt;}]&lt;/span&gt;&lt;/li&gt; &lt;li&gt;    &lt;span style="background:#ffffff;color:#000000;"&gt;}]&lt;/span&gt;&lt;/li&gt; &lt;li&gt;    &lt;span style="background:#ffffff;color:#000000;"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#008000;"&gt;//....&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span style="background:#ffffff;color:#000000;"&gt;});&lt;/span&gt;&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;p&gt;Same thing using the ASP.NET MVC helpers: &lt;p&gt; &lt;div id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:bfa10511-6ade-452a-b8d6-533d2e6b2553" class="wlWriterEditableSmartContent" style="float:none;padding-bottom:0px;padding-top:0px;padding-left:0px;margin:0px;display:inline;padding-right:0px;"&gt; &lt;div style="border:#000080 1px solid;color:#000;font-family:&amp;#39;Courier New&amp;#39;, Courier, Monospace;font-size:10pt;"&gt; &lt;div style="background:#ddd;max-height:200px;overflow:auto;"&gt; &lt;ol style="background:#ffffff;margin:0 0 0 2.5em;padding:0 0 0 5px;white-space:nowrap;"&gt; &lt;li&gt;&lt;span style="background:#ffffff;color:#000000;"&gt;&lt;/span&gt;&lt;span style="background:#ffff00;color:#000000;"&gt;@(&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000;"&gt;Html.Infragistics().Grid(Model)&lt;/span&gt;&lt;/li&gt; &lt;li&gt;    &lt;span style="background:#ffffff;color:#000000;"&gt;.Columns(column =&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;    &lt;span style="background:#ffffff;color:#000000;"&gt;{&lt;/span&gt;&lt;/li&gt; &lt;li&gt;        &lt;span style="background:#ffffff;color:#000000;"&gt;column.Unbound(&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515;"&gt;&amp;quot;name&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000;"&gt;).DataType(&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515;"&gt;&amp;quot;string&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000;"&gt;).HeaderText(&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515;"&gt;&amp;quot;Full Name&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000;"&gt;).Template(&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515;"&gt;&amp;quot;${FirstName} ${LastName}&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000;"&gt;);&lt;/span&gt;&lt;/li&gt; &lt;li&gt;        &lt;span style="background:#ffffff;color:#000000;"&gt;column.For(x =&amp;gt; x.FirstName).HeaderText(&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515;"&gt;&amp;quot;First name&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000;"&gt;).DataType(&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515;"&gt;&amp;quot;string&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000;"&gt;);&lt;/span&gt;&lt;/li&gt; &lt;li&gt;        &lt;span style="background:#ffffff;color:#000000;"&gt;column.For(x =&amp;gt; x.LastName).HeaderText(&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515;"&gt;&amp;quot;Last Name&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000;"&gt;).DataType(&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515;"&gt;&amp;quot;string&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000;"&gt;);&lt;/span&gt;&lt;/li&gt; &lt;li&gt;        &lt;span style="background:#ffffff;color:#000000;"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#008000;"&gt;//...&lt;/span&gt;&lt;/li&gt; &lt;li&gt;    &lt;span style="background:#ffffff;color:#000000;"&gt;})&lt;/span&gt;&lt;/li&gt; &lt;li&gt;    &lt;span style="background:#ffffff;color:#000000;"&gt;.Features(feature =&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;    &lt;span style="background:#ffffff;color:#000000;"&gt;{&lt;/span&gt;&lt;/li&gt; &lt;li&gt;        &lt;span style="background:#ffffff;color:#000000;"&gt;feature.Responsive().ForceResponsiveGridWidth(&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff;"&gt;false&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000;"&gt;).ColumnSettings(setting =&amp;gt;{&lt;/span&gt;&lt;/li&gt; &lt;li&gt;            &lt;span style="background:#ffffff;color:#000000;"&gt;setting.ColumnSetting().ColumnKey(&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515;"&gt;&amp;quot;name&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000;"&gt;).Classes(&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515;"&gt;&amp;quot;ui-visible-phone&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000;"&gt;).Configuration(conf =&amp;gt; conf.AddColumnModeConfiguration(&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515;"&gt;&amp;quot;phone&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000;"&gt;, c =&amp;gt; c.Template(&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515;"&gt;&amp;quot;&amp;lt;span&amp;gt;${LastName}, ${FirstName}&amp;lt;/span&amp;gt;&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000;"&gt;)));&lt;/span&gt;&lt;/li&gt; &lt;li&gt;            &lt;span style="background:#ffffff;color:#000000;"&gt;setting.ColumnSetting().ColumnKey(&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515;"&gt;&amp;quot;FirstName&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000;"&gt;).Classes(&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515;"&gt;&amp;quot;ui-hidden-phone&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000;"&gt;);&lt;/span&gt;&lt;/li&gt; &lt;li&gt;            &lt;span style="background:#ffffff;color:#000000;"&gt;setting.ColumnSetting().ColumnKey(&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515;"&gt;&amp;quot;LastName&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000;"&gt;).Classes(&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515;"&gt;&amp;quot;ui-hidden-phone&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000;"&gt;);&lt;/span&gt;&lt;/li&gt; &lt;li&gt;            &lt;span style="background:#ffffff;color:#000000;"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#008000;"&gt;//...&lt;/span&gt;&lt;/li&gt; &lt;li&gt;        &lt;span style="background:#ffffff;color:#000000;"&gt;});&lt;/span&gt;&lt;/li&gt; &lt;li&gt;    &lt;span style="background:#ffffff;color:#000000;"&gt;}).DataBind().Render()&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span style="background:#ffffff;color:#000000;"&gt;&lt;/span&gt;&lt;span style="background:#ffff00;color:#000000;"&gt;)&lt;/span&gt;&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt;&lt;/p&gt; &lt;p&gt;Essentially turning merging the two columns going from tablet to phone mode in the images below:&lt;/p&gt; &lt;p&gt;&lt;img title="" alt="jQuery Responsive Grid with separate columns in tablet mode" src="http://media.infragistics.com/community/Release/13.1/jQuery/responsive-grid/jquery-responsive-grid-columns-separate.png" /&gt;&lt;/p&gt; &lt;p&gt;&lt;img title="jQuery Responsive Grid with merged columns in phone mode" alt="jQuery Responsive Grid with merged columns in phone mode" src="http://media.infragistics.com/community/Release/13.1/jQuery/responsive-grid/jquery-responsive-grid-merge-columns.png" /&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;As you may remember and notice above, when Responsive is used with &lt;strong&gt;&lt;a title="Column Hiding - Ignite UI&amp;trade; Online Help ::  2013.1" href="http://help.infragistics.com/NetAdvantage/jQuery/2013.1/CLR4.0?page=igGrid_Column_Hiding.html" target="_blank"&gt;Column Hiding&lt;/a&gt;&lt;/strong&gt; you get that hidden indicator that is both a cue for the user something else is there and an interaction target to modify the visible columns. In terms of usability for touch though, it does feel slightly hard to hit. Good thing you can pick its width I guess – it seems that something in the range of 14-15px is much easier to hit, which is about double the default size.&lt;/p&gt; &lt;p&gt;&lt;img title="jQuery Responsive Grid in phone mode with Hiding indicators enlarged" alt="jQuery Responsive Grid in phone mode with Hiding indicators enlarged" src="http://media.infragistics.com/community/Release/13.1/jQuery/responsive-grid/jquery-rwd-grid-hidden-indicator.png" /&gt;&lt;/p&gt; &lt;p&gt;Of course, unless you arrange your columns in a way that all the ones you will be hiding are in front or at the end, you will get multiple indicators like I have above. Increasing their size for touch takes up even more of the already precious space. &lt;/p&gt; &lt;p&gt;So either ensure arrangement or hide the indicator entirely - well, not really since right now there is no such option, but you can always set the width to 0! How would the user know of hidden columns and interact with the feature then, you may ask? Well, the Column Hiding and its API provide you with the necessary tools to build your own user experience by adding an external button to open the column chooser dialog and events to let you know and potentially display when columns are hidden to the user. The column chooser is easy to open with a single call and hiding and showing events are fired for each column separately (by both Hiding and Responsive!) so you can keep track of their count:&lt;/p&gt; &lt;p&gt; &lt;div id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:c20688c9-61b3-4275-bbed-e04eaa548ad5" class="wlWriterEditableSmartContent" style="float:none;padding-bottom:0px;padding-top:0px;padding-left:0px;margin:0px;display:inline;padding-right:0px;"&gt; &lt;div style="border:#000080 1px solid;color:#000;font-family:&amp;#39;Courier New&amp;#39;, Courier, Monospace;font-size:10pt;"&gt; &lt;div style="background-color:#ffffff;max-height:300px;overflow:auto;padding:2px 5px;white-space:nowrap;"&gt;&lt;span style="background:#ffffff;color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#800000;"&gt;button&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000;"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#ff0000;"&gt;id&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff;"&gt;=&amp;quot;openChooser&amp;quot;&amp;gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000;"&gt; Show/Hide Columns &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="background:#ffffff;color:#800000;"&gt;button&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt; &lt;span style="background:#ffffff;color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#800000;"&gt;label&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000;"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#ff0000;"&gt;id&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff;"&gt;=&amp;quot;hiddenColumns&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000;"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#ff0000;"&gt;data-count&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff;"&gt;=&amp;quot;0&amp;quot;&amp;gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000;"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="background:#ffffff;color:#800000;"&gt;label&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt; &lt;/div&gt; &lt;/div&gt;&lt;/p&gt; &lt;p&gt; &lt;div id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:a2b27c67-3ba5-43f7-a86f-210a91c9cf38" class="wlWriterEditableSmartContent" style="float:none;padding-bottom:0px;padding-top:0px;padding-left:0px;margin:0px;display:inline;padding-right:0px;"&gt; &lt;div style="border:#000080 1px solid;color:#000;font-family:&amp;#39;Courier New&amp;#39;, Courier, Monospace;font-size:10pt;"&gt; &lt;div style="background:#ddd;max-height:200px;overflow:auto;"&gt; &lt;ol style="background:#ffffff;margin:0 0 0 2.5em;padding:0 0 0 5px;white-space:nowrap;"&gt; &lt;li&gt;&lt;span style="background:#ffffff;color:#000000;"&gt;$.ig.loader(&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515;"&gt;&amp;quot;igGrid.Responsive.Hiding&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000;"&gt;, &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff;"&gt;function&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000;"&gt; () {&lt;/span&gt;&lt;/li&gt; &lt;li&gt;    &lt;span style="background:#ffffff;color:#000000;"&gt;$(&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515;"&gt;&amp;quot;#grid&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000;"&gt;).igGrid({&lt;/span&gt;&lt;/li&gt; &lt;li&gt;        &lt;span style="background:#ffffff;color:#000000;"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#008000;"&gt;//...&lt;/span&gt;&lt;/li&gt; &lt;li&gt;        &lt;span style="background:#ffffff;color:#000000;"&gt;features : [{&lt;/span&gt;&lt;/li&gt; &lt;li&gt;            &lt;span style="background:#ffffff;color:#000000;"&gt;name : &lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515;"&gt;&amp;#39;Responsive&amp;#39;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000;"&gt;,&lt;/span&gt;&lt;/li&gt; &lt;li&gt;            &lt;span style="background:#ffffff;color:#000000;"&gt;responsiveColumnHidden: hidden,&lt;/span&gt;&lt;/li&gt; &lt;li&gt;            &lt;span style="background:#ffffff;color:#000000;"&gt;responsiveColumnShown: shown&lt;/span&gt;&lt;/li&gt; &lt;li&gt;        &lt;span style="background:#ffffff;color:#000000;"&gt;},{&lt;/span&gt;&lt;/li&gt; &lt;li&gt;            &lt;span style="background:#ffffff;color:#000000;"&gt;name : &lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515;"&gt;&amp;#39;Hiding&amp;#39;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000;"&gt;,&lt;/span&gt;&lt;/li&gt; &lt;li&gt;            &lt;span style="background:#ffffff;color:#000000;"&gt;hiddenColumnIndicatorHeaderWidth: 0,&lt;/span&gt;&lt;/li&gt; &lt;li&gt;            &lt;span style="background:#ffffff;color:#000000;"&gt;columnChooserWidth: 300,&lt;/span&gt;&lt;/li&gt; &lt;li&gt;            &lt;span style="background:#ffffff;color:#000000;"&gt;columnHidden: hidden,&lt;/span&gt;&lt;/li&gt; &lt;li&gt;            &lt;span style="background:#ffffff;color:#000000;"&gt;columnShown: shown&lt;/span&gt;&lt;/li&gt; &lt;li&gt;        &lt;span style="background:#ffffff;color:#000000;"&gt;}]&lt;/span&gt;&lt;/li&gt; &lt;li&gt;        &lt;span style="background:#ffffff;color:#000000;"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#008000;"&gt;//...&lt;/span&gt;&lt;/li&gt; &lt;li&gt;    &lt;span style="background:#ffffff;color:#000000;"&gt;});&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&lt;/li&gt; &lt;li&gt;    &lt;span style="background:#ffffff;color:#000000;"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#008000;"&gt;//initial state after load&lt;/span&gt;&lt;/li&gt; &lt;li&gt;    &lt;span style="background:#ffffff;color:#000000;"&gt;updateHiddenLabel($(&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515;"&gt;&amp;quot;#grid&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000;"&gt;).data(&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515;"&gt;&amp;#39;igGrid&amp;#39;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000;"&gt;));&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&lt;/li&gt; &lt;li&gt;    &lt;span style="background:#ffffff;color:#000000;"&gt;$(&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515;"&gt;&amp;quot;#openChooser&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000;"&gt;).igButton().click(&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff;"&gt;function&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000;"&gt; myfunction() {&lt;/span&gt;&lt;/li&gt; &lt;li&gt;        &lt;span style="background:#ffffff;color:#000000;"&gt;$(&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515;"&gt;&amp;#39;#grid&amp;#39;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000;"&gt;).igGridHiding(&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515;"&gt;&amp;#39;showColumnChooser&amp;#39;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000;"&gt;);&lt;/span&gt;&lt;/li&gt; &lt;li&gt;    &lt;span style="background:#ffffff;color:#000000;"&gt;});&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span style="background:#ffffff;color:#000000;"&gt;});&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&lt;/li&gt; &lt;li&gt;&lt;span style="background:#ffffff;color:#000000;"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff;"&gt;function&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000;"&gt; hidden(evt, ui){&lt;/span&gt;&lt;/li&gt; &lt;li&gt;    &lt;span style="background:#ffffff;color:#000000;"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff;"&gt;var&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000;"&gt; label = $(&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515;"&gt;&amp;quot;#hiddenColumns&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000;"&gt;);&lt;/span&gt;&lt;/li&gt; &lt;li&gt;    &lt;span style="background:#ffffff;color:#000000;"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff;"&gt;var&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000;"&gt; newHiddenCount = parseInt(label.data(&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515;"&gt;&amp;#39;count&amp;#39;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000;"&gt;)) + 1;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;    &lt;span style="background:#ffffff;color:#000000;"&gt;label.data(&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515;"&gt;&amp;#39;count&amp;#39;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000;"&gt;, newHiddenCount).text(&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515;"&gt;&amp;quot;(&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000;"&gt; + newHiddenCount + &lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515;"&gt;&amp;quot; hidden)&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000;"&gt;);&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span style="background:#ffffff;color:#000000;"&gt;}&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span style="background:#ffffff;color:#000000;"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff;"&gt;function&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000;"&gt; shown(evt, ui){&lt;/span&gt;&lt;/li&gt; &lt;li&gt;    &lt;span style="background:#ffffff;color:#000000;"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff;"&gt;var&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000;"&gt; label = $(&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515;"&gt;&amp;quot;#hiddenColumns&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000;"&gt;);&lt;/span&gt;&lt;/li&gt; &lt;li&gt;    &lt;span style="background:#ffffff;color:#000000;"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff;"&gt;var&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000;"&gt; newHiddenCount = parseInt(label.data(&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515;"&gt;&amp;#39;count&amp;#39;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000;"&gt;)) - 1;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;    &lt;span style="background:#ffffff;color:#000000;"&gt;label.data(&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515;"&gt;&amp;#39;count&amp;#39;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000;"&gt;, newHiddenCount).text(&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515;"&gt;&amp;quot;(&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000;"&gt; + newHiddenCount + &lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515;"&gt;&amp;quot; hidden)&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000;"&gt;);&lt;/span&gt;&lt;/li&gt; &lt;li&gt;    &lt;span style="background:#ffffff;color:#000000;"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff;"&gt;if&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000;"&gt;(newHiddenCount &amp;lt;= 0){&lt;/span&gt;&lt;/li&gt; &lt;li&gt;        &lt;span style="background:#ffffff;color:#000000;"&gt;label.data(&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515;"&gt;&amp;#39;count&amp;#39;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000;"&gt;, 0).text(&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515;"&gt;&amp;quot;&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000;"&gt;);&lt;/span&gt;&lt;/li&gt; &lt;li&gt;    &lt;span style="background:#ffffff;color:#000000;"&gt;}&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span style="background:#ffffff;color:#000000;"&gt;}&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span style="background:#ffffff;color:#000000;"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff;"&gt;function&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000;"&gt; updateHiddenLabel(grid){&lt;/span&gt;&lt;/li&gt; &lt;li&gt;    &lt;span style="background:#ffffff;color:#000000;"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff;"&gt;var&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000;"&gt; hiddenCount = 0;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;    &lt;span style="background:#ffffff;color:#000000;"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff;"&gt;var&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000;"&gt; columns = grid.options.columns;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;    &lt;span style="background:#ffffff;color:#000000;"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff;"&gt;for&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000;"&gt;(index &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff;"&gt;in&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000;"&gt; columns){&lt;/span&gt;&lt;/li&gt; &lt;li&gt;        &lt;span style="background:#ffffff;color:#000000;"&gt;hiddenCount += columns[index].hidden ? 1 : 0;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;    &lt;span style="background:#ffffff;color:#000000;"&gt;}&lt;/span&gt;&lt;/li&gt; &lt;li&gt;    &lt;span style="background:#ffffff;color:#000000;"&gt;$(&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515;"&gt;&amp;quot;#hiddenColumns&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000;"&gt;).data(&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515;"&gt;&amp;#39;count&amp;#39;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000;"&gt;, hiddenCount).text( hiddenCount ? &lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515;"&gt;&amp;quot;(&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000;"&gt; + hiddenCount + &lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515;"&gt;&amp;quot; hidden)&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000;"&gt;: &lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515;"&gt;&amp;quot;&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000;"&gt;);&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span style="background:#ffffff;color:#000000;"&gt;}&lt;/span&gt;&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt;&lt;/p&gt; &lt;p&gt;Note that you should pick a fitting size for the chooser (300 looks ideal, remember that’s in CSS pixels) as the &lt;a title="jQuery Ui Draggable" href="http://jqueryui.com/draggable/" target="_blank"&gt;Draggable&lt;/a&gt; and &lt;a title="jQuery UI Resizable" href="http://jqueryui.com/resizable/" target="_blank"&gt;Resizable&lt;/a&gt; widgets on the chooser are not likely to work too well, unless you use one of those widgets that add touch support to jQuery UI.&lt;/p&gt; &lt;p&gt;&lt;a title="RWD grid in phone mode without the hidden indicator" href="http://media.infragistics.com/community/Release/13.1/jQuery/responsive-grid/jquery-rwd-grid-no-hidden-indicator.png" target="_blank"&gt;&lt;img title="RWD grid in phone mode without the hidden indicator" alt="RWD grid in phone mode without the hidden indicator" src="http://media.infragistics.com/community/Release/13.1/jQuery/responsive-grid/jquery-rwd-grid-no-hidden-indicator-thumb.png" /&gt;&lt;/a&gt;&lt;a title="The column chooser for in the Responsive Phone mode" href="http://media.infragistics.com/community/Release/13.1/jQuery/responsive-grid/jquery-grid-responsive-column-chooser.png" target="_blank"&gt;&lt;img title="The column chooser for in the Responsive Phone mode" style="margin:0px 0px 0px 10px;" alt="The column chooser for in the Responsive Phone mode" src="http://media.infragistics.com/community/Release/13.1/jQuery/responsive-grid/jquery-grid-responsive-column-chooser-thumb.png" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Of course, you can have the indicators and extra chooser shortcut as well – all depending on what fits your design needs better.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Multi-Column Headers&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;When you are using &lt;a title="jQuery Grids with Multi-Column Headers" href="http://www.infragistics.com/community/blogs/damyan_petev/archive/2013/03/11/jquery-grids-with-multi-column-headers.aspx" target="_blank"&gt;jQuery Grids with this feature&lt;/a&gt; there’s a slight consideration to keep in mind. With &lt;a title="Column Hiding - Ignite UI feature sample" href="http://www.infragistics.com/products/jquery/sample/grid/column-hiding-basic" target="_blank"&gt;Column Hiding&lt;/a&gt; you can hide columns in groups directly through their multi-header keys.&amp;nbsp; Event though the Column Hiding feature itself&amp;nbsp; allows for such API calls&amp;nbsp; and we’ve also been using “hiding a column” through the Responsive feature, it’s not the same thing. Responsive, much like Hiding, is hooked to the underlying grid framework that just won’t accept such calls because they don’t exist there. So short version – Responsive can’t hide multi-columns at once through their common header, you will have to provide settings for each separately. &lt;/p&gt; &lt;h1&gt;Responsive Hierarchical Grid&lt;/h1&gt; &lt;p&gt;Noticing the title? ‘Grids’? Yes, plural. Decided I should show some love for those with more complicated(hierarchical) data on their hands. Sometimes by looking at what we write and demonstrate someone would think we are forgetting about the Hierarchical Grid. We aren&amp;#39;t really, we are merely forgetting how easy it is for readers and users to forget that it is build on top of actual flat grids. You know, there&amp;#39;s actually a very normal igGrid widget running alongside the igHierarchicalGrid every time, even for the parent layout. When we talk features and functionality, we almost always have both controls in mind and only mention special cases. Point is this particular Hierarchical Grid is not afraid of some Responsive Web Design! &lt;p&gt;The Responsive feature can be inherited but that, as with other features with column settings, won’t do you any good. In other words, the feature and its settings must be defined for each layout you want it on. Which is not half bad because you can apply separate recognizers and mode profiles for them. &lt;/p&gt; &lt;p&gt;Twitter Bootstrap is also supported, which is to say you can use Bootstrap CSS classes for column visibility and mode recognition. And it’s also super easy to set up. Introducing the Responsive Web Design page with Ignite UI jQuery Hierarchical Grid and Twitter Bootstrap… whoa, that’s a mouthful! &lt;/p&gt; &lt;p&gt; &lt;div id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:b2ccc62e-0161-4976-80d0-949c3065f458" class="wlWriterEditableSmartContent" style="float:none;padding-bottom:0px;padding-top:0px;padding-left:0px;margin:0px;display:inline;padding-right:0px;"&gt; &lt;div style="border:#000080 1px solid;color:#000;font-family:&amp;#39;Courier New&amp;#39;, Courier, Monospace;font-size:10pt;"&gt; &lt;div style="background:#ddd;max-height:200px;overflow:auto;"&gt; &lt;ol style="background:#ffffff;margin:0 0 0 2.5em;padding:0 0 0 5px;white-space:nowrap;"&gt; &lt;li&gt;&lt;span style="background:#ffffff;color:#000000;"&gt;$(&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515;"&gt;&amp;#39;#grid&amp;#39;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000;"&gt;).igHierarchicalGrid({&lt;/span&gt;&lt;/li&gt; &lt;li&gt;    &lt;span style="background:#ffffff;color:#000000;"&gt;dataSource: &lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515;"&gt;&amp;#39;/Home/Departments&amp;#39;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000;"&gt;,&lt;/span&gt;&lt;/li&gt; &lt;li&gt;    &lt;span style="background:#ffffff;color:#000000;"&gt;autoGenerateColumns: &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff;"&gt;false&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000;"&gt;,&lt;/span&gt;&lt;/li&gt; &lt;li&gt;    &lt;span style="background:#ffffff;color:#000000;"&gt;autoGenerateLayouts: &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff;"&gt;false&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000;"&gt;,&lt;/span&gt;&lt;/li&gt; &lt;li&gt;    &lt;span style="background:#ffffff;color:#000000;"&gt;responseDataKey: &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff;"&gt;null&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000;"&gt;,&lt;/span&gt;&lt;/li&gt; &lt;li&gt;    &lt;span style="background:#ffffff;color:#000000;"&gt;columns: [&lt;/span&gt;&lt;/li&gt; &lt;li&gt;        &lt;span style="background:#ffffff;color:#000000;"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#008000;"&gt;//...&lt;/span&gt;&lt;/li&gt; &lt;li&gt;    &lt;span style="background:#ffffff;color:#000000;"&gt;],&lt;/span&gt;&lt;/li&gt; &lt;li&gt;    &lt;span style="background:#ffffff;color:#000000;"&gt;columnLayouts: [{               &lt;/span&gt;&lt;/li&gt; &lt;li&gt;        &lt;span style="background:#ffffff;color:#000000;"&gt;columns: [&lt;/span&gt;&lt;/li&gt; &lt;li&gt;            &lt;span style="background:#ffffff;color:#000000;"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#008000;"&gt;//...&lt;/span&gt;&lt;/li&gt; &lt;li&gt;        &lt;span style="background:#ffffff;color:#000000;"&gt;],&lt;/span&gt;&lt;/li&gt; &lt;li&gt;        &lt;span style="background:#ffffff;color:#000000;"&gt;features: [{&lt;/span&gt;&lt;/li&gt; &lt;li&gt;            &lt;span style="background:#ffffff;color:#000000;"&gt;name: &lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515;"&gt;&amp;#39;Responsive&amp;#39;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000;"&gt;,&lt;/span&gt;&lt;/li&gt; &lt;li&gt;            &lt;span style="background:#ffffff;color:#000000;"&gt;responsiveModes: {&lt;/span&gt;&lt;/li&gt; &lt;li&gt;                &lt;span style="background:#ffffff;color:#000000;"&gt;phone: &lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515;"&gt;&amp;quot;bootstrap&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000;"&gt;,&lt;/span&gt;&lt;/li&gt; &lt;li&gt;                &lt;span style="background:#ffffff;color:#000000;"&gt;tablet: &lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515;"&gt;&amp;quot;bootstrap&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000;"&gt;,&lt;/span&gt;&lt;/li&gt; &lt;li&gt;                &lt;span style="background:#ffffff;color:#000000;"&gt;desktop: &lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515;"&gt;&amp;quot;bootstrap&amp;quot;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;            &lt;span style="background:#ffffff;color:#000000;"&gt;},&lt;/span&gt;&lt;/li&gt; &lt;li&gt;            &lt;span style="background:#ffffff;color:#000000;"&gt;columnSettings: [{&lt;/span&gt;&lt;/li&gt; &lt;li&gt;                &lt;span style="background:#ffffff;color:#000000;"&gt;columnKey: &lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515;"&gt;&amp;#39;BusinessEntityID&amp;#39;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000;"&gt;,&lt;/span&gt;&lt;/li&gt; &lt;li&gt;                &lt;span style="background:#ffffff;color:#000000;"&gt;classes: &lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515;"&gt;&amp;quot;visible-desktop&amp;quot;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;            &lt;span style="background:#ffffff;color:#000000;"&gt;}&lt;/span&gt;&lt;/li&gt; &lt;li&gt;            &lt;span style="background:#ffffff;color:#000000;"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#008000;"&gt;//...&lt;/span&gt;&lt;/li&gt; &lt;li&gt;            &lt;span style="background:#ffffff;color:#000000;"&gt;],&lt;/span&gt;&lt;/li&gt; &lt;li&gt;            &lt;span style="background:#ffffff;color:#000000;"&gt;rowTemplate: {&lt;/span&gt;&lt;/li&gt; &lt;li&gt;                &lt;span style="background:#ffffff;color:#000000;"&gt;desktop: &lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515;"&gt;&amp;quot;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;{{html BusinessEntityID}}&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;{{html LoginID}}&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;{{html NationalIDNumber}}&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;{{html Gender}}&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;{{html BirthDate}}&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;{{html MaritalStatus}}&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;{{html JobTitle}}&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;{{html OrganizationLevel}}&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;{{html HireDate}}&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;{{html SalariedFlag}}&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;div class=&amp;#39;progressbar&amp;#39;&amp;gt;{{html VacationHours}}&amp;lt;/div&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;quot;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;            &lt;span style="background:#ffffff;color:#000000;"&gt;}&lt;/span&gt;&lt;/li&gt; &lt;li&gt;        &lt;span style="background:#ffffff;color:#000000;"&gt;}]&lt;/span&gt;&lt;/li&gt; &lt;li&gt;    &lt;span style="background:#ffffff;color:#000000;"&gt;}],&lt;/span&gt;&lt;/li&gt; &lt;li&gt;    &lt;span style="background:#ffffff;color:#000000;"&gt;features: [{&lt;/span&gt;&lt;/li&gt; &lt;li&gt;        &lt;span style="background:#ffffff;color:#000000;"&gt;name: &lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515;"&gt;&amp;#39;Responsive&amp;#39;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000;"&gt;,&lt;/span&gt;&lt;/li&gt; &lt;li&gt;        &lt;span style="background:#ffffff;color:#000000;"&gt;responsiveModes: {&lt;/span&gt;&lt;/li&gt; &lt;li&gt;            &lt;span style="background:#ffffff;color:#000000;"&gt;phone: &lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515;"&gt;&amp;quot;bootstrap&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000;"&gt;,&lt;/span&gt;&lt;/li&gt; &lt;li&gt;            &lt;span style="background:#ffffff;color:#000000;"&gt;tablet: &lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515;"&gt;&amp;quot;bootstrap&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000;"&gt;,&lt;/span&gt;&lt;/li&gt; &lt;li&gt;            &lt;span style="background:#ffffff;color:#000000;"&gt;desktop: &lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515;"&gt;&amp;quot;bootstrap&amp;quot;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;        &lt;span style="background:#ffffff;color:#000000;"&gt;}&lt;/span&gt;&lt;/li&gt; &lt;li&gt;    &lt;span style="background:#ffffff;color:#000000;"&gt;}]&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span style="background:#ffffff;color:#000000;"&gt;});&lt;/span&gt;&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt;&lt;/p&gt; &lt;p&gt;The only difference is that you have to specify the Bootstrap recognizer if you need it, and use unprefixed classes for the column visibility like “hidden-phone” and you should be good to go:&lt;/p&gt; &lt;p&gt;&lt;img title="Responsive Web Design jQuery Hierarchical Grid and Twitter Bootstrap" alt="Responsive Web Design jQuery Hierarchical Grid and Twitter Bootstrap" src="http://media.infragistics.com/community/Release/13.1/jQuery/responsive-grid/jquery-hierarchical-grid-responsive-bootstrap.png" /&gt;&lt;/p&gt; &lt;p&gt;And the template you notice above is just for desktop where you can enjoy power and space so why not have a column with &lt;a title="Radial Gauge - Ignite UI samples" href="http://www.infragistics.com/products/jquery/gauge" target="_blank"&gt;Gauges&lt;/a&gt; or sliders or progress bars in my case:&lt;/p&gt; &lt;p&gt;&lt;a title="Responsive Web Design jQuery Hierarchical Grid and Twitter Bootstrap" href="http://media.infragistics.com/community/Release/13.1/jQuery/responsive-grid/jquery-hierarchical-grid-responsive-bootstrap-template.png" target="_blank"&gt;&lt;img title="Responsive Web Design jQuery Hierarchical Grid and Twitter Bootstrap" alt="Responsive Web Design jQuery Hierarchical Grid and Twitter Bootstrap" src="http://media.infragistics.com/community/Release/13.1/jQuery/responsive-grid/jquery-hierarchical-grid-responsive-bootstrap-thumb.png" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Thinking about it, you get responsive design mode grid with responsive design grids in it in a responsive web design site/app – this should totally qualify for an Inception meme! &lt;/p&gt; &lt;h1&gt;Resources&lt;/h1&gt; &lt;p&gt;I have some interesting tips and tricks coming up next, so stay tuned!&lt;/p&gt; &lt;ul&gt; &lt;li&gt;The super hacky &lt;a title="Responsive Web Design page with Ignite UI jQuery Hierarchical Grid and Twitter Bootstrap" href="http://jsfiddle.net/damyanpetev/YzHve/show/" target="_blank"&gt;JSFiddle on Responsive Web Design page with Ignite UI jQuery Hierarchical Grid and Twitter Bootstrap&lt;/a&gt;. That’s the full-screen version, the actual fiddle – code and all(preview probably in tablet or phone mode depending on how big your screen is) is &lt;a title="Responsive Hierarchical Grid" href="http://jsfiddle.net/damyanpetev/YzHve/" target="_blank"&gt;here&lt;/a&gt;. &lt;li&gt;An &lt;a title="ASP.NET MVC demo for the jQuery Grids&amp;#39; Responsive web design mode" href="http://media.infragistics.com/community/Release/13.1/jQuery/responsive-grid/Responsive-Grids.zip" target="_blank"&gt;ASP.NET MVC demo&lt;/a&gt; with everything showed above in full code. The Hierarchical Grid here doesn’t use bootstrap so you can compare how very little difference there is in code. &lt;li&gt;There’s a &lt;a href="https://www4.gotomeeting.com/register/112890991" target="_blank"&gt;&lt;strong&gt;Webinar on Designing for Responsive Design&lt;/strong&gt;&lt;/a&gt; tomorrow, don’t miss!&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;a title="Designing for Responsive Design - Webinar" href="https://www4.gotomeeting.com/register/112890991" target="_blank"&gt;&lt;img title="Designing for Responsive Design - Webinar" alt="Designing for Responsive Design - Webinar" src="http://static.infragistics.com/marketing/2013mailer/images/WebinarHeader_May_Responsive2.jpg" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Documentation - &lt;a title="Responsive Web Design (RWD) Mode (igGrid) - Ignite UI&amp;trade; Online Help ::  2013.1" href="http://help.infragistics.com/NetAdvantage/jQuery/2013.1/CLR4.0?page=igGrid_Responsive_Web_Design_Mode_LandingPage.html" target="_blank"&gt;igGrid Responsive Web Design (RWD) Mode&lt;/a&gt; &lt;li&gt;&lt;a title="Responsive Web Design Custom Mode Template Switching - Ignite UI samples" href="http://www.infragistics.com/products/jquery/sample/grid/responsive-web-design-custom-mode-template-switching" target="_blank"&gt;Responsive Web Design Custom Mode Template Switching&lt;/a&gt; and &lt;a title="Responsive Web Design Mode of the Grid with Twitter Bootstrap - Ingnite UI samples" href="http://www.infragistics.com/products/jquery/sample/grid/responsive-web-design-mode-of-the-grid-with-twitter-bootstrap" target="_blank"&gt;Responsive Web Design Mode of the Grid with Twitter Bootstrap&lt;/a&gt; &lt;li&gt;Other awesome stuff: &lt;a title="Ignite UI: What&amp;rsquo;s New in 13.1 HTML5, jQuery &amp;amp; ASP.NET MVC Controls" href="http://www.infragistics.com/community/blogs/jason_beres/archive/2013/03/25/ignite-ui-what-s-new-in-13-1-html5-jquery-amp-mvc-controls.aspx" target="_blank"&gt;Ignite UI: What’s New in 13.1 HTML5, jQuery &amp;amp; ASP.NET MVC Controls&lt;/a&gt; &lt;li&gt;Go grab Ignite UI&lt;br /&gt;&lt;a title="Donwload your Ignite UI Free Trial now!" href="http://www.infragistics.com/products/jquery/downloads" target="_blank"&gt;&lt;img title="Donwload your Ignite UI Free Trial now!" alt="Donwload your Ignite UI Free Trial now!" src="http://media.infragistics.com/community/Release/12.2/jQuery/IgniteUI-download.jpg" /&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p name="gotcha"&gt;I’d love to hear some thoughts, so leave a comment down below or &lt;a title="That would be me!" href="https://twitter.com/DamyanPetev"&gt;&lt;em&gt;@DamyanPetev&lt;/em&gt;&lt;/a&gt;.&lt;/p&gt; &lt;p name="gotcha"&gt;&lt;em&gt;And as always, you can follow us on Twitter &lt;/em&gt;&lt;a title="Infragistics on Twitter" href="https://twitter.com/infragistics" target="_blank"&gt;&lt;em&gt;@Infragistics&lt;/em&gt;&lt;/a&gt;&lt;em&gt; and stay in touch on &lt;/em&gt;&lt;a title="Infragistics on Facebook" href="http://www.facebook.com/infragistics" target="_blank"&gt;&lt;em&gt;Facebook&lt;/em&gt;&lt;/a&gt;&lt;em&gt;, &lt;/em&gt;&lt;a title="Infragistics on Google+" href="https://plus.google.com/110651137371189140377" target="_blank"&gt;&lt;em&gt;Google+&lt;/em&gt;&lt;/a&gt;&lt;em&gt; and &lt;/em&gt;&lt;a title="Infragistics on LinkedIn" href="http://www.linkedin.com/company/16069" target="_blank"&gt;&lt;em&gt;LinkedIn&lt;/em&gt;&lt;/a&gt;&lt;em&gt;!&lt;/em&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.infragistics.com/community/aggbug.aspx?PostID=405126" width="1" height="1"&gt;</description><category domain="http://www.infragistics.com/community/blogs/damyan_petev/archive/tags/JavaScript/default.aspx">JavaScript</category><category domain="http://www.infragistics.com/community/blogs/damyan_petev/archive/tags/HTML5/default.aspx">HTML5</category><category domain="http://www.infragistics.com/community/blogs/damyan_petev/archive/tags/CSS3/default.aspx">CSS3</category><category domain="http://www.infragistics.com/community/blogs/damyan_petev/archive/tags/MVC/default.aspx">MVC</category><category domain="http://www.infragistics.com/community/blogs/damyan_petev/archive/tags/Infragistics/default.aspx">Infragistics</category><category domain="http://www.infragistics.com/community/blogs/damyan_petev/archive/tags/Cross-Platform/default.aspx">Cross-Platform</category><category domain="http://www.infragistics.com/community/blogs/damyan_petev/archive/tags/Grid/default.aspx">Grid</category><category domain="http://www.infragistics.com/community/blogs/damyan_petev/archive/tags/igGrid/default.aspx">igGrid</category><category domain="http://www.infragistics.com/community/blogs/damyan_petev/archive/tags/Hierarchical+Grid/default.aspx">Hierarchical Grid</category><category domain="http://www.infragistics.com/community/blogs/damyan_petev/archive/tags/Hierarchical/default.aspx">Hierarchical</category><category domain="http://www.infragistics.com/community/blogs/damyan_petev/archive/tags/igHierarchicalGrid/default.aspx">igHierarchicalGrid</category><category domain="http://www.infragistics.com/community/blogs/damyan_petev/archive/tags/Merge/default.aspx">Merge</category><category domain="http://www.infragistics.com/community/blogs/damyan_petev/archive/tags/Touch/default.aspx">Touch</category><category domain="http://www.infragistics.com/community/blogs/damyan_petev/archive/tags/Ignite+UI/default.aspx">Ignite UI</category><category domain="http://www.infragistics.com/community/blogs/damyan_petev/archive/tags/Ignite+UI+Grid/default.aspx">Ignite UI Grid</category><category domain="http://www.infragistics.com/community/blogs/damyan_petev/archive/tags/Ignite/default.aspx">Ignite</category><category domain="http://www.infragistics.com/community/blogs/damyan_petev/archive/tags/IgniteUI/default.aspx">IgniteUI</category><category domain="http://www.infragistics.com/community/blogs/damyan_petev/archive/tags/ASP.NET+MVC/default.aspx">ASP.NET MVC</category><category domain="http://www.infragistics.com/community/blogs/damyan_petev/archive/tags/13.1/default.aspx">13.1</category><category domain="http://www.infragistics.com/community/blogs/damyan_petev/archive/tags/Column+Hiding/default.aspx">Column Hiding</category><category domain="http://www.infragistics.com/community/blogs/damyan_petev/archive/tags/Responsive+Grid/default.aspx">Responsive Grid</category><category domain="http://www.infragistics.com/community/blogs/damyan_petev/archive/tags/Responsive/default.aspx">Responsive</category><category domain="http://www.infragistics.com/community/blogs/damyan_petev/archive/tags/Responsive+Web+Design/default.aspx">Responsive Web Design</category></item><item><title>Developing a RESTful CRUD grid with IgniteUI, WebAPI and Entity Framework</title><link>http://www.infragistics.com/community/blogs/angel_todorov/archive/2013/05/23/developing-a-restful-crud-grid-with-igniteui-webapi-and-entity-framework.aspx</link><pubDate>Thu, 23 May 2013 19:55:00 GMT</pubDate><guid isPermaLink="false">7a8b7c76-b7ad-48e0-9694-5b04ca132ed0:405139</guid><dc:creator>[Infragistics] Angel Todorov</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;In a previous blog post of mine I have presented an application which tackles a create/read/update/delete scenario in the context of the IgniteUI grid. I have used frameworks such as MongoDB, Node.JS and Mongoose.&lt;/p&gt;
&lt;p&gt;In this blog post, I would like to present an application which uses WebAPI and Enitity Framework to talk to an Ignite UI grid. You are probably aware that the Ignite UI grid supports HTTP REST CRUD operations, and any backend which implements the PUT/GET/POST/DELETE HTTP requests according to the RFC specs is compatible with the grid.&lt;/p&gt;
&lt;p&gt;WebAPI is a framework from Microsoft which makes it really straightforward to build REST services. We are going to use a MS-SQL database, have EntityFramework on top of that, in the context of an ASP.NET MVC application, and expose our CRUD operations via WebAPI.&lt;/p&gt;
&lt;p&gt;I will use two pages in my application &amp;ndash; one which is just HTML + CSS + JavaScript, and one which uses Razor and also makes use of our MVC Grid wrapper. The idea is to show that our grid does not depend on ASP.NET MVC, when we would like to use WebAPI and perform CRUD operations.&lt;/p&gt;
&lt;p&gt;Before we start I will list the software packages that you will need:&lt;/p&gt;
&lt;p&gt;1)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Visual Studio 2012 (Express should do)&lt;/p&gt;
&lt;p&gt;2)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ASP.NET MVC 4.0&lt;/p&gt;
&lt;p&gt;3)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Entity Framework (it&amp;rsquo;s best to install the latest version)&lt;/p&gt;
&lt;p&gt;4)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Microsoft SQL Server Compact (4.0) &amp;ndash; if you do not have it, you can download from &lt;a href="http://www.microsoft.com/en-us/download/details.aspx?id=17876"&gt;http://www.microsoft.com/en-us/download/details.aspx?id=17876&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The first three packages can be obtained from NuGet. I&amp;rsquo;ve actually created a dependencies folder in the project I have attached to this blog post, and all the necessary assemblies are there, so you shouldn&amp;rsquo;t need to download and install anything additional.&lt;/p&gt;
&lt;p&gt;Note: I have used 7zip in order to compress the sample, because default zip /RAR compression makes the file size too big. &amp;nbsp;I have put an extra .zip extension that you&amp;rsquo;ll need to remove, because our blogging software doesn&amp;rsquo;t seem to accept the default .7z extension. You can obtain 7Zip from here:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.7-zip.org/"&gt;http://www.7-zip.org/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Other programs such as WinRAR will also be able to decompress it.&lt;/p&gt;
&lt;p&gt;Before I begin with the MVC project, I would like to summarize the different HTTP request types that correspond to each CRUD operation:&lt;/p&gt;
&lt;table border="1" cellspacing="0" cellpadding="0"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p align="center"&gt;&lt;b&gt;Operation&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p align="center"&gt;&lt;b&gt;HTTP&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td width="143" valign="top"&gt;
&lt;p align="center"&gt;&lt;b&gt;URL Format Example&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td width="143" valign="top"&gt;
&lt;p align="center"&gt;&lt;b&gt;Response Code&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;Create&lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;POST&lt;/p&gt;
&lt;/td&gt;
&lt;td width="143" valign="top"&gt;
&lt;p&gt;/api/products&lt;/p&gt;
&lt;/td&gt;
&lt;td width="143" valign="top"&gt;
&lt;p&gt;201 Created ;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;Read&lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;GET&lt;/p&gt;
&lt;/td&gt;
&lt;td width="143" valign="top"&gt;
&lt;p&gt;/api/products&lt;/p&gt;
&lt;/td&gt;
&lt;td width="143" valign="top"&gt;
&lt;p&gt;200 OK&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;Update&lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;PUT&lt;/p&gt;
&lt;/td&gt;
&lt;td width="143" valign="top"&gt;
&lt;p&gt;/api/products/&lt;span&gt;&amp;amp;#60;&lt;/span&gt;&lt;span&gt;id&lt;span&gt;&amp;amp;#62;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td width="143" valign="top"&gt;
&lt;p&gt;204 No Content&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;Delete (remove)&lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;DELETE&lt;/p&gt;
&lt;/td&gt;
&lt;td width="143" valign="top"&gt;
&lt;p&gt;/api/products/?index=&lt;span&gt;&amp;amp;#60;&lt;/span&gt;&lt;span&gt;id&lt;span&gt;&amp;amp;#62;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td width="143" valign="top"&gt;
&lt;p&gt;200 OK&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Any client &amp;amp; server implementing those correctly can communicate in a RESTful way.&lt;/p&gt;
&lt;p&gt;Let&amp;rsquo;s start by creating an ASP.NET MVC 4.0 project. We can add the js and css folders from the Ignite UI installation to the root of the project &amp;ndash; later on, they&amp;rsquo;ll be referenced from there.&lt;/p&gt;
&lt;p&gt;Now add a new item to the project &amp;ndash; SQL Server Compact database, and name it Products.sdf:&lt;/p&gt;
&lt;p&gt;&lt;img src="http://oi40.tinypic.com/68eyo7.jpg" width="650" height="400" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Double-click the sdf file &amp;ndash; it should be placed in the App_Data project folder, and add a couple of tables to the database (Company, Orders, and Products):&lt;/p&gt;
&lt;p&gt;&lt;img src="http://oi41.tinypic.com/35mmc5v.jpg" width="281" height="438" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;The schema for the tables is as follows:&lt;/p&gt;
&lt;p&gt;&lt;img src="http://oi42.tinypic.com/4v1d75.jpg" width="642" height="168" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="http://oi42.tinypic.com/bdtpo3.jpg" width="644" height="157" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="http://oi44.tinypic.com/apd36b.jpg" width="646" height="214" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;I am not going to use all the tables immediately because I would like to demonstrate some specifics of the Entity Framework, and different ways you can serialize lists of objects and send them from the server to the client &amp;ndash; either directly or by proxying to a custom simpler class.&lt;/p&gt;
&lt;p&gt;After you have the tables created, you can create an EF model, for now let&amp;rsquo;s create one for the Products:&lt;/p&gt;
&lt;p&gt;&lt;img src="http://oi39.tinypic.com/ehnl8l.jpg" width="650" height="400" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="http://oi39.tinypic.com/33dl4ib.jpg" width="434" height="524" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;After you do this, you can use the EF model in the following way, in your controller code:&lt;/p&gt;
&lt;pre style="color:#000;"&gt;&lt;span style="color:#00f;"&gt;var&lt;/span&gt; entities &lt;span style="color:#00f;"&gt;=&lt;/span&gt; &lt;span style="color:#00f;"&gt;new&lt;/span&gt; ProductsEntities();
&lt;/pre&gt;
&lt;p&gt;// entities.Products will give you the list of all products, EF will create a &amp;ldquo;Product&amp;rdquo; type for you automatically&lt;/p&gt;
&lt;p&gt;Now, in the &amp;ldquo;Controllers&amp;rdquo; folder, create a &amp;ldquo;HomeController&amp;rdquo; (Empty MVC Controller), an mvcController (Empty MVC Controller). We will use the HomeController, which is the default one, to render a HTML view which will instantiate an ignite UI grid using only JavaScript. We will use the mvcController to render an IgniteUI grid that&amp;rsquo;s based on the MVC wrappers.&amp;nbsp;&lt;/p&gt;
&lt;pre style="color:#000;"&gt;    public &lt;span style="font-weight:bold;"&gt;class&lt;/span&gt; HomeController : Controller
    {
        public ActionResult Index()
        {
            &lt;span style="color:#00f;"&gt;return&lt;/span&gt; View();
        }
    }
    public &lt;span style="font-weight:bold;"&gt;class&lt;/span&gt; mvcController : Controller
    {
        &lt;span style="color:#00f;"&gt;/&lt;/span&gt;&lt;span style="color:#00f;"&gt;/&lt;/span&gt;
        &lt;span style="color:#00f;"&gt;/&lt;/span&gt;&lt;span style="color:#00f;"&gt;/&lt;/span&gt; GET: &lt;span style="color:#00f;"&gt;/&lt;/span&gt;mvc&lt;span style="color:#00f;"&gt;/&lt;/span&gt;

        public ActionResult Index()
        {
            &lt;span style="color:#00f;"&gt;return&lt;/span&gt; View();
        }

    }
&lt;/pre&gt;
&lt;p&gt;The key part of our sample is to expose our CRUD operations through WebAPI. We will create an additional MVC Controller that will handle the CRUD requests, set the appropriate response types, etc. There are two ways to do that &amp;ndash; to use an API controller template, or to write it manually. Let&amp;rsquo;s see what happens if we use the API template &amp;ndash; that will do most of the work for us:&lt;/p&gt;
&lt;p&gt;&lt;img src="http://oi39.tinypic.com/258lz7t.jpg" width="653" height="348" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="http://oi43.tinypic.com/10o0011.jpg" width="599" height="386" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Let&amp;rsquo;s have a look at parts of the generated code:&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div style="overflow:auto;width:650px;"&gt;
&lt;pre style="color:#000;"&gt;public class Default1Controller : ApiController
    {
        private ProductsEntities db = new ProductsEntities();

        // GET api/Default1
        public IEnumerable GetProducts() { var products = db.Products.&lt;span style="color:#33f;font-weight:bold;"&gt;Include&lt;/span&gt;(&amp;quot;Company&amp;quot;); return products.&lt;span style="color:#33f;font-weight:bold;"&gt;AsEnumerable&lt;/span&gt;(); } &lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;You can see that, based on the Product class from EF, WebAPI&amp;rsquo;s controller template pretty much does all the CRUD-related work for you. It generates the correct HttpResponse codes for you, too. The only drawback of the default template is that it doesn&amp;rsquo;t generate code for batch operations. Later on in this blog post, we will create a WebAPI controller from scratch, which will tackle more cases than the default one.&lt;/p&gt;
&lt;p&gt;Now we need to focus on the Client-side part and write our View. Note that I am attaching a fully functional application, so don&amp;rsquo;t worry if something does not run correctly if you try to build the app from scratch, you can always have a look at the attached app.&lt;/p&gt;
&lt;p&gt;In the Views =&amp;gt; Home folder, create an Index.cshtml View, with the following contents:&lt;/p&gt;
&lt;div style="overflow:auto;height:600px;width:650px;"&gt;
&lt;pre class="html4strict" style="font-family:monospace;"&gt;&lt;span style="color:#00bbdd;"&gt;&amp;lt;!DOCTYPE html&amp;gt;&lt;/span&gt;
&lt;span style="color:#009900;"&gt;&amp;lt;&lt;span style="color:#000000;font-weight:bold;"&gt;html&lt;/span&gt; xmlns&lt;span style="color:#66cc66;"&gt;=&lt;/span&gt;&lt;span style="color:#ff0000;"&gt;&amp;quot;http://www.w3.org/1999/xhtml&amp;quot;&lt;/span&gt;&amp;gt;&lt;/span&gt;
&lt;span style="color:#009900;"&gt;&amp;lt;&lt;span style="color:#000000;font-weight:bold;"&gt;head&lt;/span&gt;&amp;gt;&lt;/span&gt;
    &lt;span style="color:#009900;"&gt;&amp;lt;&lt;span style="color:#000000;font-weight:bold;"&gt;title&lt;/span&gt;&amp;gt;&lt;/span&gt;WebAPI CRUD&lt;span style="color:#009900;"&gt;&amp;lt;&lt;span style="color:#66cc66;"&gt;/&lt;/span&gt;&lt;span style="color:#000000;font-weight:bold;"&gt;title&lt;/span&gt;&amp;gt;&lt;/span&gt;
    &lt;span style="color:#009900;"&gt;&amp;lt;&lt;span style="color:#000000;font-weight:bold;"&gt;script&lt;/span&gt; &lt;span style="color:#000066;"&gt;type&lt;/span&gt;&lt;span style="color:#66cc66;"&gt;=&lt;/span&gt;&lt;span style="color:#ff0000;"&gt;&amp;quot;text/javascript&amp;quot;&lt;/span&gt; &lt;span style="color:#000066;"&gt;src&lt;/span&gt;&lt;span style="color:#66cc66;"&gt;=&lt;/span&gt;&lt;span style="color:#ff0000;"&gt;&amp;quot;http://code.jquery.com/jquery-1.7.1.js&amp;quot;&lt;/span&gt;&amp;gt;&amp;lt;&lt;span style="color:#66cc66;"&gt;/&lt;/span&gt;&lt;span style="color:#000000;font-weight:bold;"&gt;script&lt;/span&gt;&amp;gt;&lt;/span&gt;
    &lt;span style="color:#009900;"&gt;&amp;lt;&lt;span style="color:#000000;font-weight:bold;"&gt;script&lt;/span&gt; &lt;span style="color:#000066;"&gt;type&lt;/span&gt;&lt;span style="color:#66cc66;"&gt;=&lt;/span&gt;&lt;span style="color:#ff0000;"&gt;&amp;quot;text/javascript&amp;quot;&lt;/span&gt; &lt;span style="color:#000066;"&gt;src&lt;/span&gt;&lt;span style="color:#66cc66;"&gt;=&lt;/span&gt;&lt;span style="color:#ff0000;"&gt;&amp;quot;http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.2/jquery-ui.js&amp;quot;&lt;/span&gt;&amp;gt;&amp;lt;&lt;span style="color:#66cc66;"&gt;/&lt;/span&gt;&lt;span style="color:#000000;font-weight:bold;"&gt;script&lt;/span&gt;&amp;gt;&lt;/span&gt;
    &lt;span style="color:#009900;"&gt;&amp;lt;&lt;span style="color:#000000;font-weight:bold;"&gt;script&lt;/span&gt; &lt;span style="color:#000066;"&gt;type&lt;/span&gt;&lt;span style="color:#66cc66;"&gt;=&lt;/span&gt;&lt;span style="color:#ff0000;"&gt;&amp;quot;text/javascript&amp;quot;&lt;/span&gt; &lt;span style="color:#000066;"&gt;src&lt;/span&gt;&lt;span style="color:#66cc66;"&gt;=&lt;/span&gt;&lt;span style="color:#ff0000;"&gt;&amp;quot;js/infragistics.loader.js&amp;quot;&lt;/span&gt;&amp;gt;&amp;lt;&lt;span style="color:#66cc66;"&gt;/&lt;/span&gt;&lt;span style="color:#000000;font-weight:bold;"&gt;script&lt;/span&gt;&amp;gt;&lt;/span&gt;
    &lt;span style="color:#009900;"&gt;&amp;lt;&lt;span style="color:#000000;font-weight:bold;"&gt;script&lt;/span&gt; &lt;span style="color:#000066;"&gt;type&lt;/span&gt;&lt;span style="color:#66cc66;"&gt;=&lt;/span&gt;&lt;span style="color:#ff0000;"&gt;&amp;quot;text/javascript&amp;quot;&lt;/span&gt;&amp;gt;&lt;/span&gt;
        $.ig.loader({
        	scriptPath: &amp;#39;js/&amp;#39;,
        	cssPath: &amp;#39;css/&amp;#39;,
            resources: &amp;#39;igGrid.Updating&amp;#39;,
            ready: function () {
&amp;nbsp;
                $(&amp;quot;#grid1&amp;quot;).igGrid({
                    dataSource: &amp;quot;/api/products&amp;quot;,
                    primaryKey: &amp;quot;ID&amp;quot;,
                    restSettings: {
                        update: { url: &amp;quot;/api/products&amp;quot; },
                        remove: { url: &amp;quot;/api/products&amp;quot;, batch: true },
                        create: {
                            url: &amp;quot;/api/products&amp;quot;,
                            batch: true
                        }
                    },
                    autoGenerateColumns: false,
                    height: &amp;quot;350px&amp;quot;,
                    width: &amp;quot;800px&amp;quot;,
                    columns: [
                            { headerText: &amp;quot;ID&amp;quot;, key: &amp;quot;ID&amp;quot;, dataType: &amp;quot;number&amp;quot; },
                            { headerText: &amp;quot;Name&amp;quot;, key: &amp;quot;Name&amp;quot;, dataType: &amp;quot;string&amp;quot;},
                            { headerText: &amp;quot;Price&amp;quot;, key: &amp;quot;Price&amp;quot;, dataType: &amp;quot;number&amp;quot;},
                            { headerText: &amp;quot;Quantity&amp;quot;, key: &amp;quot;Quantity&amp;quot;, dataType: &amp;quot;number&amp;quot;},
                            { headerText: &amp;quot;Release Date&amp;quot;, key: &amp;quot;ReleaseDate&amp;quot;, dataType: &amp;quot;date&amp;quot;}
                    ],
                    features: [
                            {
                                name: &amp;quot;Updating&amp;quot;,
                                editMode: &amp;#39;cell&amp;#39;,
                                columnSettings: [{
                                    columnKey: &amp;#39;ID&amp;#39;,
                                    readOnly: true
                                }]
                            }
                    ]
                });
&amp;nbsp;
                $(&amp;quot;#save1&amp;quot;).on(&amp;quot;click&amp;quot;, function () {
                    $(&amp;quot;#grid1&amp;quot;).igGrid(&amp;quot;saveChanges&amp;quot;);
                });
            }
        });
    &lt;span style="color:#009900;"&gt;&amp;lt;&lt;span style="color:#66cc66;"&gt;/&lt;/span&gt;&lt;span style="color:#000000;font-weight:bold;"&gt;script&lt;/span&gt;&amp;gt;&lt;/span&gt;
&lt;span style="color:#009900;"&gt;&amp;lt;&lt;span style="color:#66cc66;"&gt;/&lt;/span&gt;&lt;span style="color:#000000;font-weight:bold;"&gt;head&lt;/span&gt;&amp;gt;&lt;/span&gt;
&lt;span style="color:#009900;"&gt;&amp;lt;&lt;span style="color:#000000;font-weight:bold;"&gt;body&lt;/span&gt;&amp;gt;&lt;/span&gt;
    &lt;span style="color:#009900;"&gt;&amp;lt;&lt;span style="color:#000000;font-weight:bold;"&gt;div&lt;/span&gt; &lt;span style="color:#000066;"&gt;class&lt;/span&gt;&lt;span style="color:#66cc66;"&gt;=&lt;/span&gt;&lt;span style="color:#ff0000;"&gt;&amp;quot;panel&amp;quot;&lt;/span&gt;&amp;gt;&lt;/span&gt;
        &lt;span style="color:#009900;"&gt;&amp;lt;&lt;span style="color:#000000;font-weight:bold;"&gt;input&lt;/span&gt; &lt;span style="color:#000066;"&gt;id&lt;/span&gt;&lt;span style="color:#66cc66;"&gt;=&lt;/span&gt;&lt;span style="color:#ff0000;"&gt;&amp;quot;save1&amp;quot;&lt;/span&gt; &lt;span style="color:#000066;"&gt;type&lt;/span&gt;&lt;span style="color:#66cc66;"&gt;=&lt;/span&gt;&lt;span style="color:#ff0000;"&gt;&amp;quot;button&amp;quot;&lt;/span&gt; &lt;span style="color:#000066;"&gt;value&lt;/span&gt;&lt;span style="color:#66cc66;"&gt;=&lt;/span&gt;&lt;span style="color:#ff0000;"&gt;&amp;quot;Save Changes to server&amp;quot;&lt;/span&gt; &lt;span style="color:#66cc66;"&gt;/&lt;/span&gt;&amp;gt;&lt;/span&gt;
        &lt;span style="color:#009900;"&gt;&amp;lt;&lt;span style="color:#000000;font-weight:bold;"&gt;br&lt;/span&gt; &lt;span style="color:#66cc66;"&gt;/&lt;/span&gt;&amp;gt;&lt;/span&gt;
        &lt;span style="color:#009900;"&gt;&amp;lt;&lt;span style="color:#000000;font-weight:bold;"&gt;table&lt;/span&gt; &lt;span style="color:#000066;"&gt;id&lt;/span&gt;&lt;span style="color:#66cc66;"&gt;=&lt;/span&gt;&lt;span style="color:#ff0000;"&gt;&amp;quot;grid1&amp;quot;&lt;/span&gt;&amp;gt;&amp;lt;&lt;span style="color:#66cc66;"&gt;/&lt;/span&gt;&lt;span style="color:#000000;font-weight:bold;"&gt;table&lt;/span&gt;&amp;gt;&lt;/span&gt;
    &lt;span style="color:#009900;"&gt;&amp;lt;&lt;span style="color:#66cc66;"&gt;/&lt;/span&gt;&lt;span style="color:#000000;font-weight:bold;"&gt;div&lt;/span&gt;&amp;gt;&lt;/span&gt;
&lt;span style="color:#009900;"&gt;&amp;lt;&lt;span style="color:#66cc66;"&gt;/&lt;/span&gt;&lt;span style="color:#000000;font-weight:bold;"&gt;body&lt;/span&gt;&amp;gt;&lt;/span&gt;
&lt;span style="color:#009900;"&gt;&amp;lt;&lt;span style="color:#66cc66;"&gt;/&lt;/span&gt;&lt;span style="color:#000000;font-weight:bold;"&gt;html&lt;/span&gt;&amp;gt;&lt;/span&gt;
&amp;nbsp;&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;The most important section of this code is the part where we define our REST settings. Note that you don&amp;rsquo;t need any custom code at all, the grid manages all the RESTful CRUD ops for yourself. You can use any service URL which conforms to the RFC specs for GET,POST,PUT, etc.&amp;nbsp;&lt;/p&gt;
&lt;pre style="color:#000;"&gt;                    restSettings: {
                        update: { url: &lt;span style="color:#093;"&gt;&amp;quot;/api/products&amp;quot;&lt;/span&gt; },
                        remove: { url: &lt;span style="color:#093;"&gt;&amp;quot;/api/products&amp;quot;&lt;/span&gt;, batch: &lt;span style="color:#9700cc;"&gt;true&lt;/span&gt; },
                        create: {
                            url: &lt;span style="color:#093;"&gt;&amp;quot;/api/products&amp;quot;&lt;/span&gt;,
                            batch: &lt;span style="color:#9700cc;"&gt;true&lt;/span&gt;
                        }
                    },
&lt;/pre&gt;
&lt;p&gt;Note that every type of operation, &amp;ldquo;update&amp;rdquo;, &amp;ldquo;create&amp;rdquo;, &amp;ldquo;remove&amp;rdquo; , can be batch or not batch. If it is set to batch:true, you can perform several ops in one single request, without having to send multiple requests. The URL in that case will have the following format:&lt;/p&gt;
&lt;p&gt;E.g. creating two products:&lt;/p&gt;
&lt;p&gt;/api/products/?ID=5&amp;amp;ID=6&amp;amp;ID=7&lt;/p&gt;
&lt;p&gt;Also note how The WebAPI automatically intercepts the correct request and executes the corresponding method in the controller, based on the URL and the type of the request. So for example if we have the following request to create a product:&lt;/p&gt;
&lt;p&gt;&lt;img src="http://oi42.tinypic.com/2z512ef.jpg" width="650" height="197" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;The controller method that will be executed is the following:&lt;/p&gt;
&lt;p&gt;&amp;nbsp; // POST api/products&lt;/p&gt;
&lt;p&gt;&amp;nbsp; public HttpResponseMessage PostProduct(Product product)&lt;/p&gt;
&lt;p&gt;Note how WebAPI automatically performs serialization/deserialization of the objects to JSON.&lt;/p&gt;
&lt;p&gt;(Keep in mind if your controller name is Default1 (the default), the request will have the format: // POST api/Default1)&lt;/p&gt;
&lt;p&gt;In a similar way, we can create an MVC view that instantiates the Ignite UI grid using the MVC wrapper extensions, I will leave the details for you (please have a look at the attached sample -&amp;gt; Views/mvc/Index.cshtml).&lt;/p&gt;
&lt;p&gt;Now if we play a bit with our EF model, we add some more entities, such as Order and Company. We can also add associations between those entities, such that a Company can have many products (1:n), and a Product can have many Orders (1:n). Then our model will look like this:&lt;/p&gt;
&lt;p&gt;&lt;img src="http://oi39.tinypic.com/27y27t5.jpg" width="650" height="479" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Note that when you are creating the associations, EF will ask you and create various properties in your Product classes, such as Orders (list), Company (of type Company), etc.&lt;/p&gt;
&lt;p&gt;And here comes the problem if we try to run the same CRUD grid, after we&amp;rsquo;ve added those extra parts in the model &amp;ndash; we are inevitably going to get either Circular reference errors, or other issues with the serializations. The least we&amp;rsquo;ll get is a very bloated response JSON, that will try to serialize a lot of extra data for every product, if we blindly pass the list of Product objects in the response. In order to resolve this, we will create our own MyProduct class, with the following properties:&lt;/p&gt;
&lt;pre class="csharp" style="font-family:monospace;"&gt;&lt;span style="color:#0600ff;"&gt;namespace&lt;/span&gt; RESTWebAPI.&lt;span style="color:#0000ff;"&gt;Models&lt;/span&gt;
&lt;span style="color:#000000;"&gt;{&lt;/span&gt;
    &lt;span style="color:#0600ff;"&gt;public&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;class&lt;/span&gt; MyProduct
    &lt;span style="color:#000000;"&gt;{&lt;/span&gt;
        &lt;span style="color:#0600ff;"&gt;public&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;int&lt;/span&gt; ID &lt;span style="color:#000000;"&gt;{&lt;/span&gt; get&lt;span style="color:#008000;"&gt;;&lt;/span&gt; set&lt;span style="color:#008000;"&gt;;&lt;/span&gt; &lt;span style="color:#000000;"&gt;}&lt;/span&gt;
        &lt;span style="color:#0600ff;"&gt;public&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;string&lt;/span&gt; Name &lt;span style="color:#000000;"&gt;{&lt;/span&gt; get&lt;span style="color:#008000;"&gt;;&lt;/span&gt; set&lt;span style="color:#008000;"&gt;;&lt;/span&gt; &lt;span style="color:#000000;"&gt;}&lt;/span&gt;
        &lt;span style="color:#0600ff;"&gt;public&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;double&lt;/span&gt; Price &lt;span style="color:#000000;"&gt;{&lt;/span&gt; get&lt;span style="color:#008000;"&gt;;&lt;/span&gt; set&lt;span style="color:#008000;"&gt;;&lt;/span&gt; &lt;span style="color:#000000;"&gt;}&lt;/span&gt;
        &lt;span style="color:#0600ff;"&gt;public&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;int&lt;/span&gt; Quantity &lt;span style="color:#000000;"&gt;{&lt;/span&gt; get&lt;span style="color:#008000;"&gt;;&lt;/span&gt; set&lt;span style="color:#008000;"&gt;;&lt;/span&gt; &lt;span style="color:#000000;"&gt;}&lt;/span&gt;
        &lt;span style="color:#0600ff;"&gt;public&lt;/span&gt; DateTime ReleaseDate &lt;span style="color:#000000;"&gt;{&lt;/span&gt; get&lt;span style="color:#008000;"&gt;;&lt;/span&gt; set&lt;span style="color:#008000;"&gt;;&lt;/span&gt; &lt;span style="color:#000000;"&gt;}&lt;/span&gt;
    &lt;span style="color:#000000;"&gt;}&lt;/span&gt;
&amp;nbsp;&lt;/pre&gt;
&lt;p&gt;Then we are also going to create our empty ProductsController, and write the CRUD methods ourselves, by returning instances of MyProduct, instead of &amp;ldquo;Product&amp;rdquo;, with all the extra data in the response.&lt;/p&gt;
&lt;p&gt;One very important thing to note is that the way we are going to implement our WebAPI controller is such that we won&amp;rsquo;t be converting from IQueryables to Lists. That is, if we have paging, and we have 5 entities per page, we won&amp;rsquo;t need to load all records from the DB in memory. We won&amp;rsquo;t be expanding the IQueryables and converting them to other types in foreach loops. We are going to use LINQ, and I hope will like the beauty of it :)&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div style="overflow:auto;height:600px;width:650px;"&gt;
&lt;pre class="csharp" style="font-family:monospace;"&gt;    &lt;span style="color:#0600ff;"&gt;public&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;class&lt;/span&gt; ProductsController &lt;span style="color:#008000;"&gt;:&lt;/span&gt; ApiController
    &lt;span style="color:#000000;"&gt;{&lt;/span&gt;
        &lt;span style="color:#008080;"&gt;#region GET&lt;/span&gt;
        &lt;span style="color:#008080;font-style:italic;"&gt;// READ&lt;/span&gt;
        &lt;span style="color:#008080;font-style:italic;"&gt;// GET /api/products&lt;/span&gt;
        &lt;span style="color:#0600ff;"&gt;public&lt;/span&gt; IQueryable&lt;span style="color:#008000;"&gt;&amp;lt;&lt;/span&gt;MyProduct&lt;span style="color:#008000;"&gt;&amp;gt;&lt;/span&gt; Get&lt;span style="color:#000000;"&gt;(&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;
        &lt;span style="color:#000000;"&gt;{&lt;/span&gt;
            var entities &lt;span style="color:#008000;"&gt;=&lt;/span&gt; &lt;span style="color:#008000;"&gt;new&lt;/span&gt; ProductsEntities&lt;span style="color:#000000;"&gt;(&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;&lt;span style="color:#008000;"&gt;;&lt;/span&gt;
&amp;nbsp;
            &lt;span style="color:#0600ff;"&gt;return&lt;/span&gt; from product &lt;span style="color:#0600ff;"&gt;in&lt;/span&gt; entities.&lt;span style="color:#0000ff;"&gt;Products&lt;/span&gt;
                   select &lt;span style="color:#008000;"&gt;new&lt;/span&gt; MyProduct
                       &lt;span style="color:#000000;"&gt;{&lt;/span&gt;
                           ID &lt;span style="color:#008000;"&gt;=&lt;/span&gt; product.&lt;span style="color:#0000ff;"&gt;ID&lt;/span&gt;,
                           Name &lt;span style="color:#008000;"&gt;=&lt;/span&gt; product.&lt;span style="color:#0000ff;"&gt;Name&lt;/span&gt;,
                           Price &lt;span style="color:#008000;"&gt;=&lt;/span&gt; product.&lt;span style="color:#0000ff;"&gt;Price&lt;/span&gt;,
                           Quantity &lt;span style="color:#008000;"&gt;=&lt;/span&gt; product.&lt;span style="color:#0000ff;"&gt;Quantity&lt;/span&gt;,
                           ReleaseDate &lt;span style="color:#008000;"&gt;=&lt;/span&gt; product.&lt;span style="color:#0000ff;"&gt;ReleaseDate&lt;/span&gt;
                       &lt;span style="color:#000000;"&gt;}&lt;/span&gt;&lt;span style="color:#008000;"&gt;;&lt;/span&gt;
        &lt;span style="color:#000000;"&gt;}&lt;/span&gt;
&amp;nbsp;
        &lt;span style="color:#008080;font-style:italic;"&gt;// GET /api/products/id&lt;/span&gt;
        &lt;span style="color:#0600ff;"&gt;public&lt;/span&gt; MyProduct Get&lt;span style="color:#000000;"&gt;(&lt;/span&gt;&lt;span style="color:#ff0000;"&gt;int&lt;/span&gt; id&lt;span style="color:#000000;"&gt;)&lt;/span&gt;
        &lt;span style="color:#000000;"&gt;{&lt;/span&gt;
            var entities &lt;span style="color:#008000;"&gt;=&lt;/span&gt; &lt;span style="color:#008000;"&gt;new&lt;/span&gt; ProductsEntities&lt;span style="color:#000000;"&gt;(&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;&lt;span style="color:#008000;"&gt;;&lt;/span&gt;
            MyProduct product &lt;span style="color:#008000;"&gt;=&lt;/span&gt;  &lt;span style="color:#000000;"&gt;(&lt;/span&gt;from p &lt;span style="color:#0600ff;"&gt;in&lt;/span&gt; entities.&lt;span style="color:#0000ff;"&gt;Products&lt;/span&gt; where p.&lt;span style="color:#0000ff;"&gt;ID&lt;/span&gt; &lt;span style="color:#008000;"&gt;==&lt;/span&gt; id
                                select &lt;span style="color:#008000;"&gt;new&lt;/span&gt; MyProduct
                                &lt;span style="color:#000000;"&gt;{&lt;/span&gt;
                                    ID &lt;span style="color:#008000;"&gt;=&lt;/span&gt; p.&lt;span style="color:#0000ff;"&gt;ID&lt;/span&gt;,
                                    Name &lt;span style="color:#008000;"&gt;=&lt;/span&gt; p.&lt;span style="color:#0000ff;"&gt;Name&lt;/span&gt;,
                                    Price &lt;span style="color:#008000;"&gt;=&lt;/span&gt; p.&lt;span style="color:#0000ff;"&gt;Price&lt;/span&gt;,
                                    Quantity &lt;span style="color:#008000;"&gt;=&lt;/span&gt; p.&lt;span style="color:#0000ff;"&gt;Quantity&lt;/span&gt;,
                                    ReleaseDate &lt;span style="color:#008000;"&gt;=&lt;/span&gt; p.&lt;span style="color:#0000ff;"&gt;ReleaseDate&lt;/span&gt;
                                &lt;span style="color:#000000;"&gt;}&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;.&lt;span style="color:#0000ff;"&gt;First&lt;/span&gt;&lt;span style="color:#000000;"&gt;(&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;&lt;span style="color:#008000;"&gt;;&lt;/span&gt;
            &lt;span style="color:#0600ff;"&gt;if&lt;/span&gt; &lt;span style="color:#000000;"&gt;(&lt;/span&gt;product &lt;span style="color:#008000;"&gt;==&lt;/span&gt; &lt;span style="color:#0600ff;"&gt;null&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;
                &lt;span style="color:#0600ff;"&gt;throw&lt;/span&gt; &lt;span style="color:#008000;"&gt;new&lt;/span&gt; HttpResponseException&lt;span style="color:#000000;"&gt;(&lt;/span&gt;&lt;span style="color:#008000;"&gt;new&lt;/span&gt; HttpResponseMessage&lt;span style="color:#000000;"&gt;(&lt;/span&gt;HttpStatusCode.&lt;span style="color:#0000ff;"&gt;NotFound&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;&lt;span style="color:#008000;"&gt;;&lt;/span&gt;
            &lt;span style="color:#0600ff;"&gt;return&lt;/span&gt; product&lt;span style="color:#008000;"&gt;;&lt;/span&gt;
        &lt;span style="color:#000000;"&gt;}&lt;/span&gt;
        &lt;span style="color:#008080;"&gt;#endregion GET&lt;/span&gt;
&amp;nbsp;
        &lt;span style="color:#008080;"&gt;#region POST&lt;/span&gt;
        &lt;span style="color:#008080;font-style:italic;"&gt;// CREATE&lt;/span&gt;
        &lt;span style="color:#008080;font-style:italic;"&gt;// POST /api/products&lt;/span&gt;
        &lt;span style="color:#0600ff;"&gt;public&lt;/span&gt; HttpResponseMessage Post&lt;span style="color:#000000;"&gt;(&lt;/span&gt;IEnumerable&lt;span style="color:#008000;"&gt;&amp;lt;&lt;/span&gt;MyProduct&lt;span style="color:#008000;"&gt;&amp;gt;&lt;/span&gt; products&lt;span style="color:#000000;"&gt;)&lt;/span&gt;
        &lt;span style="color:#000000;"&gt;{&lt;/span&gt;
            var entities &lt;span style="color:#008000;"&gt;=&lt;/span&gt; &lt;span style="color:#008000;"&gt;new&lt;/span&gt; ProductsEntities&lt;span style="color:#000000;"&gt;(&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;&lt;span style="color:#008000;"&gt;;&lt;/span&gt;
            &lt;span style="color:#0600ff;"&gt;if&lt;/span&gt; &lt;span style="color:#000000;"&gt;(&lt;/span&gt;ModelState.&lt;span style="color:#0000ff;"&gt;IsValid&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;
            &lt;span style="color:#000000;"&gt;{&lt;/span&gt;
&amp;nbsp;
                &lt;span style="color:#008080;font-style:italic;"&gt;// detect conflicts&lt;/span&gt;
                &lt;span style="color:#0600ff;"&gt;foreach&lt;/span&gt; &lt;span style="color:#000000;"&gt;(&lt;/span&gt;MyProduct p &lt;span style="color:#0600ff;"&gt;in&lt;/span&gt; products&lt;span style="color:#000000;"&gt;)&lt;/span&gt;
                &lt;span style="color:#000000;"&gt;{&lt;/span&gt;
                    &lt;span style="color:#0600ff;"&gt;if&lt;/span&gt; &lt;span style="color:#000000;"&gt;(&lt;/span&gt;entities.&lt;span style="color:#0000ff;"&gt;Products&lt;/span&gt;.&lt;span style="color:#0000ff;"&gt;Where&lt;/span&gt;&lt;span style="color:#000000;"&gt;(&lt;/span&gt;e &lt;span style="color:#008000;"&gt;=&amp;gt;&lt;/span&gt; e.&lt;span style="color:#0000ff;"&gt;ID&lt;/span&gt; &lt;span style="color:#008000;"&gt;==&lt;/span&gt; p.&lt;span style="color:#0000ff;"&gt;ID&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;.&lt;span style="color:#0000ff;"&gt;Count&lt;/span&gt;&lt;span style="color:#000000;"&gt;(&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt; &lt;span style="color:#008000;"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;0&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;
                        &lt;span style="color:#0600ff;"&gt;throw&lt;/span&gt; &lt;span style="color:#008000;"&gt;new&lt;/span&gt; HttpResponseException&lt;span style="color:#000000;"&gt;(&lt;/span&gt;&lt;span style="color:#008000;"&gt;new&lt;/span&gt; HttpResponseMessage&lt;span style="color:#000000;"&gt;(&lt;/span&gt;HttpStatusCode.&lt;span style="color:#0000ff;"&gt;Conflict&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;&lt;span style="color:#008000;"&gt;;&lt;/span&gt;
                &lt;span style="color:#000000;"&gt;}&lt;/span&gt;
&amp;nbsp;
                &lt;span style="color:#008080;font-style:italic;"&gt;//persist through EF&lt;/span&gt;
                &lt;span style="color:#0600ff;"&gt;foreach&lt;/span&gt; &lt;span style="color:#000000;"&gt;(&lt;/span&gt;MyProduct myProd &lt;span style="color:#0600ff;"&gt;in&lt;/span&gt; products&lt;span style="color:#000000;"&gt;)&lt;/span&gt;
                &lt;span style="color:#000000;"&gt;{&lt;/span&gt;
                    Product p &lt;span style="color:#008000;"&gt;=&lt;/span&gt; &lt;span style="color:#008000;"&gt;new&lt;/span&gt; Product&lt;span style="color:#000000;"&gt;(&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;&lt;span style="color:#008000;"&gt;;&lt;/span&gt;
                    p.&lt;span style="color:#0000ff;"&gt;ID&lt;/span&gt; &lt;span style="color:#008000;"&gt;=&lt;/span&gt; myProd.&lt;span style="color:#0000ff;"&gt;ID&lt;/span&gt;&lt;span style="color:#008000;"&gt;;&lt;/span&gt;
                    p.&lt;span style="color:#0000ff;"&gt;Name&lt;/span&gt; &lt;span style="color:#008000;"&gt;=&lt;/span&gt; myProd.&lt;span style="color:#0000ff;"&gt;Name&lt;/span&gt;&lt;span style="color:#008000;"&gt;;&lt;/span&gt;
                    p.&lt;span style="color:#0000ff;"&gt;Price&lt;/span&gt; &lt;span style="color:#008000;"&gt;=&lt;/span&gt; myProd.&lt;span style="color:#0000ff;"&gt;Price&lt;/span&gt;&lt;span style="color:#008000;"&gt;;&lt;/span&gt;
                    p.&lt;span style="color:#0000ff;"&gt;Quantity&lt;/span&gt; &lt;span style="color:#008000;"&gt;=&lt;/span&gt; myProd.&lt;span style="color:#0000ff;"&gt;Quantity&lt;/span&gt;&lt;span style="color:#008000;"&gt;;&lt;/span&gt;
                    p.&lt;span style="color:#0000ff;"&gt;ReleaseDate&lt;/span&gt; &lt;span style="color:#008000;"&gt;=&lt;/span&gt; myProd.&lt;span style="color:#0000ff;"&gt;ReleaseDate&lt;/span&gt;&lt;span style="color:#008000;"&gt;;&lt;/span&gt;
                    entities.&lt;span style="color:#0000ff;"&gt;Products&lt;/span&gt;.&lt;span style="color:#0000ff;"&gt;AddObject&lt;/span&gt;&lt;span style="color:#000000;"&gt;(&lt;/span&gt;p&lt;span style="color:#000000;"&gt;)&lt;/span&gt;&lt;span style="color:#008000;"&gt;;&lt;/span&gt;
                &lt;span style="color:#000000;"&gt;}&lt;/span&gt;
                &lt;span style="color:#0600ff;"&gt;try&lt;/span&gt;
                &lt;span style="color:#000000;"&gt;{&lt;/span&gt;
                    entities.&lt;span style="color:#0000ff;"&gt;SaveChanges&lt;/span&gt;&lt;span style="color:#000000;"&gt;(&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;&lt;span style="color:#008000;"&gt;;&lt;/span&gt;
                &lt;span style="color:#000000;"&gt;}&lt;/span&gt;
                &lt;span style="color:#0600ff;"&gt;catch&lt;/span&gt;
                &lt;span style="color:#000000;"&gt;{&lt;/span&gt;
                    &lt;span style="color:#0600ff;"&gt;throw&lt;/span&gt; &lt;span style="color:#008000;"&gt;new&lt;/span&gt; HttpResponseException&lt;span style="color:#000000;"&gt;(&lt;/span&gt;&lt;span style="color:#008000;"&gt;new&lt;/span&gt; HttpResponseMessage&lt;span style="color:#000000;"&gt;(&lt;/span&gt;HttpStatusCode.&lt;span style="color:#0000ff;"&gt;Conflict&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;&lt;span style="color:#008000;"&gt;;&lt;/span&gt;
                &lt;span style="color:#000000;"&gt;}&lt;/span&gt;
                &lt;span style="color:#008080;font-style:italic;"&gt;// create response&lt;/span&gt;
                HttpResponseMessage response &lt;span style="color:#008000;"&gt;=&lt;/span&gt; Request.&lt;span style="color:#0000ff;"&gt;CreateResponse&lt;/span&gt;&lt;span style="color:#000000;"&gt;(&lt;/span&gt;HttpStatusCode.&lt;span style="color:#0000ff;"&gt;Created&lt;/span&gt;, products&lt;span style="color:#000000;"&gt;)&lt;/span&gt;&lt;span style="color:#008000;"&gt;;&lt;/span&gt;
                &lt;span style="color:#008080;font-style:italic;"&gt;// 201 Created should also return the location of the new resource.&lt;/span&gt;
                &lt;span style="color:#008080;font-style:italic;"&gt;// As we are creating more than one we&amp;#39;ll only add the location of the first.&lt;/span&gt;
                &lt;span style="color:#ff0000;"&gt;string&lt;/span&gt; uri &lt;span style="color:#008000;"&gt;=&lt;/span&gt; Url.&lt;span style="color:#0000ff;"&gt;Route&lt;/span&gt;&lt;span style="color:#000000;"&gt;(&lt;/span&gt;&lt;span style="color:#0600ff;"&gt;null&lt;/span&gt;, &lt;span style="color:#008000;"&gt;new&lt;/span&gt; &lt;span style="color:#000000;"&gt;{&lt;/span&gt; id &lt;span style="color:#008000;"&gt;=&lt;/span&gt; products.&lt;span style="color:#0000ff;"&gt;First&lt;/span&gt;&lt;span style="color:#008000;"&gt;&amp;lt;&lt;/span&gt;MyProduct&lt;span style="color:#008000;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;(&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;.&lt;span style="color:#0000ff;"&gt;ID&lt;/span&gt; &lt;span style="color:#000000;"&gt;}&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;&lt;span style="color:#008000;"&gt;;&lt;/span&gt;
                response.&lt;span style="color:#0000ff;"&gt;Headers&lt;/span&gt;.&lt;span style="color:#0000ff;"&gt;Location&lt;/span&gt; &lt;span style="color:#008000;"&gt;=&lt;/span&gt; &lt;span style="color:#008000;"&gt;new&lt;/span&gt; Uri&lt;span style="color:#000000;"&gt;(&lt;/span&gt;Request.&lt;span style="color:#0000ff;"&gt;RequestUri&lt;/span&gt;, uri&lt;span style="color:#000000;"&gt;)&lt;/span&gt;&lt;span style="color:#008000;"&gt;;&lt;/span&gt;
                &lt;span style="color:#0600ff;"&gt;return&lt;/span&gt; response&lt;span style="color:#008000;"&gt;;&lt;/span&gt;
            &lt;span style="color:#000000;"&gt;}&lt;/span&gt;
            &lt;span style="color:#0600ff;"&gt;throw&lt;/span&gt; &lt;span style="color:#008000;"&gt;new&lt;/span&gt; HttpResponseException&lt;span style="color:#000000;"&gt;(&lt;/span&gt;&lt;span style="color:#008000;"&gt;new&lt;/span&gt; HttpResponseMessage&lt;span style="color:#000000;"&gt;(&lt;/span&gt;HttpStatusCode.&lt;span style="color:#0000ff;"&gt;BadRequest&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;&lt;span style="color:#008000;"&gt;;&lt;/span&gt;
        &lt;span style="color:#000000;"&gt;}&lt;/span&gt;
        &lt;span style="color:#008080;"&gt;#endregion&lt;/span&gt;
&amp;nbsp;
        &lt;span style="color:#008080;"&gt;#region PUT&lt;/span&gt;
        &lt;span style="color:#008080;font-style:italic;"&gt;// PUT /api/products/5&lt;/span&gt;
        &lt;span style="color:#0600ff;"&gt;public&lt;/span&gt; HttpResponseMessage Put&lt;span style="color:#000000;"&gt;(&lt;/span&gt;&lt;span style="color:#ff0000;"&gt;int&lt;/span&gt; id, MyProduct updatedProduct&lt;span style="color:#000000;"&gt;)&lt;/span&gt;
        &lt;span style="color:#000000;"&gt;{&lt;/span&gt;
            var entities &lt;span style="color:#008000;"&gt;=&lt;/span&gt; &lt;span style="color:#008000;"&gt;new&lt;/span&gt; ProductsEntities&lt;span style="color:#000000;"&gt;(&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;&lt;span style="color:#008000;"&gt;;&lt;/span&gt;
            &lt;span style="color:#0600ff;"&gt;if&lt;/span&gt; &lt;span style="color:#000000;"&gt;(&lt;/span&gt;ModelState.&lt;span style="color:#0000ff;"&gt;IsValid&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;
            &lt;span style="color:#000000;"&gt;{&lt;/span&gt;
                &lt;span style="color:#008080;font-style:italic;"&gt;// find product&lt;/span&gt;
                Product p &lt;span style="color:#008000;"&gt;=&lt;/span&gt; entities.&lt;span style="color:#0000ff;"&gt;Products&lt;/span&gt;.&lt;span style="color:#0000ff;"&gt;Where&lt;/span&gt;&lt;span style="color:#000000;"&gt;(&lt;/span&gt;o &lt;span style="color:#008000;"&gt;=&amp;gt;&lt;/span&gt; o.&lt;span style="color:#0000ff;"&gt;ID&lt;/span&gt; &lt;span style="color:#008000;"&gt;==&lt;/span&gt; updatedProduct.&lt;span style="color:#0000ff;"&gt;ID&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;.&lt;span style="color:#0000ff;"&gt;First&lt;/span&gt;&lt;span style="color:#000000;"&gt;(&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;&lt;span style="color:#008000;"&gt;;&lt;/span&gt;
                &lt;span style="color:#0600ff;"&gt;if&lt;/span&gt; &lt;span style="color:#000000;"&gt;(&lt;/span&gt;p &lt;span style="color:#008000;"&gt;!=&lt;/span&gt; &lt;span style="color:#0600ff;"&gt;null&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;
                &lt;span style="color:#000000;"&gt;{&lt;/span&gt;
                    p.&lt;span style="color:#0000ff;"&gt;ID&lt;/span&gt; &lt;span style="color:#008000;"&gt;=&lt;/span&gt; updatedProduct.&lt;span style="color:#0000ff;"&gt;ID&lt;/span&gt;&lt;span style="color:#008000;"&gt;;&lt;/span&gt;
                    p.&lt;span style="color:#0000ff;"&gt;Name&lt;/span&gt; &lt;span style="color:#008000;"&gt;=&lt;/span&gt; updatedProduct.&lt;span style="color:#0000ff;"&gt;Name&lt;/span&gt;&lt;span style="color:#008000;"&gt;;&lt;/span&gt;
                    p.&lt;span style="color:#0000ff;"&gt;Price&lt;/span&gt; &lt;span style="color:#008000;"&gt;=&lt;/span&gt; updatedProduct.&lt;span style="color:#0000ff;"&gt;Price&lt;/span&gt;&lt;span style="color:#008000;"&gt;;&lt;/span&gt;
                    p.&lt;span style="color:#0000ff;"&gt;Quantity&lt;/span&gt; &lt;span style="color:#008000;"&gt;=&lt;/span&gt; updatedProduct.&lt;span style="color:#0000ff;"&gt;Quantity&lt;/span&gt;&lt;span style="color:#008000;"&gt;;&lt;/span&gt;
                    p.&lt;span style="color:#0000ff;"&gt;ReleaseDate&lt;/span&gt; &lt;span style="color:#008000;"&gt;=&lt;/span&gt; updatedProduct.&lt;span style="color:#0000ff;"&gt;ReleaseDate&lt;/span&gt;&lt;span style="color:#008000;"&gt;;&lt;/span&gt;
                    &lt;span style="color:#0600ff;"&gt;try&lt;/span&gt;
                    &lt;span style="color:#000000;"&gt;{&lt;/span&gt;
                        entities.&lt;span style="color:#0000ff;"&gt;SaveChanges&lt;/span&gt;&lt;span style="color:#000000;"&gt;(&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;&lt;span style="color:#008000;"&gt;;&lt;/span&gt;
                        &lt;span style="color:#008080;font-style:italic;"&gt;/* Alternatively the response can be * 200 OK if update was enacted correctly (same as 204 No Content) * The response does not have to include a representation of the entity updated return new HttpResponseMessage(HttpStatusCode.OK); */&lt;/span&gt;
                        &lt;span style="color:#0600ff;"&gt;return&lt;/span&gt; &lt;span style="color:#008000;"&gt;new&lt;/span&gt; HttpResponseMessage&lt;span style="color:#000000;"&gt;(&lt;/span&gt;HttpStatusCode.&lt;span style="color:#0000ff;"&gt;NoContent&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;&lt;span style="color:#008000;"&gt;;&lt;/span&gt;
                    &lt;span style="color:#000000;"&gt;}&lt;/span&gt;
                    &lt;span style="color:#0600ff;"&gt;catch&lt;/span&gt; 
                    &lt;span style="color:#000000;"&gt;{&lt;/span&gt;
                        &lt;span style="color:#0600ff;"&gt;throw&lt;/span&gt; &lt;span style="color:#008000;"&gt;new&lt;/span&gt; HttpResponseException&lt;span style="color:#000000;"&gt;(&lt;/span&gt;&lt;span style="color:#008000;"&gt;new&lt;/span&gt; HttpResponseMessage&lt;span style="color:#000000;"&gt;(&lt;/span&gt;HttpStatusCode.&lt;span style="color:#0000ff;"&gt;Conflict&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;&lt;span style="color:#008000;"&gt;;&lt;/span&gt;
                    &lt;span style="color:#000000;"&gt;}&lt;/span&gt;
                &lt;span style="color:#000000;"&gt;}&lt;/span&gt;
                &lt;span style="color:#008080;font-style:italic;"&gt;// if resource is not found it should be created&lt;/span&gt;
                p &lt;span style="color:#008000;"&gt;=&lt;/span&gt; &lt;span style="color:#008000;"&gt;new&lt;/span&gt; Product&lt;span style="color:#000000;"&gt;(&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;&lt;span style="color:#008000;"&gt;;&lt;/span&gt;
                p.&lt;span style="color:#0000ff;"&gt;ID&lt;/span&gt; &lt;span style="color:#008000;"&gt;=&lt;/span&gt; updatedProduct.&lt;span style="color:#0000ff;"&gt;ID&lt;/span&gt;&lt;span style="color:#008000;"&gt;;&lt;/span&gt;
                p.&lt;span style="color:#0000ff;"&gt;Name&lt;/span&gt; &lt;span style="color:#008000;"&gt;=&lt;/span&gt; updatedProduct.&lt;span style="color:#0000ff;"&gt;Name&lt;/span&gt;&lt;span style="color:#008000;"&gt;;&lt;/span&gt;
                p.&lt;span style="color:#0000ff;"&gt;Quantity&lt;/span&gt; &lt;span style="color:#008000;"&gt;=&lt;/span&gt; updatedProduct.&lt;span style="color:#0000ff;"&gt;Quantity&lt;/span&gt;&lt;span style="color:#008000;"&gt;;&lt;/span&gt;
                p.&lt;span style="color:#0000ff;"&gt;Price&lt;/span&gt; &lt;span style="color:#008000;"&gt;=&lt;/span&gt; updatedProduct.&lt;span style="color:#0000ff;"&gt;Price&lt;/span&gt;&lt;span style="color:#008000;"&gt;;&lt;/span&gt;
                p.&lt;span style="color:#0000ff;"&gt;ReleaseDate&lt;/span&gt; &lt;span style="color:#008000;"&gt;=&lt;/span&gt; updatedProduct.&lt;span style="color:#0000ff;"&gt;ReleaseDate&lt;/span&gt;&lt;span style="color:#008000;"&gt;;&lt;/span&gt;
                entities.&lt;span style="color:#0000ff;"&gt;Products&lt;/span&gt;.&lt;span style="color:#0000ff;"&gt;AddObject&lt;/span&gt;&lt;span style="color:#000000;"&gt;(&lt;/span&gt;p&lt;span style="color:#000000;"&gt;)&lt;/span&gt;&lt;span style="color:#008000;"&gt;;&lt;/span&gt;
&amp;nbsp;
                &lt;span style="color:#008080;font-style:italic;"&gt;// create response&lt;/span&gt;
                HttpResponseMessage response &lt;span style="color:#008000;"&gt;=&lt;/span&gt; Request.&lt;span style="color:#0000ff;"&gt;CreateResponse&lt;/span&gt;&lt;span style="color:#000000;"&gt;(&lt;/span&gt;HttpStatusCode.&lt;span style="color:#0000ff;"&gt;Created&lt;/span&gt;, updatedProduct&lt;span style="color:#000000;"&gt;)&lt;/span&gt;&lt;span style="color:#008000;"&gt;;&lt;/span&gt;
                &lt;span style="color:#008080;font-style:italic;"&gt;// 201 Created should also return the location of the new resource.&lt;/span&gt;
                &lt;span style="color:#ff0000;"&gt;string&lt;/span&gt; uri &lt;span style="color:#008000;"&gt;=&lt;/span&gt; Url.&lt;span style="color:#0000ff;"&gt;Route&lt;/span&gt;&lt;span style="color:#000000;"&gt;(&lt;/span&gt;&lt;span style="color:#0600ff;"&gt;null&lt;/span&gt;, &lt;span style="color:#008000;"&gt;new&lt;/span&gt; &lt;span style="color:#000000;"&gt;{&lt;/span&gt; id &lt;span style="color:#008000;"&gt;=&lt;/span&gt; updatedProduct.&lt;span style="color:#0000ff;"&gt;ID&lt;/span&gt; &lt;span style="color:#000000;"&gt;}&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;&lt;span style="color:#008000;"&gt;;&lt;/span&gt;
                response.&lt;span style="color:#0000ff;"&gt;Headers&lt;/span&gt;.&lt;span style="color:#0000ff;"&gt;Location&lt;/span&gt; &lt;span style="color:#008000;"&gt;=&lt;/span&gt; &lt;span style="color:#008000;"&gt;new&lt;/span&gt; Uri&lt;span style="color:#000000;"&gt;(&lt;/span&gt;Request.&lt;span style="color:#0000ff;"&gt;RequestUri&lt;/span&gt;, uri&lt;span style="color:#000000;"&gt;)&lt;/span&gt;&lt;span style="color:#008000;"&gt;;&lt;/span&gt;
                &lt;span style="color:#0600ff;"&gt;return&lt;/span&gt; response&lt;span style="color:#008000;"&gt;;&lt;/span&gt;
            &lt;span style="color:#000000;"&gt;}&lt;/span&gt;
            &lt;span style="color:#0600ff;"&gt;throw&lt;/span&gt; &lt;span style="color:#008000;"&gt;new&lt;/span&gt; HttpResponseException&lt;span style="color:#000000;"&gt;(&lt;/span&gt;&lt;span style="color:#008000;"&gt;new&lt;/span&gt; HttpResponseMessage&lt;span style="color:#000000;"&gt;(&lt;/span&gt;HttpStatusCode.&lt;span style="color:#0000ff;"&gt;BadRequest&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;&lt;span style="color:#008000;"&gt;;&lt;/span&gt;
        &lt;span style="color:#000000;"&gt;}&lt;/span&gt;
&amp;nbsp;
        &lt;span style="color:#008080;font-style:italic;"&gt;// PUT /api/products/?ID=5&amp;amp;ID=6&amp;amp;ID=7&lt;/span&gt;
        &lt;span style="color:#0600ff;"&gt;public&lt;/span&gt; HttpResponseMessage Put&lt;span style="color:#000000;"&gt;(&lt;/span&gt;&lt;span style="color:#000000;"&gt;[&lt;/span&gt;FromUri&lt;span style="color:#000000;"&gt;]&lt;/span&gt;IEnumerable&lt;span style="color:#008000;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#ff0000;"&gt;int&lt;/span&gt;&lt;span style="color:#008000;"&gt;&amp;gt;&lt;/span&gt; index, IEnumerable&lt;span style="color:#008000;"&gt;&amp;lt;&lt;/span&gt;MyProduct&lt;span style="color:#008000;"&gt;&amp;gt;&lt;/span&gt; updatedProducts&lt;span style="color:#000000;"&gt;)&lt;/span&gt;
        &lt;span style="color:#000000;"&gt;{&lt;/span&gt;
            var entities &lt;span style="color:#008000;"&gt;=&lt;/span&gt; &lt;span style="color:#008000;"&gt;new&lt;/span&gt; ProductsEntities&lt;span style="color:#000000;"&gt;(&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;&lt;span style="color:#008000;"&gt;;&lt;/span&gt;
            List&lt;span style="color:#008000;"&gt;&amp;lt;&lt;/span&gt;MyProduct&lt;span style="color:#008000;"&gt;&amp;gt;&lt;/span&gt; createProducts &lt;span style="color:#008000;"&gt;=&lt;/span&gt; &lt;span style="color:#008000;"&gt;new&lt;/span&gt; List&lt;span style="color:#008000;"&gt;&amp;lt;&lt;/span&gt;MyProduct&lt;span style="color:#008000;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;(&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;&lt;span style="color:#008000;"&gt;;&lt;/span&gt;
            &lt;span style="color:#ff0000;"&gt;bool&lt;/span&gt; created &lt;span style="color:#008000;"&gt;=&lt;/span&gt; false&lt;span style="color:#008000;"&gt;;&lt;/span&gt;
            &lt;span style="color:#0600ff;"&gt;if&lt;/span&gt; &lt;span style="color:#000000;"&gt;(&lt;/span&gt;ModelState.&lt;span style="color:#0000ff;"&gt;IsValid&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;
            &lt;span style="color:#000000;"&gt;{&lt;/span&gt;
                &lt;span style="color:#0600ff;"&gt;foreach&lt;/span&gt; &lt;span style="color:#000000;"&gt;(&lt;/span&gt;MyProduct updatedProduct &lt;span style="color:#0600ff;"&gt;in&lt;/span&gt; updatedProducts&lt;span style="color:#000000;"&gt;)&lt;/span&gt;
                &lt;span style="color:#000000;"&gt;{&lt;/span&gt;
                    Product p &lt;span style="color:#008000;"&gt;=&lt;/span&gt; entities.&lt;span style="color:#0000ff;"&gt;Products&lt;/span&gt;.&lt;span style="color:#0000ff;"&gt;Where&lt;/span&gt;&lt;span style="color:#000000;"&gt;(&lt;/span&gt;o &lt;span style="color:#008000;"&gt;=&amp;gt;&lt;/span&gt; o.&lt;span style="color:#0000ff;"&gt;ID&lt;/span&gt; &lt;span style="color:#008000;"&gt;==&lt;/span&gt; updatedProduct.&lt;span style="color:#0000ff;"&gt;ID&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;.&lt;span style="color:#0000ff;"&gt;First&lt;/span&gt;&lt;span style="color:#000000;"&gt;(&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;&lt;span style="color:#008000;"&gt;;&lt;/span&gt;
                    &lt;span style="color:#0600ff;"&gt;if&lt;/span&gt; &lt;span style="color:#000000;"&gt;(&lt;/span&gt;p &lt;span style="color:#008000;"&gt;!=&lt;/span&gt; &lt;span style="color:#0600ff;"&gt;null&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;
                    &lt;span style="color:#000000;"&gt;{&lt;/span&gt;
                        p.&lt;span style="color:#0000ff;"&gt;ID&lt;/span&gt; &lt;span style="color:#008000;"&gt;=&lt;/span&gt; updatedProduct.&lt;span style="color:#0000ff;"&gt;ID&lt;/span&gt;&lt;span style="color:#008000;"&gt;;&lt;/span&gt;
                        p.&lt;span style="color:#0000ff;"&gt;Name&lt;/span&gt; &lt;span style="color:#008000;"&gt;=&lt;/span&gt; updatedProduct.&lt;span style="color:#0000ff;"&gt;Name&lt;/span&gt;&lt;span style="color:#008000;"&gt;;&lt;/span&gt;
                        p.&lt;span style="color:#0000ff;"&gt;Price&lt;/span&gt; &lt;span style="color:#008000;"&gt;=&lt;/span&gt; updatedProduct.&lt;span style="color:#0000ff;"&gt;Price&lt;/span&gt;&lt;span style="color:#008000;"&gt;;&lt;/span&gt;
                        p.&lt;span style="color:#0000ff;"&gt;Quantity&lt;/span&gt; &lt;span style="color:#008000;"&gt;=&lt;/span&gt; updatedProduct.&lt;span style="color:#0000ff;"&gt;Quantity&lt;/span&gt;&lt;span style="color:#008000;"&gt;;&lt;/span&gt;
                        p.&lt;span style="color:#0000ff;"&gt;ReleaseDate&lt;/span&gt; &lt;span style="color:#008000;"&gt;=&lt;/span&gt; updatedProduct.&lt;span style="color:#0000ff;"&gt;ReleaseDate&lt;/span&gt;&lt;span style="color:#008000;"&gt;;&lt;/span&gt;
                    &lt;span style="color:#000000;"&gt;}&lt;/span&gt;
                    &lt;span style="color:#0600ff;"&gt;else&lt;/span&gt;
                    &lt;span style="color:#000000;"&gt;{&lt;/span&gt;
                        created &lt;span style="color:#008000;"&gt;=&lt;/span&gt; true&lt;span style="color:#008000;"&gt;;&lt;/span&gt;
                        &lt;span style="color:#008080;font-style:italic;"&gt;// if resource is not found it should be created&lt;/span&gt;
                        p &lt;span style="color:#008000;"&gt;=&lt;/span&gt; &lt;span style="color:#008000;"&gt;new&lt;/span&gt; Product&lt;span style="color:#000000;"&gt;(&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;&lt;span style="color:#008000;"&gt;;&lt;/span&gt;
                        p.&lt;span style="color:#0000ff;"&gt;ID&lt;/span&gt; &lt;span style="color:#008000;"&gt;=&lt;/span&gt; updatedProduct.&lt;span style="color:#0000ff;"&gt;ID&lt;/span&gt;&lt;span style="color:#008000;"&gt;;&lt;/span&gt;
                        p.&lt;span style="color:#0000ff;"&gt;Name&lt;/span&gt; &lt;span style="color:#008000;"&gt;=&lt;/span&gt; updatedProduct.&lt;span style="color:#0000ff;"&gt;Name&lt;/span&gt;&lt;span style="color:#008000;"&gt;;&lt;/span&gt;
                        p.&lt;span style="color:#0000ff;"&gt;Quantity&lt;/span&gt; &lt;span style="color:#008000;"&gt;=&lt;/span&gt; updatedProduct.&lt;span style="color:#0000ff;"&gt;Quantity&lt;/span&gt;&lt;span style="color:#008000;"&gt;;&lt;/span&gt;
                        p.&lt;span style="color:#0000ff;"&gt;Price&lt;/span&gt; &lt;span style="color:#008000;"&gt;=&lt;/span&gt; updatedProduct.&lt;span style="color:#0000ff;"&gt;Price&lt;/span&gt;&lt;span style="color:#008000;"&gt;;&lt;/span&gt;
                        p.&lt;span style="color:#0000ff;"&gt;ReleaseDate&lt;/span&gt; &lt;span style="color:#008000;"&gt;=&lt;/span&gt; updatedProduct.&lt;span style="color:#0000ff;"&gt;ReleaseDate&lt;/span&gt;&lt;span style="color:#008000;"&gt;;&lt;/span&gt;
                        entities.&lt;span style="color:#0000ff;"&gt;Products&lt;/span&gt;.&lt;span style="color:#0000ff;"&gt;AddObject&lt;/span&gt;&lt;span style="color:#000000;"&gt;(&lt;/span&gt;p&lt;span style="color:#000000;"&gt;)&lt;/span&gt;&lt;span style="color:#008000;"&gt;;&lt;/span&gt;
                        createProducts.&lt;span style="color:#0000ff;"&gt;Add&lt;/span&gt;&lt;span style="color:#000000;"&gt;(&lt;/span&gt;updatedProduct&lt;span style="color:#000000;"&gt;)&lt;/span&gt;&lt;span style="color:#008000;"&gt;;&lt;/span&gt;
                    &lt;span style="color:#000000;"&gt;}&lt;/span&gt;
                &lt;span style="color:#000000;"&gt;}&lt;/span&gt;
                &lt;span style="color:#0600ff;"&gt;try&lt;/span&gt;
                &lt;span style="color:#000000;"&gt;{&lt;/span&gt;
                    entities.&lt;span style="color:#0000ff;"&gt;SaveChanges&lt;/span&gt;&lt;span style="color:#000000;"&gt;(&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;&lt;span style="color:#008000;"&gt;;&lt;/span&gt;
                    &lt;span style="color:#008080;font-style:italic;"&gt;/* Alternatively the response can be * 200 OK if update was enacted correctly (same as 204 No Content) * The response does not have to include a representation of the entity updated return new HttpResponseMessage(HttpStatusCode.OK); */&lt;/span&gt;
                    &lt;span style="color:#0600ff;"&gt;if&lt;/span&gt; &lt;span style="color:#000000;"&gt;(&lt;/span&gt;&lt;span style="color:#008000;"&gt;!&lt;/span&gt;created&lt;span style="color:#000000;"&gt;)&lt;/span&gt;
                    &lt;span style="color:#000000;"&gt;{&lt;/span&gt;
                        &lt;span style="color:#0600ff;"&gt;return&lt;/span&gt; &lt;span style="color:#008000;"&gt;new&lt;/span&gt; HttpResponseMessage&lt;span style="color:#000000;"&gt;(&lt;/span&gt;HttpStatusCode.&lt;span style="color:#0000ff;"&gt;NoContent&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;&lt;span style="color:#008000;"&gt;;&lt;/span&gt;
                    &lt;span style="color:#000000;"&gt;}&lt;/span&gt;
                &lt;span style="color:#000000;"&gt;}&lt;/span&gt;
                &lt;span style="color:#0600ff;"&gt;catch&lt;/span&gt;
                &lt;span style="color:#000000;"&gt;{&lt;/span&gt;
                    &lt;span style="color:#0600ff;"&gt;throw&lt;/span&gt; &lt;span style="color:#008000;"&gt;new&lt;/span&gt; HttpResponseException&lt;span style="color:#000000;"&gt;(&lt;/span&gt;&lt;span style="color:#008000;"&gt;new&lt;/span&gt; HttpResponseMessage&lt;span style="color:#000000;"&gt;(&lt;/span&gt;HttpStatusCode.&lt;span style="color:#0000ff;"&gt;Conflict&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;&lt;span style="color:#008000;"&gt;;&lt;/span&gt;
                &lt;span style="color:#000000;"&gt;}&lt;/span&gt;
                &lt;span style="color:#008080;font-style:italic;"&gt;// we had to create entities&lt;/span&gt;
                &lt;span style="color:#008080;font-style:italic;"&gt;// create response&lt;/span&gt;
                HttpResponseMessage response &lt;span style="color:#008000;"&gt;=&lt;/span&gt; Request.&lt;span style="color:#0000ff;"&gt;CreateResponse&lt;/span&gt;&lt;span style="color:#000000;"&gt;(&lt;/span&gt;HttpStatusCode.&lt;span style="color:#0000ff;"&gt;Created&lt;/span&gt;, createProducts&lt;span style="color:#000000;"&gt;)&lt;/span&gt;&lt;span style="color:#008000;"&gt;;&lt;/span&gt;
                &lt;span style="color:#008080;font-style:italic;"&gt;// 201 Created should also return the location of the new resource.&lt;/span&gt;
                &lt;span style="color:#ff0000;"&gt;string&lt;/span&gt; uri &lt;span style="color:#008000;"&gt;=&lt;/span&gt; Url.&lt;span style="color:#0000ff;"&gt;Route&lt;/span&gt;&lt;span style="color:#000000;"&gt;(&lt;/span&gt;&lt;span style="color:#0600ff;"&gt;null&lt;/span&gt;, &lt;span style="color:#008000;"&gt;new&lt;/span&gt; &lt;span style="color:#000000;"&gt;{&lt;/span&gt; id &lt;span style="color:#008000;"&gt;=&lt;/span&gt; createProducts.&lt;span style="color:#0000ff;"&gt;First&lt;/span&gt;&lt;span style="color:#000000;"&gt;(&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;.&lt;span style="color:#0000ff;"&gt;ID&lt;/span&gt; &lt;span style="color:#000000;"&gt;}&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;&lt;span style="color:#008000;"&gt;;&lt;/span&gt;
                response.&lt;span style="color:#0000ff;"&gt;Headers&lt;/span&gt;.&lt;span style="color:#0000ff;"&gt;Location&lt;/span&gt; &lt;span style="color:#008000;"&gt;=&lt;/span&gt; &lt;span style="color:#008000;"&gt;new&lt;/span&gt; Uri&lt;span style="color:#000000;"&gt;(&lt;/span&gt;Request.&lt;span style="color:#0000ff;"&gt;RequestUri&lt;/span&gt;, uri&lt;span style="color:#000000;"&gt;)&lt;/span&gt;&lt;span style="color:#008000;"&gt;;&lt;/span&gt;
                &lt;span style="color:#0600ff;"&gt;return&lt;/span&gt; response&lt;span style="color:#008000;"&gt;;&lt;/span&gt;
            &lt;span style="color:#000000;"&gt;}&lt;/span&gt;
            &lt;span style="color:#0600ff;"&gt;throw&lt;/span&gt; &lt;span style="color:#008000;"&gt;new&lt;/span&gt; HttpResponseException&lt;span style="color:#000000;"&gt;(&lt;/span&gt;&lt;span style="color:#008000;"&gt;new&lt;/span&gt; HttpResponseMessage&lt;span style="color:#000000;"&gt;(&lt;/span&gt;HttpStatusCode.&lt;span style="color:#0000ff;"&gt;BadRequest&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;&lt;span style="color:#008000;"&gt;;&lt;/span&gt;
        &lt;span style="color:#000000;"&gt;}&lt;/span&gt;
        &lt;span style="color:#008080;"&gt;#endregion&lt;/span&gt;
&amp;nbsp;
        &lt;span style="color:#008080;"&gt;#region DELETE&lt;/span&gt;
        &lt;span style="color:#008080;font-style:italic;"&gt;// DELETE /api/products/5&lt;/span&gt;
        &lt;span style="color:#0600ff;"&gt;public&lt;/span&gt; HttpResponseMessage Delete&lt;span style="color:#000000;"&gt;(&lt;/span&gt;&lt;span style="color:#ff0000;"&gt;int&lt;/span&gt; id&lt;span style="color:#000000;"&gt;)&lt;/span&gt;
        &lt;span style="color:#000000;"&gt;{&lt;/span&gt;
            var entities &lt;span style="color:#008000;"&gt;=&lt;/span&gt; &lt;span style="color:#008000;"&gt;new&lt;/span&gt; ProductsEntities&lt;span style="color:#000000;"&gt;(&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;&lt;span style="color:#008000;"&gt;;&lt;/span&gt;
            &lt;span style="color:#0600ff;"&gt;if&lt;/span&gt; &lt;span style="color:#000000;"&gt;(&lt;/span&gt;ModelState.&lt;span style="color:#0000ff;"&gt;IsValid&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;
            &lt;span style="color:#000000;"&gt;{&lt;/span&gt;
                MyProduct deletedProduct &lt;span style="color:#008000;"&gt;=&lt;/span&gt; &lt;span style="color:#008000;"&gt;new&lt;/span&gt; MyProduct&lt;span style="color:#000000;"&gt;(&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;&lt;span style="color:#008000;"&gt;;&lt;/span&gt;
                Product entity &lt;span style="color:#008000;"&gt;=&lt;/span&gt; entities.&lt;span style="color:#0000ff;"&gt;Products&lt;/span&gt;.&lt;span style="color:#0000ff;"&gt;Where&lt;/span&gt;&lt;span style="color:#000000;"&gt;(&lt;/span&gt;p &lt;span style="color:#008000;"&gt;=&amp;gt;&lt;/span&gt; p.&lt;span style="color:#0000ff;"&gt;ID&lt;/span&gt; &lt;span style="color:#008000;"&gt;==&lt;/span&gt; id&lt;span style="color:#000000;"&gt;)&lt;/span&gt;.&lt;span style="color:#0000ff;"&gt;First&lt;/span&gt;&lt;span style="color:#000000;"&gt;(&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;&lt;span style="color:#008000;"&gt;;&lt;/span&gt;
                deletedProduct.&lt;span style="color:#0000ff;"&gt;ID&lt;/span&gt; &lt;span style="color:#008000;"&gt;=&lt;/span&gt; entity.&lt;span style="color:#0000ff;"&gt;ID&lt;/span&gt;&lt;span style="color:#008000;"&gt;;&lt;/span&gt;
                deletedProduct.&lt;span style="color:#0000ff;"&gt;Name&lt;/span&gt; &lt;span style="color:#008000;"&gt;=&lt;/span&gt; entity.&lt;span style="color:#0000ff;"&gt;Name&lt;/span&gt;&lt;span style="color:#008000;"&gt;;&lt;/span&gt;
                deletedProduct.&lt;span style="color:#0000ff;"&gt;Price&lt;/span&gt; &lt;span style="color:#008000;"&gt;=&lt;/span&gt; entity.&lt;span style="color:#0000ff;"&gt;Price&lt;/span&gt;&lt;span style="color:#008000;"&gt;;&lt;/span&gt;
                deletedProduct.&lt;span style="color:#0000ff;"&gt;Quantity&lt;/span&gt; &lt;span style="color:#008000;"&gt;=&lt;/span&gt; entity.&lt;span style="color:#0000ff;"&gt;Quantity&lt;/span&gt;&lt;span style="color:#008000;"&gt;;&lt;/span&gt;
                deletedProduct.&lt;span style="color:#0000ff;"&gt;ReleaseDate&lt;/span&gt; &lt;span style="color:#008000;"&gt;=&lt;/span&gt; entity.&lt;span style="color:#0000ff;"&gt;ReleaseDate&lt;/span&gt;&lt;span style="color:#008000;"&gt;;&lt;/span&gt;
                &lt;span style="color:#0600ff;"&gt;try&lt;/span&gt;
                &lt;span style="color:#000000;"&gt;{&lt;/span&gt;
                    entities.&lt;span style="color:#0000ff;"&gt;Products&lt;/span&gt;.&lt;span style="color:#0000ff;"&gt;DeleteObject&lt;/span&gt;&lt;span style="color:#000000;"&gt;(&lt;/span&gt;entity&lt;span style="color:#000000;"&gt;)&lt;/span&gt;&lt;span style="color:#008000;"&gt;;&lt;/span&gt;
                    entities.&lt;span style="color:#0000ff;"&gt;SaveChanges&lt;/span&gt;&lt;span style="color:#000000;"&gt;(&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;&lt;span style="color:#008000;"&gt;;&lt;/span&gt;
                &lt;span style="color:#000000;"&gt;}&lt;/span&gt; &lt;span style="color:#0600ff;"&gt;catch&lt;/span&gt; 
                &lt;span style="color:#000000;"&gt;{&lt;/span&gt;
                    &lt;span style="color:#0600ff;"&gt;throw&lt;/span&gt; &lt;span style="color:#008000;"&gt;new&lt;/span&gt; HttpResponseException&lt;span style="color:#000000;"&gt;(&lt;/span&gt;&lt;span style="color:#008000;"&gt;new&lt;/span&gt; HttpResponseMessage&lt;span style="color:#000000;"&gt;(&lt;/span&gt;HttpStatusCode.&lt;span style="color:#0000ff;"&gt;Conflict&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;&lt;span style="color:#008000;"&gt;;&lt;/span&gt;
                &lt;span style="color:#000000;"&gt;}&lt;/span&gt;
                &lt;span style="color:#0600ff;"&gt;return&lt;/span&gt; Request.&lt;span style="color:#0000ff;"&gt;CreateResponse&lt;/span&gt;&lt;span style="color:#000000;"&gt;(&lt;/span&gt;HttpStatusCode.&lt;span style="color:#0000ff;"&gt;OK&lt;/span&gt;, deletedProduct&lt;span style="color:#000000;"&gt;)&lt;/span&gt;&lt;span style="color:#008000;"&gt;;&lt;/span&gt;
                &lt;span style="color:#008080;font-style:italic;"&gt;/* Alternatively Delete can also return * 202 Accepted if the delete action is accepted but not enacted * 204 No Content if the delete action has been enacted but the response does not include the deleted entity(s) return Request.CreateResponse(HttpStatusCode.NoContent); return Request.CreateResponse(HttpStatusCode.Accepted); */&lt;/span&gt;
            &lt;span style="color:#000000;"&gt;}&lt;/span&gt;
            &lt;span style="color:#0600ff;"&gt;throw&lt;/span&gt; &lt;span style="color:#008000;"&gt;new&lt;/span&gt; HttpResponseException&lt;span style="color:#000000;"&gt;(&lt;/span&gt;&lt;span style="color:#008000;"&gt;new&lt;/span&gt; HttpResponseMessage&lt;span style="color:#000000;"&gt;(&lt;/span&gt;HttpStatusCode.&lt;span style="color:#0000ff;"&gt;BadRequest&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;&lt;span style="color:#008000;"&gt;;&lt;/span&gt;
        &lt;span style="color:#000000;"&gt;}&lt;/span&gt;
&amp;nbsp;
        &lt;span style="color:#008080;font-style:italic;"&gt;// DELETE /api/products/?id=5&amp;amp;id=6&amp;amp;id=7&lt;/span&gt;
        &lt;span style="color:#008080;font-style:italic;"&gt;// FromUri attribute is mandatory for MVC4 RC because the parameter is a complex type&lt;/span&gt;
        &lt;span style="color:#008080;font-style:italic;"&gt;// and by default is taken from the request body&lt;/span&gt;
        &lt;span style="color:#0600ff;"&gt;public&lt;/span&gt; HttpResponseMessage Delete&lt;span style="color:#000000;"&gt;(&lt;/span&gt;&lt;span style="color:#000000;"&gt;[&lt;/span&gt;FromUri&lt;span style="color:#000000;"&gt;]&lt;/span&gt;IEnumerable&lt;span style="color:#008000;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#ff0000;"&gt;int&lt;/span&gt;&lt;span style="color:#008000;"&gt;&amp;gt;&lt;/span&gt; index&lt;span style="color:#000000;"&gt;)&lt;/span&gt;
        &lt;span style="color:#000000;"&gt;{&lt;/span&gt;
            var entities &lt;span style="color:#008000;"&gt;=&lt;/span&gt; &lt;span style="color:#008000;"&gt;new&lt;/span&gt; ProductsEntities&lt;span style="color:#000000;"&gt;(&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;&lt;span style="color:#008000;"&gt;;&lt;/span&gt;
            List&lt;span style="color:#008000;"&gt;&amp;lt;&lt;/span&gt;MyProduct&lt;span style="color:#008000;"&gt;&amp;gt;&lt;/span&gt; deletedProducts &lt;span style="color:#008000;"&gt;=&lt;/span&gt; &lt;span style="color:#008000;"&gt;new&lt;/span&gt; List&lt;span style="color:#008000;"&gt;&amp;lt;&lt;/span&gt;MyProduct&lt;span style="color:#008000;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;(&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;&lt;span style="color:#008000;"&gt;;&lt;/span&gt;
            &lt;span style="color:#0600ff;"&gt;if&lt;/span&gt; &lt;span style="color:#000000;"&gt;(&lt;/span&gt;ModelState.&lt;span style="color:#0000ff;"&gt;IsValid&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;
            &lt;span style="color:#000000;"&gt;{&lt;/span&gt;
                &lt;span style="color:#0600ff;"&gt;foreach&lt;/span&gt; &lt;span style="color:#000000;"&gt;(&lt;/span&gt;&lt;span style="color:#ff0000;"&gt;int&lt;/span&gt; i &lt;span style="color:#0600ff;"&gt;in&lt;/span&gt; index&lt;span style="color:#000000;"&gt;)&lt;/span&gt;
                &lt;span style="color:#000000;"&gt;{&lt;/span&gt;
                    MyProduct deletedProduct &lt;span style="color:#008000;"&gt;=&lt;/span&gt; &lt;span style="color:#008000;"&gt;new&lt;/span&gt; MyProduct&lt;span style="color:#000000;"&gt;(&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;&lt;span style="color:#008000;"&gt;;&lt;/span&gt;
                    Product entity &lt;span style="color:#008000;"&gt;=&lt;/span&gt; entities.&lt;span style="color:#0000ff;"&gt;Products&lt;/span&gt;.&lt;span style="color:#0000ff;"&gt;Where&lt;/span&gt;&lt;span style="color:#000000;"&gt;(&lt;/span&gt;p &lt;span style="color:#008000;"&gt;=&amp;gt;&lt;/span&gt; p.&lt;span style="color:#0000ff;"&gt;ID&lt;/span&gt; &lt;span style="color:#008000;"&gt;==&lt;/span&gt; i&lt;span style="color:#000000;"&gt;)&lt;/span&gt;.&lt;span style="color:#0000ff;"&gt;First&lt;/span&gt;&lt;span style="color:#000000;"&gt;(&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;&lt;span style="color:#008000;"&gt;;&lt;/span&gt;
                    deletedProduct.&lt;span style="color:#0000ff;"&gt;ID&lt;/span&gt; &lt;span style="color:#008000;"&gt;=&lt;/span&gt; entity.&lt;span style="color:#0000ff;"&gt;ID&lt;/span&gt;&lt;span style="color:#008000;"&gt;;&lt;/span&gt;
                    deletedProduct.&lt;span style="color:#0000ff;"&gt;Name&lt;/span&gt; &lt;span style="color:#008000;"&gt;=&lt;/span&gt; entity.&lt;span style="color:#0000ff;"&gt;Name&lt;/span&gt;&lt;span style="color:#008000;"&gt;;&lt;/span&gt;
                    deletedProduct.&lt;span style="color:#0000ff;"&gt;Price&lt;/span&gt; &lt;span style="color:#008000;"&gt;=&lt;/span&gt; entity.&lt;span style="color:#0000ff;"&gt;Price&lt;/span&gt;&lt;span style="color:#008000;"&gt;;&lt;/span&gt;
                    deletedProduct.&lt;span style="color:#0000ff;"&gt;Quantity&lt;/span&gt; &lt;span style="color:#008000;"&gt;=&lt;/span&gt; entity.&lt;span style="color:#0000ff;"&gt;Quantity&lt;/span&gt;&lt;span style="color:#008000;"&gt;;&lt;/span&gt;
                    deletedProduct.&lt;span style="color:#0000ff;"&gt;ReleaseDate&lt;/span&gt; &lt;span style="color:#008000;"&gt;=&lt;/span&gt; entity.&lt;span style="color:#0000ff;"&gt;ReleaseDate&lt;/span&gt;&lt;span style="color:#008000;"&gt;;&lt;/span&gt;
                    entities.&lt;span style="color:#0000ff;"&gt;Products&lt;/span&gt;.&lt;span style="color:#0000ff;"&gt;DeleteObject&lt;/span&gt;&lt;span style="color:#000000;"&gt;(&lt;/span&gt;entity&lt;span style="color:#000000;"&gt;)&lt;/span&gt;&lt;span style="color:#008000;"&gt;;&lt;/span&gt;
                    deletedProducts.&lt;span style="color:#0000ff;"&gt;Add&lt;/span&gt;&lt;span style="color:#000000;"&gt;(&lt;/span&gt;deletedProduct&lt;span style="color:#000000;"&gt;)&lt;/span&gt;&lt;span style="color:#008000;"&gt;;&lt;/span&gt;
                &lt;span style="color:#000000;"&gt;}&lt;/span&gt;
                &lt;span style="color:#0600ff;"&gt;try&lt;/span&gt;
                &lt;span style="color:#000000;"&gt;{&lt;/span&gt;
                    entities.&lt;span style="color:#0000ff;"&gt;SaveChanges&lt;/span&gt;&lt;span style="color:#000000;"&gt;(&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;&lt;span style="color:#008000;"&gt;;&lt;/span&gt;
                &lt;span style="color:#000000;"&gt;}&lt;/span&gt;
                &lt;span style="color:#0600ff;"&gt;catch&lt;/span&gt;
                &lt;span style="color:#000000;"&gt;{&lt;/span&gt;
                    &lt;span style="color:#0600ff;"&gt;throw&lt;/span&gt; &lt;span style="color:#008000;"&gt;new&lt;/span&gt; HttpResponseException&lt;span style="color:#000000;"&gt;(&lt;/span&gt;&lt;span style="color:#008000;"&gt;new&lt;/span&gt; HttpResponseMessage&lt;span style="color:#000000;"&gt;(&lt;/span&gt;HttpStatusCode.&lt;span style="color:#0000ff;"&gt;Conflict&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;&lt;span style="color:#008000;"&gt;;&lt;/span&gt;
                &lt;span style="color:#000000;"&gt;}&lt;/span&gt;
                &lt;span style="color:#0600ff;"&gt;return&lt;/span&gt; Request.&lt;span style="color:#0000ff;"&gt;CreateResponse&lt;/span&gt;&lt;span style="color:#000000;"&gt;(&lt;/span&gt;HttpStatusCode.&lt;span style="color:#0000ff;"&gt;OK&lt;/span&gt;, deletedProducts&lt;span style="color:#000000;"&gt;)&lt;/span&gt;&lt;span style="color:#008000;"&gt;;&lt;/span&gt;
                &lt;span style="color:#008080;font-style:italic;"&gt;/* Alternatively Delete can also return * 202 Accepted if the delete action is accepted but not enacted * 204 No Content if the delete action has been enacted but the response does not include the deleted entity(s) return Request.CreateResponse(HttpStatusCode.NoContent); return Request.CreateResponse(HttpStatusCode.Accepted); */&lt;/span&gt;
            &lt;span style="color:#000000;"&gt;}&lt;/span&gt;
            &lt;span style="color:#0600ff;"&gt;throw&lt;/span&gt; &lt;span style="color:#008000;"&gt;new&lt;/span&gt; HttpResponseException&lt;span style="color:#000000;"&gt;(&lt;/span&gt;&lt;span style="color:#008000;"&gt;new&lt;/span&gt; HttpResponseMessage&lt;span style="color:#000000;"&gt;(&lt;/span&gt;HttpStatusCode.&lt;span style="color:#0000ff;"&gt;BadRequest&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;&lt;span style="color:#008000;"&gt;;&lt;/span&gt;
        &lt;span style="color:#000000;"&gt;}&lt;/span&gt;
        &lt;span style="color:#008080;"&gt;#endregion&lt;/span&gt;
    &lt;span style="color:#000000;"&gt;}&lt;/span&gt;
&amp;nbsp;&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;Since our controller is named ProductsController, we don&amp;rsquo;t have to change anything in our grid javascript definition. Once we load it, we can use the Updating feature UI in order to perform the CRUD operations. Note that I&amp;rsquo;ve added a &amp;ldquo;Save Changes&amp;rdquo; button which invokes grid&amp;rsquo;s saveChanges() function once clicked. This persists all the changes to the server. If we have multiple CREATE requests and batch is true, this will result in one CREATE (POST) request. Same for all the rest. So if we have a mix of CREATE/UPDATE/DELETE and batch is true for all of them., this will result in a maximum of 3 requests.&lt;/p&gt;
&lt;p&gt;If you would like send the update request immediately to the server, you can also handle the rowAdded / rowDeleted / editCellEnded / editRowEnded, and invoke saveChanges() there.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;img src="http://oi40.tinypic.com/11gk02b.jpg" width="650" height="419" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;I hope you enjoyed this blog post and that you like the powerful functionality of our updating feature. Let me know if you have any questions about the content and about the attached project. Any suggestions for additional functionality are more than welcome!&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.infragistics.com/community/aggbug.aspx?PostID=405139" width="1" height="1"&gt;</description><enclosure url="http://www.infragistics.com/community/cfs-file.ashx/__key/CommunityServer.Components.PostAttachments/00.00.40.51.39/RESTWebAPI.7z.zip" length="2377368" type="application/octet-stream" /><category domain="http://www.infragistics.com/community/blogs/angel_todorov/archive/tags/Grid/default.aspx">Grid</category><category domain="http://www.infragistics.com/community/blogs/angel_todorov/archive/tags/CRUD/default.aspx">CRUD</category><category domain="http://www.infragistics.com/community/blogs/angel_todorov/archive/tags/REST/default.aspx">REST</category><category domain="http://www.infragistics.com/community/blogs/angel_todorov/archive/tags/WebAPI/default.aspx">WebAPI</category><category domain="http://www.infragistics.com/community/blogs/angel_todorov/archive/tags/Entity+Framework/default.aspx">Entity Framework</category><category domain="http://www.infragistics.com/community/blogs/angel_todorov/archive/tags/EF/default.aspx">EF</category><category domain="http://www.infragistics.com/community/blogs/angel_todorov/archive/tags/updating/default.aspx">updating</category><category domain="http://www.infragistics.com/community/blogs/angel_todorov/archive/tags/IgniteUI/default.aspx">IgniteUI</category></item><item><title>NetAdvantage for Windows UI Release Notes – May: 13.1 Service Release</title><link>http://www.infragistics.com/community/blogs/engineering/archive/2013/05/23/netadvantage-for-windows-ui-release-notes-may-13-1-service-releases.aspx</link><pubDate>Thu, 23 May 2013 15:14:00 GMT</pubDate><guid isPermaLink="false">7a8b7c76-b7ad-48e0-9694-5b04ca132ed0:405099</guid><dc:creator>[Infragistics] Pamela Brasil</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Release notes reflect the state of resolved bugs and new additions from the previous release. You will find these notes useful to help determine the resolution of existing issues from a past release and as a means of determining where to test your applications when upgrading from one version to the next.&lt;/p&gt;
&lt;p&gt;Release notes are available in both PDF and Excel formats. The PDF summarizes the changes to this release along with a listing of each item. The Excel sheet includes each change item and makes it easy for you to sort, filter and otherwise manipulate the data to your liking.&lt;/p&gt;
&lt;p&gt;In order to download release notes, use the following links:&lt;/p&gt;
&lt;h3&gt;Windows UI 2013 Volume 1 Service Release&lt;/h3&gt;
&lt;p&gt;• &lt;a href="http://dl.infragistics.com/community/winui/ReleaseNotes/May_ServiceReleaseNotes_WinUI_131.pdf" target="_blank"&gt;PDF - NetAdvantage for Windows UI 2013 Volume 1 (Build 13.1.20131.1094)&lt;/a&gt;&lt;br /&gt;• &lt;a href="http://dl.infragistics.com/community/winui/ReleaseNotes/May_ServiceReleaseNotes_WinUI_131.xlsx" target="_blank"&gt;Excel - NetAdvantage for Windows UI 2013 Volume 1 (Build 13.1.20131.1094)&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.infragistics.com/community/aggbug.aspx?PostID=405099" width="1" height="1"&gt;</description><category domain="http://www.infragistics.com/community/blogs/engineering/archive/tags/NetAdvantage/default.aspx">NetAdvantage</category><category domain="http://www.infragistics.com/community/blogs/engineering/archive/tags/Service+Release+Notes/default.aspx">Service Release Notes</category><category domain="http://www.infragistics.com/community/blogs/engineering/archive/tags/13.1/default.aspx">13.1</category><category domain="http://www.infragistics.com/community/blogs/engineering/archive/tags/May/default.aspx">May</category><category domain="http://www.infragistics.com/community/blogs/engineering/archive/tags/Windows+UI/default.aspx">Windows UI</category></item><item><title>NetAdvantage for WPF Release Notes – May: 12.1, 12.2, 13.1 Service Releases</title><link>http://www.infragistics.com/community/blogs/engineering/archive/2013/05/23/netadvantage-for-wpf-release-notes-may-12-1-12-2-13-1-service-releases.aspx</link><pubDate>Thu, 23 May 2013 15:08:00 GMT</pubDate><guid isPermaLink="false">7a8b7c76-b7ad-48e0-9694-5b04ca132ed0:405095</guid><dc:creator>[Infragistics] Pamela Brasil</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Release notes reflect the state of resolved bugs and new additions from the previous release. You will find these notes useful to help determine the resolution of existing issues from a past release and as a means of determining where to test your applications when upgrading from one version to the next.&lt;/p&gt;
&lt;p&gt;Release notes are available in both PDF and Excel formats. The PDF summarizes the changes to this release along with a listing of each item. The Excel sheet includes each change item and makes it easy for you to sort, filter and otherwise manipulate the data to your liking.&lt;/p&gt;
&lt;p&gt;In order to download release notes, use the following links:&lt;/p&gt;
&lt;h3&gt;WPF 2012 Volume 1 Service Release&lt;/h3&gt;
&lt;p&gt;&amp;bull; &lt;a href="http://dl.infragistics.com/community/wpf/ReleaseNotes/May_ServiceReleaseNotes_WPF_121.pdf" target="_blank"&gt;PDF - NetAdvantage for WPF 2012 Volume 1 (Build 12.1.20121.2314)&lt;/a&gt;&lt;br /&gt;&amp;bull; &lt;a href="http://dl.infragistics.com/community/wpf/ReleaseNotes/May_ServiceReleaseNotes_WPF_121.xlsx" target="_blank"&gt;Excel - NetAdvantage for WPF 2012 Volume 1 (Build 12.1.20121.2314)&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;WPF 2012 Volume 2 Service Release&lt;/h3&gt;
&lt;p&gt;&amp;bull; &lt;a href="http://dl.infragistics.com/community/wpf/ReleaseNotes/May_ServiceReleaseNotes_WPF_122.pdf" target="_blank"&gt;PDF - NetAdvantage for WPF 2012 Volume 2 (Build 12.2.20122.2179)&lt;/a&gt;&lt;br /&gt;&amp;bull; &lt;a href="http://dl.infragistics.com/community/wpf/ReleaseNotes/May_ServiceReleaseNotes_WPF_122.xlsx" target="_blank"&gt;Excel - NetAdvantage for WPF 2012 Volume 2 (Build 12.2.20122.2179)&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;WPF 2013 Volume 1 Service Release&lt;/h3&gt;
&lt;p&gt;&amp;bull; &lt;a href="http://dl.infragistics.com/community/wpf/ReleaseNotes/May_ServiceReleaseNotes_WPF_131.pdf" target="_blank"&gt;PDF - NetAdvantage for WPF 2013 Volume 1 (Build 13.1.20131.2073)&lt;/a&gt;&lt;br /&gt;&amp;bull; &lt;a href="http://dl.infragistics.com/community/wpf/ReleaseNotes/May_ServiceReleaseNotes_WPF_131.xlsx" target="_blank"&gt;Excel - NetAdvantage for WPF 2013 Volume 1 (Build 13.1.20131.2073)&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.infragistics.com/community/aggbug.aspx?PostID=405095" width="1" height="1"&gt;</description><category domain="http://www.infragistics.com/community/blogs/engineering/archive/tags/12.1/default.aspx">12.1</category><category domain="http://www.infragistics.com/community/blogs/engineering/archive/tags/NetAdvantage/default.aspx">NetAdvantage</category><category domain="http://www.infragistics.com/community/blogs/engineering/archive/tags/WPF/default.aspx">WPF</category><category domain="http://www.infragistics.com/community/blogs/engineering/archive/tags/Service+Release+Notes/default.aspx">Service Release Notes</category><category domain="http://www.infragistics.com/community/blogs/engineering/archive/tags/12.2/default.aspx">12.2</category><category domain="http://www.infragistics.com/community/blogs/engineering/archive/tags/13.1/default.aspx">13.1</category><category domain="http://www.infragistics.com/community/blogs/engineering/archive/tags/May/default.aspx">May</category></item><item><title>NetAdvantage for Silverlight Release Notes – May: 12.1, 12.2, 13.1 Service Releases</title><link>http://www.infragistics.com/community/blogs/engineering/archive/2013/05/23/netadvantage-for-silverlight-release-notes-may-12-1-12-2-13-1-service-releases.aspx</link><pubDate>Thu, 23 May 2013 14:58:00 GMT</pubDate><guid isPermaLink="false">7a8b7c76-b7ad-48e0-9694-5b04ca132ed0:405092</guid><dc:creator>[Infragistics] Pamela Brasil</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Release notes reflect the state of resolved bugs and new additions from the previous release. You will find these notes useful to help determine the resolution of existing issues from a past release and as a means of determining where to test your applications when upgrading from one version to the next.&lt;/p&gt;
&lt;p&gt;Release notes are available in both PDF and Excel formats. The PDF summarizes the changes to this release along with a listing of each item. The Excel sheet includes each change item and makes it easy for you to sort, filter and otherwise manipulate the data to your liking.&lt;/p&gt;
&lt;p&gt;In order to download release notes, use the following links:&lt;/p&gt;
&lt;h3&gt;Silverlight 2012 Volume 1 Service Release&lt;/h3&gt;
&lt;p&gt;&amp;bull; &lt;a href="http://dl.infragistics.com/community/silverlight/ReleaseNotes/May_ServiceReleaseNotes_SL_121.pdf" target="_blank"&gt;PDF - NetAdvantage for Silverlight 2012 Volume 1 (Build 12.1.20121.2295)&lt;/a&gt;&lt;br /&gt;&amp;bull; &lt;a href="http://dl.infragistics.com/community/silverlight/ReleaseNotes/May_ServiceReleaseNotes_SL_121.xlsx" target="_blank"&gt;Excel - NetAdvantage for Silverlight 2012 Volume 1 (Build 12.1.20121.2295)&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;Silverlight 2012 Volume 2 Service Release&lt;/h3&gt;
&lt;p&gt;&amp;bull; &lt;a href="http://dl.infragistics.com/community/silverlight/ReleaseNotes/May_ServiceReleaseNotes_SL_122.pdf" target="_blank"&gt;PDF - NetAdvantage for Silverlight 2012 Volume 2 (Build 12.2.20122.2170)&lt;/a&gt;&lt;br /&gt;&amp;bull; &lt;a href="http://dl.infragistics.com/community/silverlight/ReleaseNotes/May_ServiceReleaseNotes_SL_122.xlsx" target="_blank"&gt;Excel - NetAdvantage for Silverlight 2012 Volume 2 (Build 12.2.20122.2170)&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;Silverlight 2013 Volume 1 Service Release&lt;/h3&gt;
&lt;p&gt;&amp;bull; &lt;a href="http://dl.infragistics.com/community/silverlight/ReleaseNotes/May_ServiceReleaseNotes_SL_131.pdf" target="_blank"&gt;PDF - NetAdvantage for Silverlight 2013 Volume 1 (Build 13.1.20131.2069)&lt;/a&gt;&lt;br /&gt;&amp;bull; &lt;a href="http://dl.infragistics.com/community/silverlight/ReleaseNotes/May_ServiceReleaseNotes_SL_131.xlsx" target="_blank"&gt;Excel - NetAdvantage for Silverlight 2013 Volume 1 (Build 13.1.20131.2069)&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.infragistics.com/community/aggbug.aspx?PostID=405092" width="1" height="1"&gt;</description><category domain="http://www.infragistics.com/community/blogs/engineering/archive/tags/12.1/default.aspx">12.1</category><category domain="http://www.infragistics.com/community/blogs/engineering/archive/tags/NetAdvantage/default.aspx">NetAdvantage</category><category domain="http://www.infragistics.com/community/blogs/engineering/archive/tags/Silverlight/default.aspx">Silverlight</category><category domain="http://www.infragistics.com/community/blogs/engineering/archive/tags/Service+Release+Notes/default.aspx">Service Release Notes</category><category domain="http://www.infragistics.com/community/blogs/engineering/archive/tags/12.2/default.aspx">12.2</category><category domain="http://www.infragistics.com/community/blogs/engineering/archive/tags/13.1/default.aspx">13.1</category><category domain="http://www.infragistics.com/community/blogs/engineering/archive/tags/May/default.aspx">May</category></item><item><title>Pivot Tables on iPad and how to make one with ReportPlus</title><link>http://www.infragistics.com/community/blogs/gabriel-lopez/archive/2013/05/23/pivot-tables-on-ipad-and-how-to-make-one-with-reportplus.aspx</link><pubDate>Thu, 23 May 2013 14:39:00 GMT</pubDate><guid isPermaLink="false">7a8b7c76-b7ad-48e0-9694-5b04ca132ed0:405085</guid><dc:creator>Gabriel Lopez</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Hi, my name is Gabriel, and I&amp;#39;m a data junkie (everyone claps in imaginary support group). I like to measure processes by analyzing &lt;strong&gt;data logs&lt;/strong&gt;, and check for &lt;strong&gt;trends&lt;/strong&gt;. I do this as part of my job, but also do it with my personal data, such as &lt;a href="http://www.infragistics.com/community/blogs/gabriel-lopez/archive/2013/01/16/smb-39-s-of-the-world-get-business-intelligence-from-your-email-with-reportplus.aspx"&gt;my email inbox&lt;/a&gt;. The feature that I use the most in &lt;strong&gt;Microsoft Excel&lt;/strong&gt; is &lt;strong&gt;&lt;a href="http://en.wikipedia.org/wiki/Pivot_table"&gt;Pivot Tables&lt;/a&gt;. &lt;/strong&gt;So when I started using my &lt;strong&gt;iPad &lt;/strong&gt;&lt;strong&gt;I could not believe there were no good apps to do pivot tables on the iPad, or even the iPhone. &lt;/strong&gt;All office-like apps, don&amp;#39;t include Pivot Tables support. That´s one of the reasons we decided to build &lt;strong&gt;&lt;a href="http://pro.reportplus.com"&gt;ReportPlus&lt;/a&gt;, &lt;/strong&gt;to allow data junkies like me to be able to do all sort of &lt;strong&gt;data analysis on the go&lt;/strong&gt;, not just when they have access to a desktop computer. In this article we&amp;#39;ll show &lt;strong&gt;how easy it is to build pivot tables in ReportPlus to summarize data&lt;/strong&gt;. &lt;/p&gt;
&lt;p&gt;In case you are wondering, &lt;a href="http://en.wikipedia.org/wiki/Pivot_table"&gt;&lt;strong&gt;Pivot Tables&lt;/strong&gt;&lt;/a&gt; are &lt;strong&gt;data summarization&lt;/strong&gt; tools commonly found in &lt;strong&gt;spreadsheets&lt;/strong&gt; or &lt;strong&gt;business intelligence&lt;/strong&gt; software. Probably the most popular software application that provides pivot tables support is &lt;strong&gt;Microsoft Excel&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Let&amp;#39;s look at the following example, for instance if you have an excel spreadsheet with sales data, listing invoices, something like the following:&lt;/p&gt;
&lt;p&gt;&lt;img title="Sales-Data.png" src="http://www.infragistics.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/gabriel-lopez.metablogapi/7737.Sales_2D00_Data.png" alt="ReportPlus PivotTable Sales Data" border="0" height="120" width="275" /&gt;&lt;/p&gt;
&lt;p&gt;You may want to know the total number of sales, &lt;strong&gt;grouped by Country&lt;/strong&gt;. How can you do this? You could start adding up each sales cell of the same country manually, which would be very tedious and error prone, or you could create a pivot table and get something like:&lt;/p&gt;
&lt;p&gt;&lt;img title="Excel Pivot Table Sample.png" src="http://www.infragistics.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/gabriel-lopez.metablogapi/4101.Excel-Pivot-Table-Sample.png" alt="Excel Pivot Table Sample" border="0" height="93" width="115" /&gt;&lt;/p&gt;
&lt;h1&gt;Creating the pivot table on the iPad&lt;/h1&gt;
&lt;p&gt;If you need to do this in an iOS device, such as an &lt;strong&gt;iPad&lt;/strong&gt;, or &lt;strong&gt;iPhone&lt;/strong&gt;, your best option is to get &lt;a href="http://pro.reportplus.com"&gt;ReportPlus&lt;/a&gt;, &lt;a href="http://www.infragistics.com/community/blogs/gabriel-lopez/archive/2013/01/02/creating-dashboards-on-the-ipad-from-excel-spreadsheets.aspx"&gt;import the Excel spreadsheet to Local Files&lt;/a&gt;, and get started. To do this you&amp;#39;ll need to start a new dashboard, which you do by tapping the + button on the initial view, and selecting one of the blank templates. Then you navigate the &lt;strong&gt;Local Files&lt;/strong&gt; folder (or whatever data source you may have configured to retrieve the data from), and drop it in the dashboard canvas.&lt;/p&gt;
&lt;p&gt;&lt;img title="drag-canvas.png" src="http://www.infragistics.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/gabriel-lopez.metablogapi/2626.drag_2D00_canvas.png" alt="ReportPlus Drag Data Set" border="0" height="450" width="600" /&gt;&lt;/p&gt;
&lt;p&gt;Once you do this, the widget editor is displayed automatically. This view lists on the left hand side the columns of the data set, and in the &lt;strong&gt;central bottom part the pivot table editor&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;By &lt;strong&gt;tapping and holding&lt;/strong&gt; fields in the columns list they become available for &lt;strong&gt;dragging&lt;/strong&gt;. This allows for two things, one reordering them in the list, two using them to build a pivot table. By dragging and dropping columns in the pivot editor placeholders (Rows, Columns, Values and Filters) we create the pivot table. &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Dropping fields in the Rows placeholder will create a table with the first row containing all the distinct values contained in the dropped column&lt;/strong&gt;. For instance in the Sales example, dropping the Country column in Rows generates a table listing USA, UK, and Japan in different rows. Dropping a field in the Column placeholder has a similar effect but the values are structured as different columns of the table.&lt;/p&gt;
&lt;p&gt;&lt;img title="widget-editor-pivot-drag2.png" src="http://www.infragistics.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/gabriel-lopez.metablogapi/8308.widget_2D00_editor_2D00_pivot_2D00_drag2.png" alt="Widget editor pivot drag2" border="0" height="275" width="600" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Dropping fields in the Values placeholder applies a summarization function &lt;/strong&gt;on all the values of dropped column, &lt;strong&gt;grouped by the values in the Rows or Columns placeholders&lt;/strong&gt;. For instance, by dropping the Sales column in Values will add the number of Sales &lt;strong&gt;grouped by the different countries&lt;/strong&gt;. There&amp;#39;s a list of available summarization functions to calculate minimum, maximum, average, sum, etc. This can be selected by tapping the field in the pivot table, and changing the function selected in the &lt;em&gt;Aggregation option&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img title="widget-editor-pivotfield-summarizationfuncs.PNG" src="http://www.infragistics.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/gabriel-lopez.metablogapi/8308.widget_2D00_editor_2D00_pivotfield_2D00_summarizationfuncs.PNG" alt="Widget editor pivotfield summarizationfuncs" border="0" height="450" width="600" /&gt;&lt;/p&gt;
&lt;p&gt;If the field dropped in Values &lt;strong&gt;is not numeric, then the function that will be applied is the COUNT function&lt;/strong&gt; that simply counts all values on that column in the original data table. &lt;/p&gt;
&lt;h1&gt;Applying Fitlers and Sorting Pivot Tables&lt;/h1&gt;
&lt;p&gt;By tapping on a field dropped in values, the fields settings editor is displayed. This dialog allows to configure several things:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Label&lt;/strong&gt;. Allows to change the label generated for the aggregated value, which by default is the name of the aggregation function plus the name of the field. This can be renamed to anything.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Aggregation&lt;/strong&gt;. Changing the aggregation functions as mentioned in the previous section.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sorting&lt;/strong&gt;. This option allows to sort values in the pivot table. For instance it can be used to sort values in a descendent order.&lt;/li&gt;
&lt;li&gt;Formatting. This option allows for example changing the way numeric values are display, to render them as currency, remove decimal figures, show 1000 separator, etc.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img title="widget-editor-pivottable-fieldsettings.PNG" src="http://www.infragistics.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/gabriel-lopez.metablogapi/4188.widget_2D00_editor_2D00_pivottable_2D00_fieldsettings.PNG" alt="Widget editor pivottable fieldsettings" border="0" height="450" width="600" /&gt;&lt;/p&gt;
&lt;p&gt;For instance it allows to sort sales by amount, and filter the values to display only the top 10 Countries. Again, something &lt;strong&gt;very useful, very easy to achieve with ReportPlus&lt;/strong&gt;, not so much with other tools out there.&lt;/p&gt;
&lt;h1&gt;Pivot Table and DateTime fields&lt;/h1&gt;
&lt;p&gt;One of the neatest features of ReportPlus pivot table is that it handles Date columns &amp;quot;intelligently&amp;quot;. Whenever you drop a Date column in Rows ReportPlus automatically groups the values by Day, Month, or Year, depending on the time period contained in the data table. This is simpler that other pivot table implementations that require the creation of a calculated field, to extract for instance the month value of out the Date value in order to aggregate by Month.&lt;/p&gt;
&lt;p&gt;&lt;img title="widget-editor-date-aggregation.PNG" src="http://www.infragistics.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/gabriel-lopez.metablogapi/4188.widget_2D00_editor_2D00_date_2D00_aggregation.PNG" alt="Widget editor date aggregation" border="0" height="450" width="600" /&gt;&lt;/p&gt;
&lt;p&gt;Aggregating Date columns also allows drill down navigation. This can be tried by tapping in the first row containing the dates. Drilling down from years, displays, months, and drilling down months displays the values for days.&lt;/p&gt;
&lt;h1&gt;Finally&lt;/h1&gt;
&lt;p&gt;Once the data has been summarized with the pivot table we are able to choose among the many &lt;strong&gt;data visualization&lt;/strong&gt; options available in ReportPlus to chart it, so that it becomes as easy as possible to read &amp;amp; digest.&lt;/p&gt;
&lt;p&gt;&lt;img title="ReportPlus-Chart.PNG" src="http://www.infragistics.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/gabriel-lopez.metablogapi/0882.ReportPlus_2D00_Chart.PNG" alt="ReportPlus Column Chart" border="0" height="450" width="600" /&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.infragistics.com/community/aggbug.aspx?PostID=405085" width="1" height="1"&gt;</description><category domain="http://www.infragistics.com/community/blogs/gabriel-lopez/archive/tags/Dashboards/default.aspx">Dashboards</category><category domain="http://www.infragistics.com/community/blogs/gabriel-lopez/archive/tags/iPad/default.aspx">iPad</category><category domain="http://www.infragistics.com/community/blogs/gabriel-lopez/archive/tags/iOS/default.aspx">iOS</category><category domain="http://www.infragistics.com/community/blogs/gabriel-lopez/archive/tags/spreadsheet/default.aspx">spreadsheet</category><category domain="http://www.infragistics.com/community/blogs/gabriel-lopez/archive/tags/Reports/default.aspx">Reports</category><category domain="http://www.infragistics.com/community/blogs/gabriel-lopez/archive/tags/ReportPlus/default.aspx">ReportPlus</category><category domain="http://www.infragistics.com/community/blogs/gabriel-lopez/archive/tags/OLAP/default.aspx">OLAP</category><category domain="http://www.infragistics.com/community/blogs/gabriel-lopez/archive/tags/iPhone/default.aspx">iPhone</category><category domain="http://www.infragistics.com/community/blogs/gabriel-lopez/archive/tags/Pivot+Table/default.aspx">Pivot Table</category></item><item><title>NetAdvantage for Windows Forms Release Notes - May: 12.1, 12.2, 13.1 Service Releases</title><link>http://www.infragistics.com/community/blogs/engineering/archive/2013/05/22/netadvantage-for-windows-forms-release-notes-january-12-1-12-2-13-1-service-releases.aspx</link><pubDate>Wed, 22 May 2013 20:17:00 GMT</pubDate><guid isPermaLink="false">7a8b7c76-b7ad-48e0-9694-5b04ca132ed0:404922</guid><dc:creator>[Infragistics] Sam A.</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;With every release comes a set of release notes that reflects the state of resolved bugs and new additions from the previous release. You&amp;rsquo;ll find these notes useful to help determine the resolution of existing issues from a past release and as a means of determining where to test your applications when upgrading from one version to the next.&lt;/p&gt;
&lt;p&gt;Release notes are available in both PDF and Excel formats. The PDF summarizes the changes to this release along with a listing of each item. The Excel sheet includes each change item and makes it easy for you to sort, filter and otherwise manipulate the data to your liking.&lt;/p&gt;
&lt;p&gt;In order to download release notes, use the following links:&lt;/p&gt;
&lt;h3&gt;WinForms 2013 Volume 1 Service Release (Build 13.1.20131.2027)&lt;/h3&gt;
&lt;p&gt;&amp;bull; &lt;a href="http://dl.infragistics.com/community/winforms/ReleaseNotes/WindowsForms_13_1_ServiceReleaseNotes_May_2013.pdf" target="_blank"&gt;PDF - NetAdvantage for WinForms 2013 Volume 1&lt;/a&gt;&lt;br /&gt;&amp;bull; &lt;a href="http://dl.infragistics.com/community/winforms/ReleaseNotes/WindowsForms_13_1_ServiceReleaseNotes_May_2013.xlsx" target="_blank"&gt;Excel - NetAdvantage for WinForms 2013 Volume 1&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;WinForms 2012 Volume 2 Service Release (Build 12.2.20122.2073)&lt;/h3&gt;
&lt;p&gt;&amp;bull; &lt;a href="http://dl.infragistics.com/community/winforms/ReleaseNotes/WindowsForms_12_2_ServiceReleaseNotes_May_2013.pdf" target="_blank"&gt;PDF - NetAdvantage for WinForms 2012 Volume 2&lt;/a&gt;&lt;br /&gt;&amp;bull; &lt;a href="http://dl.infragistics.com/community/winforms/ReleaseNotes/WindowsForms_12_2_ServiceReleaseNotes_May_2013.xlsx" target="_blank"&gt;Excel - NetAdvantage for WinForms 2012 Volume 2&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;WinForms 2012 Volume 1 Service Release (Build 12.1.20121.2135)&lt;/h3&gt;
&lt;p&gt;&amp;bull; &lt;a href="http://dl.infragistics.com/community/winforms/ReleaseNotes/WindowsForms_12_1_ServiceReleaseNotes_May_2013.pdf" target="_blank"&gt;PDF - NetAdvantage for WinForms 2012 Volume 1&lt;/a&gt;&lt;br /&gt;&amp;bull; &lt;a href="http://dl.infragistics.com/community/winforms/ReleaseNotes/WindowsForms_12_1_ServiceReleaseNotes_May_2013.xlsx" target="_blank"&gt;Excel - NetAdvantage for WinForms 2012 Volume 1&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;&amp;nbsp;&lt;/h3&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.infragistics.com/community/aggbug.aspx?PostID=404922" width="1" height="1"&gt;</description><category domain="http://www.infragistics.com/community/blogs/engineering/archive/tags/12.1/default.aspx">12.1</category><category domain="http://www.infragistics.com/community/blogs/engineering/archive/tags/Windows+Forms/default.aspx">Windows Forms</category><category domain="http://www.infragistics.com/community/blogs/engineering/archive/tags/Service+Release/default.aspx">Service Release</category><category domain="http://www.infragistics.com/community/blogs/engineering/archive/tags/12.2/default.aspx">12.2</category><category domain="http://www.infragistics.com/community/blogs/engineering/archive/tags/13.1/default.aspx">13.1</category></item><item><title>Treehouse - HTML5 Resource of the Day</title><link>http://www.infragistics.com/community/blogs/brent_schooley/archive/2013/05/22/treehouse-html5-resource-of-the-day.aspx</link><pubDate>Wed, 22 May 2013 16:31:49 GMT</pubDate><guid isPermaLink="false">7a8b7c76-b7ad-48e0-9694-5b04ca132ed0:404891</guid><dc:creator>Brent Schooley</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Video training is highly effective when the quality of the content is excellent and the information is reinforced through both challenges and achievements. Whether you’re looking to learn more about web development or design or maybe even mobile development, &lt;a href="http://www.shareasale.com/r.cfm?b=418932&amp;amp;u=781833&amp;amp;m=43811&amp;amp;urllink=&amp;amp;afftrack="&gt;Treehouse&lt;/a&gt; has you covered. Let’s take a look at the offering.&lt;/p&gt; &lt;h2&gt;Treehouse - A better way to learn technology&lt;/h2&gt; &lt;p&gt;Treehouse bills itself as “a better way to learn technology”. After a brief look through the courses offered, I have to agree. The video content here is top-notch and the challenges and achievements keep things interesting. One additional thing I like about Treehouse is that they provide full text transcripts for each video as well as extra credit and teacher’s notes. It really is a great way to learn.&lt;/p&gt; &lt;p&gt;Here is a sample screenshot of the video content:&lt;/p&gt; &lt;p&gt;&lt;img title="video" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="video" src="http://www.infragistics.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/brent_5F00_schooley.metablogapi/8117.video_5F00_5F2105B8.png" width="654" height="505" /&gt;&lt;/p&gt; &lt;p&gt;This is what the challenge interface looks like:&lt;/p&gt; &lt;p&gt;&lt;img title="challenge" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="challenge" src="http://www.infragistics.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/brent_5F00_schooley.metablogapi/4807.challenge_5F00_5801C940.png" width="654" height="272" /&gt;&lt;/p&gt; &lt;p&gt;Finally, here’s a sample course schedule:&lt;/p&gt; &lt;p&gt;&lt;img title="sample_project" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="sample_project" src="http://www.infragistics.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/brent_5F00_schooley.metablogapi/5468.sample_5F00_project_5F00_1EEAEC3E.png" width="654" height="464" /&gt;&lt;/p&gt; &lt;h2&gt;Summary&lt;/h2&gt; &lt;p&gt;I think &lt;a href="http://www.shareasale.com/r.cfm?b=418932&amp;amp;u=781833&amp;amp;m=43811&amp;amp;urllink=&amp;amp;afftrack="&gt;Treehouse&lt;/a&gt; is a wonderful way to learn new material and they have a great selection of courses available. I would definitely recommend checking out the trial.&lt;/p&gt;&lt;a href="http://www.shareasale.com/r.cfm?b=430948&amp;amp;u=781833&amp;amp;m=43811&amp;amp;urllink=&amp;amp;afftrack=" target="_new"&gt;&lt;img border="0" alt="Learn Web Design, Coding &amp;amp; much More! 100% Off First Month." src="http://www.shareasale.com/image/43811/300x250.png" /&gt;&lt;/a&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Be sure to stay tuned to my new &lt;a href="http://www.infragistics.com/community/blogs/brent_schooley/archive/2013/05/21/web-programming-html5-css3-jquery-for-beginners-the-journey-starts-here.aspx" target="_blank"&gt;Web Programming For Beginners&lt;/a&gt; series as well!&lt;/p&gt; &lt;h2&gt;Contact&lt;/h2&gt; &lt;p&gt;If you have any questions or comments in the meantime, please feel free to email me at &lt;a href="mailto:bschooley@infragistics.com"&gt;bschooley@infragistics.com&lt;/a&gt; or find me on Twitter &lt;a href="http://twitter.com/brentschooley"&gt;@brentschooley&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;a href="http://infragistics.com/products/jquery" target="_blank"&gt;&lt;img title="Ignite-jQuery-650x80" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="Ignite-jQuery-650x80" src="http://www.infragistics.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/brent_5F00_schooley.metablogapi/8105.Ignite_2D00_jQuery_2D00_650x80_5F00_7ECFDF80.png" width="650" height="81" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.infragistics.com/community/aggbug.aspx?PostID=404891" width="1" height="1"&gt;</description><category domain="http://www.infragistics.com/community/blogs/brent_schooley/archive/tags/jQuery/default.aspx">jQuery</category><category domain="http://www.infragistics.com/community/blogs/brent_schooley/archive/tags/learning/default.aspx">learning</category><category domain="http://www.infragistics.com/community/blogs/brent_schooley/archive/tags/training/default.aspx">training</category><category domain="http://www.infragistics.com/community/blogs/brent_schooley/archive/tags/javascript/default.aspx">javascript</category><category domain="http://www.infragistics.com/community/blogs/brent_schooley/archive/tags/html5/default.aspx">html5</category><category domain="http://www.infragistics.com/community/blogs/brent_schooley/archive/tags/resources/default.aspx">resources</category><category domain="http://www.infragistics.com/community/blogs/brent_schooley/archive/tags/tutorials/default.aspx">tutorials</category><category domain="http://www.infragistics.com/community/blogs/brent_schooley/archive/tags/treehouse/default.aspx">treehouse</category></item><item><title>Windows Azure datacentres coming to Australia!</title><link>http://www.infragistics.com/community/blogs/david_burela/archive/2013/05/22/windows-azure-datacentres-coming-to-australia.aspx</link><pubDate>Wed, 22 May 2013 07:48:30 GMT</pubDate><guid isPermaLink="false">7a8b7c76-b7ad-48e0-9694-5b04ca132ed0:404790</guid><dc:creator>David Burela</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Microsoft is planning to expand the Windows Azure regional datacentres to Australia. There are plans to add two new “sub-regions”, in Victoria and NSW. &lt;/p&gt; &lt;p&gt;This is exciting, because there have been an number of businesses and scenarios where due to regulator requirements on data sovereignty, they were unable to use the Azure locations hosted in other countries. &lt;br /&gt;It is interesting to look at *why* Microsoft is deploying 2 new centres (Victoria &amp;amp; NSW), and not just in NSW. This comes down for the need to provide geo-redundancy, while still giving users data sovereignty in Australia.&lt;/p&gt; &lt;p&gt;This bodes well for any Australian start-up what wants to create a local service. The latency from US servers can cause a slight lag in requests, having their applications servers hosted locally will be great. &lt;br /&gt;There is also the potential for some big name USA companies to start hosting geo-located edge servers here, so that their Australian customers get a more responsive experience. This could easily be done by using the Windows Azure Traffic Manager to manage multiple geo-located computer instances &lt;a href="http://www.windowsazure.com/en-us/pricing/details/traffic-manager/"&gt;http://www.windowsazure.com/en-us/pricing/details/traffic-manager/&lt;/a&gt;&lt;/p&gt; &lt;p&gt;The official announcement is up on the Australian MSDN blog &lt;a href="http://blogs.msdn.com/b/ausblog/archive/2013/05/16/windows-azure-expands-downunder.aspx"&gt;http://blogs.msdn.com/b/ausblog/archive/2013/05/16/windows-azure-expands-downunder.aspx&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;a href="https://plus.google.com/115405969357365786572?rel=author"&gt;By David Burela&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.infragistics.com/community/aggbug.aspx?PostID=404790" width="1" height="1"&gt;</description><category domain="http://www.infragistics.com/community/blogs/david_burela/archive/tags/Azure/default.aspx">Azure</category></item><item><title>Software Engineer Interview Questions</title><link>http://www.infragistics.com/community/blogs/marieberdini/archive/2013/05/21/software-engineer-interview-questions.aspx</link><pubDate>Tue, 21 May 2013 19:07:00 GMT</pubDate><guid isPermaLink="false">7a8b7c76-b7ad-48e0-9694-5b04ca132ed0:404729</guid><dc:creator>Marie Berdini</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;&lt;img style="float:right;margin:5px;" src="http://www.infragistics.com/community/cfs-filesystemfile.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/marieberdini/6746.2shutterstock_5F00_81590023.jpg" width="300" height="200" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;Hiring is a tricky process. Employers need to identify a need for new skills, first being sure they aren&amp;rsquo;t somewhere already, hidden in their organization (it is so much better to hire from within). &amp;nbsp;Then, they need to advertise and get viable candidates. &amp;nbsp;Depending on the difficulty of sourcing good candidates, companies may partner with recruitment agents to assist. &amp;nbsp;Once they get to this stage the really hard work begins - the interview.&lt;/p&gt;
&lt;p&gt;Conducting an effective interview is a learned skill, and endless articles and advice exists on what to do (and just as important, what not to do). &amp;nbsp;We are going to focus on one specific area - good questions to ask during the interview. &amp;nbsp;The questions below are designed to address the following:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;To tell you as much about the interviewee in the short time given&lt;/li&gt;
&lt;li&gt;To test the interviewee on his/her CV and what you think you already know about them&lt;/li&gt;
&lt;li&gt;To test the interviewee on their raw coding ability and problem solving skills&lt;/li&gt;
&lt;li&gt;To judge if the interviewee is a cultural fit for your organization.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These questions aren&amp;rsquo;t foolproof, and they don&amp;rsquo;t drift into Google style &lt;a href="http://www.businessinsider.com/15-google-interview-questions-that-used-to-make-geniuses-feel-dumb-2012-11?op=1"&gt;abstract&lt;/a&gt;&lt;a href="http://www.businessinsider.com/15-google-interview-questions-that-used-to-make-geniuses-feel-dumb-2012-11?op=1"&gt; &lt;/a&gt;&lt;a href="http://www.businessinsider.com/15-google-interview-questions-that-used-to-make-geniuses-feel-dumb-2012-11?op=1" target="_blank"&gt;territory&lt;/a&gt;, but we hope you will find them useful next time you are hiring.&lt;/p&gt;
&lt;h2&gt;&lt;i&gt;About the CV&lt;/i&gt;&lt;/h2&gt;
&lt;p&gt;&lt;b&gt;1. &amp;ldquo;Tell me a little bit more about your role at X company.&amp;rdquo;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;You want to check how well the interviewee&amp;rsquo;s CV stacks up. &amp;nbsp;Getting them to talk about it is the simplest way.&lt;/p&gt;
&lt;h3&gt;&lt;/h3&gt;
&lt;h2&gt;&lt;i&gt;About coding and problem solving&lt;/i&gt;&lt;/h2&gt;
&lt;p&gt;&lt;b&gt;2. &amp;ldquo;&lt;/b&gt;&lt;b&gt;Explain the difference between &amp;lsquo;equality&amp;rsquo; and &amp;lsquo;equivalence&amp;rsquo;.&amp;rdquo;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;If a candidate can&amp;rsquo;t successfully answer this question then they should be considered &amp;lsquo;entry level&amp;rsquo; at best.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;3. &amp;ldquo;Tell me about design patterns, and give me an example of when you used them last.&amp;rdquo;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;If the interviewee has never used design patterns, this will tell you a great deal. &amp;nbsp;If they have, the details should give you a view on how they solve problems.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;4. &amp;ldquo;What language are you most comfortable in and why?&amp;rdquo;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;If you are looking for a .NET person, and your potential candidate is exclusively PHP then you may have an issue. &amp;nbsp;But a good answer should have some thought and rationale behind it. &amp;nbsp;This is much more important than the actual language cited in the answer. &amp;nbsp;Ask about databases as an addition/alternative.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;5. &amp;ldquo;How do you test your code?&amp;rdquo;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;This doesn&amp;rsquo;t test any particular coding skill, but it does tell you a lot about their process. &amp;nbsp;All developers should be doing some kind of testing. &amp;nbsp;Depending on what you are looking for the answer might reveal someone who is conscientious in their work, or someone who knows all about test strategies and methodologies.&lt;/p&gt;
&lt;h2&gt;&lt;i&gt;About character and personality&lt;/i&gt;&lt;/h2&gt;
&lt;p&gt;&lt;b&gt;6. &amp;ldquo;Describe the work environment in which you feel you are most effective.&amp;rdquo;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;This will tell you if the person is a cultural fit for your company. Their answer can&amp;rsquo;t really be right or wrong, but it can be an indicator of the cultural fit you&amp;#39;re looking for.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;7. Why did you apply for this job?&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;You want a new teammate who &lt;em&gt;wants&lt;/em&gt; to work for you, not someone who is simply working down the jobs ads from A-Z. &amp;nbsp;This question will root out these sort of applicants, and show the level of research the candidate has done on the opportunity and your company.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Interested in a career here at Infragistics? Check out our &lt;a href="http://www.infragistics.com/about-us/career-opportunities/"&gt;current openings&lt;/a&gt;!&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.infragistics.com/about-us/career-opportunities/"&gt;&lt;img style="vertical-align:middle;margin:5px;" src="http://www.infragistics.com/community/cfs-filesystemfile.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/marieberdini/8030.careers_2D00_header_2D00_image.jpg" height="268" width="613" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.infragistics.com/community/aggbug.aspx?PostID=404729" width="1" height="1"&gt;</description></item><item><title>Accessing Salesforce data on the iPad</title><link>http://www.infragistics.com/community/blogs/marketing/archive/2013/05/21/accessing-salesforce-data-on-the-ipad.aspx</link><pubDate>Tue, 21 May 2013 17:32:00 GMT</pubDate><guid isPermaLink="false">7a8b7c76-b7ad-48e0-9694-5b04ca132ed0:404711</guid><dc:creator>DevToolsGuy</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;We have talked a lot recently about mobile design, mobile websites, and the surge in use of mobile devices in the enterprise. In this post we are going to look at a specific use case of the latter - Salesforce and the iPad.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.salesforce.com/"&gt;Salesforce&lt;/a&gt; is best known for their customer relationship management (CRM) software which has found a great deal of success in the enterprise market. In recent years they have started to expand their focus towards social products, in particular &lt;a href="http://www.salesforce.com/uk/chatter/overview/"&gt;Chatter&lt;/a&gt;, which is billed as a real-time collaboration network and has parallels with products like &lt;a href="http://www.yammer.com/"&gt;Yammer&lt;/a&gt;. Chatter is a good example of how Salesforce has reshaped itself as a dynamic innovative company, one keen to embrace new trends. These trends include &amp;lsquo;mobile first&amp;rsquo;, and the company has also tried to reach out and help its users as much as it can in this area.&lt;span style="text-decoration:underline;"&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Salesforce have their own mobile app called - &lt;strong&gt;Salesforce Touch for iPad. &lt;/strong&gt;It is a well thought out affair, allowing users to:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Access accounts, contacts, opportunities, and tasks&lt;/li&gt;
&lt;li&gt;Access Chatter feeds&lt;/li&gt;
&lt;li&gt;Edit data and create new records&lt;/li&gt;
&lt;li&gt;Search&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The interface is nice, and it makes good use of the iPads screen real estate. The biggest drawback is the app still doesn&amp;rsquo;t provide access to all of the data available on the native Salesforce website, so it can&amp;rsquo;t be totally relied on in the field just yet. Nor does it offer anything groundbreaking in terms of dashboards or charts. It just isn&amp;rsquo;t very exciting, it doesn&amp;rsquo;t make data &amp;lsquo;pop&amp;rsquo; off the screen. For that you will need something like our very own &lt;strong&gt;&lt;a href="http://www.infragistics.com/products/reportplus/" target="_blank"&gt;ReportPlus&lt;/a&gt;&lt;/strong&gt; product.&lt;strong&gt; &lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.infragistics.com/products/reportplus/"&gt;ReportPlus&lt;/a&gt; is a dashboard and reporting tool that can connect to popular enterprise data sources like those provided by Salesforce. It is specially designed to provide easy access to data on &lt;a href="http://www.shareplusapp.com/ios/"&gt;iOS devices&lt;/a&gt; like the iPad, and takes a lot of the pain out of creating beautiful visualizations. It doesn&amp;#39;t require programming knowledge or code of any sort, is easy to use, and the results can be very impressive. If your customers or workforce are looking for an alternative to the official Salesforce app, or you want to bring your Salesforce data to life in a whole new way, then ReportPlus might be the tool for you.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.shareplusapp.com/wp-content/uploads/2013/05/Salesforce-dashboard.jpg" target="_blank"&gt;&lt;img src="http://www.infragistics.com/community/cfs-filesystemfile.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/marketing/8321.Salesforce_2D00_dashboard.jpg" width="650" height="488" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;ReportPlus allows easy access to server side resources, like Salesforce, using domain credentials or username/password authentication. Then the real fun begins, as you can manipulate retrieved data sets to build rich functional, charts, trend lines, filters, and even geo-coded maps.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;ReportPlus also offers the following features:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Create interactive dashboards - Sort, filter, and manipulate data directly in the app&lt;/li&gt;
&lt;li&gt;Add logos, colors, and images - Brand your dashboards&lt;/li&gt;
&lt;li&gt;Save and export dashboards in a variety of formats - Share dashboards with colleagues via email, PowerPoint or the cloud.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;So next time you are looking at your Salesforce data and wishing it had a little more shine, try &lt;a href="http://www.infragistics.com/products/reportplus/"&gt;ReportPlus&lt;/a&gt;. We think you will be impressed.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.infragistics.com/products/reportplus/"&gt;&lt;img src="http://www.infragistics.com/community/cfs-filesystemfile.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/marketing/5353.ReportPlus_5F00_728x90c.jpg" width="650" height="80" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.infragistics.com/community/aggbug.aspx?PostID=404711" width="1" height="1"&gt;</description><category domain="http://www.infragistics.com/community/blogs/marketing/archive/tags/Data+Visualization/default.aspx">Data Visualization</category><category domain="http://www.infragistics.com/community/blogs/marketing/archive/tags/report+plus/default.aspx">report plus</category><category domain="http://www.infragistics.com/community/blogs/marketing/archive/tags/ReportPlus/default.aspx">ReportPlus</category><category domain="http://www.infragistics.com/community/blogs/marketing/archive/tags/ipad/default.aspx">ipad</category><category domain="http://www.infragistics.com/community/blogs/marketing/archive/tags/reporting/default.aspx">reporting</category><category domain="http://www.infragistics.com/community/blogs/marketing/archive/tags/report_2B00_/default.aspx">report+</category><category domain="http://www.infragistics.com/community/blogs/marketing/archive/tags/Salesforce/default.aspx">Salesforce</category><category domain="http://www.infragistics.com/community/blogs/marketing/archive/tags/crm/default.aspx">crm</category></item><item><title>Web programming (HTML5/CSS3/jQuery) for beginners - the journey starts here…</title><link>http://www.infragistics.com/community/blogs/brent_schooley/archive/2013/05/21/web-programming-html5-css3-jquery-for-beginners-the-journey-starts-here.aspx</link><pubDate>Tue, 21 May 2013 15:53:55 GMT</pubDate><guid isPermaLink="false">7a8b7c76-b7ad-48e0-9694-5b04ca132ed0:404696</guid><dc:creator>Brent Schooley</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Sometimes it’s hard to admit as programmers when we really don’t have a clue what we’re doing. This is especially evident when learning a new platform or technology. I am going through this exact experience right now as I try to get back into the web programming world. New tags in HTML5, new capabilities in CSS3, and various frameworks that make JavaScript feel much more modern. As my recent posts about HTML5 resources indicate, there’s a lot to learn once you get started. But what if you’re just getting started? Most of the resources out there assume you have some knowledge of HTML, CSS, and JavaScript. It can be hard to learn something new when everybody assumes more prerequisites than you actually know. &lt;/p&gt; &lt;p&gt;&lt;img title="webforbeginners" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="webforbeginners" src="http://www.infragistics.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/brent_5F00_schooley.metablogapi/2248.webforbeginners_5F00_4F18BC4B.png" width="404" height="204" /&gt;&lt;/p&gt; &lt;h2&gt;Tracking progress, sharing knowledge&lt;/h2&gt; &lt;p&gt;I want to create something that tracks bits and pieces of my learning process and tries to frame it under the ideal of “starting from the beginning”. This is admittedly a somewhat flawed premise since I am not starting from the very beginning (I did some Rails programming back in Rails 2), but I will do my best to describe things for the beginner. As I learn something new, I’ll share it. It doesn’t whether it’s a new fancy CSS trick or something that might seem extremely basic that I don’t want you to miss.(chances are I missed it the first time too!) &lt;/p&gt; &lt;h2&gt;The format&lt;/h2&gt; &lt;p&gt;This process will not be constrained by an outline up front and posts that follow that outline to the letter. That’s just not how the learning process tends to work. Sure, some of it is structured but a lot of learning happens randomly as we are introduced to new resources and concepts. If a concept is best conveyed by a tutorial, I’ll post a tutorial. Screencasts? Sure! Book reviews? You bet! &lt;/p&gt; &lt;h2&gt;Where do I start?&lt;/h2&gt; &lt;p&gt;Well, from the beginning would be best. While you wait for the posts from me to come in, I’d highly recommend the following resources for training. Both of these sites include coding challenges to help reinforce the knowledge you learn from the video training. Check out the free courses available from each to see if this will work for you:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a href="http://www.codeschool.com"&gt;CodeSchool&lt;/a&gt; - &lt;a href="http://www.infragistics.com/community/blogs/brent_schooley/archive/2013/05/13/code-school-html5-resource-of-the-day.aspx"&gt;(my review)&lt;/a&gt;  &lt;li&gt;&lt;a href="http://www.shareasale.com/r.cfm?b=418932&amp;amp;u=781833&amp;amp;m=43811&amp;amp;urllink=&amp;amp;afftrack="&gt;Treehouse&lt;/a&gt; – Content here is great and spans multiple technologies and disciplines.&amp;nbsp; They have a free&amp;nbsp; trial you can check out if you follow the &lt;a href="http://www.shareasale.com/r.cfm?b=418932&amp;amp;u=781833&amp;amp;m=43811&amp;amp;urllink=&amp;amp;afftrack="&gt;link&lt;/a&gt;.&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Stay tuned, more content coming soon!&lt;/p&gt; &lt;h2&gt;Contact&lt;/h2&gt; &lt;p&gt;If you have any questions or comments in the meantime, please feel free to email me at &lt;a href="mailto:bschooley@infragistics.com"&gt;bschooley@infragistics.com&lt;/a&gt; or find me on Twitter &lt;a href="http://twitter.com/brentschooley"&gt;@brentschooley&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.infragistics.com/products/jquery/"&gt;&lt;img title="Ignite-jQuery-650x80" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="Ignite-jQuery-650x80" src="http://www.infragistics.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/brent_5F00_schooley.metablogapi/6746.Ignite_2D00_jQuery_2D00_650x80_5F00_10FC083C.png" width="650" height="80" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.infragistics.com/community/aggbug.aspx?PostID=404696" width="1" height="1"&gt;</description></item><item><title>Top 10 Tools for Mac and iOS Development</title><link>http://www.infragistics.com/community/blogs/torrey-betts/archive/2013/05/20/top-10-tools-for-mac-and-ios-development.aspx</link><pubDate>Mon, 20 May 2013 14:55:00 GMT</pubDate><guid isPermaLink="false">7a8b7c76-b7ad-48e0-9694-5b04ca132ed0:404473</guid><dc:creator>[Infragistics] Torrey Betts</dc:creator><slash:comments>0</slash:comments><description>&lt;h2&gt;Introduction&lt;/h2&gt;
&lt;p&gt;Having the right set of tools can take your development quality to the next level. This article provides you with my personal current top 10 apps to use for Mac and iOS development.&lt;/p&gt;
&lt;h2&gt;#1 - AppCode&lt;/h2&gt;
&lt;p&gt;&lt;a href="http://media.screensteps.me/tbetts/p6dn2n/1-appcode.png?1369061341"&gt;&lt;img alt="#1 - AppCode" src="http://media.screensteps.me/tbetts/p6dn2n/1-appcode.png?1369061341" width="700" height="356" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;AppCode is a must have IDE for any serious developer on the Mac/iOS platform.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style="text-decoration:underline;"&gt;Features&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Advanced Coding Assistance&lt;/li&gt;
&lt;li&gt;Code Generation and Refactorings&lt;/li&gt;
&lt;li&gt;Code Quality&lt;/li&gt;
&lt;li&gt;Project and Code Navigation&lt;/li&gt;
&lt;li&gt;i18n Support&lt;/li&gt;
&lt;li&gt;Debugger&lt;/li&gt;
&lt;li&gt;Unit Testing&lt;/li&gt;
&lt;li&gt;iOS Development&lt;/li&gt;
&lt;li&gt;VCS Integration and Local History&lt;/li&gt;
&lt;li&gt;Integrations&lt;/li&gt;
&lt;li&gt;More than Objective-C IDE&lt;/li&gt;
&lt;li&gt;Customization and Extensibility&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;br /&gt;Website: &lt;a href="http://www.jetbrains.com/objc/features/index.html"&gt;http://www.jetbrains.com/objc/features/index.html&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;#2 - Indigo Studio&lt;/h2&gt;
&lt;p&gt;&lt;img alt="#2 - Indigo Studio" src="http://media.screensteps.me/tbetts/p6dn2n/2-indigo-studio.png?1369061342" width="617" height="481" /&gt;&lt;/p&gt;
&lt;p&gt;Prototype out your app ideas. Indigo Studio allows you to interactively prototype your web, desktop, and mobile apps. Major upside, it&amp;#39;s free!&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style="text-decoration:underline;"&gt;Features&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Illustrate with Storyboards&lt;/li&gt;
&lt;li&gt;Sketch and Design Screens&lt;/li&gt;
&lt;li&gt;Design with Clutter-Free UI&lt;/li&gt;
&lt;li&gt;Leverage Built-In UI Elements&lt;/li&gt;
&lt;li&gt;Prototype and Visualize Interactions&lt;/li&gt;
&lt;li&gt;Animate Transitions&lt;/li&gt;
&lt;li&gt;Annotate Prototypes&lt;/li&gt;
&lt;li&gt;Share and Present Prototypes&lt;/li&gt;
&lt;li&gt;Export Prototype Designs&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;br /&gt;Website: &lt;a href="http://www.infragistics.com/products/indigo-studio"&gt;http://www.infragistics.com/products/indigo-studio&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;#3 - Reflector&lt;/h2&gt;
&lt;p&gt;&lt;img alt="#3 - Reflector" src="http://media.screensteps.me/tbetts/p6dn2n/3-reflector.png?1369061343" width="571" height="724" /&gt;&lt;/p&gt;
&lt;p&gt;An excellent tool for mirroring your iOS device screen when you have to demo or present to a group.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style="text-decoration:underline;"&gt;Features&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Record. Easily capture the screen of your iOS device and save it as a video file for later review.&lt;/li&gt;
&lt;li&gt;iOS On Your Mac. View your iOS device on your Mac and continue using it while you&amp;#39;re mirroring.&lt;/li&gt;
&lt;li&gt;Password Protection. Control access to your Mac by setting a password to prevent unwanted connections.&lt;/li&gt;
&lt;li&gt;Selectable Frames. Change the color of the device frame on your screen to match the actual skin of your device.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;br /&gt;Website: &lt;a href="https://www.reflectorapp.com/"&gt;https://www.reflectorapp.com&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;#4 - xScope&lt;/h2&gt;
&lt;p&gt;&lt;img alt="#4 - xScope" src="http://media.screensteps.me/tbetts/p6dn2n/4-xscope.png?1369061344" width="650" height="515" /&gt;&lt;/p&gt;
&lt;p&gt;A collection of valuable design and development tools all in one package.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style="text-decoration:underline;"&gt;Features&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Mirror - Effortlessly see your designs and applications on iOS while you work on them from your Mac.&lt;/li&gt;
&lt;li&gt;Dimensions - Instantly find the dimensions of any on-screen element simply by rolling your mouse cursor over it.&lt;/li&gt;
&lt;li&gt;Rulers - Powerful on-screen rulers for precise pixel measurements that include scaling, rotation, and edge snapping.&lt;/li&gt;
&lt;li&gt;Screens - Inspect your usable screen real estate with dozens of templates for computers, TV&amp;#39;s and mobile devices.&lt;/li&gt;
&lt;li&gt;Loupe - Magnify part of your screen, copy colors and simulate how colors appear to users with vision impairments.&lt;/li&gt;
&lt;li&gt;Guides - Display vertical and horizontal guides that float on top of all else on the screen for easy alignment.&lt;/li&gt;
&lt;li&gt;Frames - Create, layout and adjust custom marker boxes that float on top of all other on-screen elements.&lt;/li&gt;
&lt;li&gt;Crosshair - Quickly and easily locate and align any point visible on the screen.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;br /&gt;Website: &lt;a href="http://xscopeapp.com/"&gt;http://xscopeapp.com&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;#5 - CodeRunner&lt;/h2&gt;
&lt;p&gt;&lt;img alt="#5 - CodeRunner" src="http://media.screensteps.me/tbetts/p6dn2n/5-coderunner.png?1369061345" width="633" height="318" /&gt;&lt;/p&gt;
&lt;p&gt;Edit and run code in any programming language. There&amp;#39;s a bunch of preset languages already set up, and it&amp;#39;s an easy task to add any other languages you might be using.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style="text-decoration:underline;"&gt;Features&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Run code in any language&lt;/li&gt;
&lt;li&gt;Powerful editing&lt;/li&gt;
&lt;li&gt;Customizable templates&lt;/li&gt;
&lt;li&gt;Built-in Console&lt;/li&gt;
&lt;li&gt;Add your own languages&lt;/li&gt;
&lt;li&gt;Interact with your code&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;br /&gt;Website: &lt;a href="http://krillapps.com/coderunner/"&gt;http://krillapps.com/coderunner/&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;#6 - Patterns&lt;/h2&gt;
&lt;p&gt;&lt;img alt="#6 - Patterns" src="http://media.screensteps.me/tbetts/p6dn2n/6-patterns.png?1369061345" width="655" height="518" /&gt;&lt;/p&gt;
&lt;p&gt;A simple yet powerful tool for working with regular expressions. Includes a built in cheat sheet, if you need a little refresher.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style="text-decoration:underline;"&gt;Features&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Regular expression syntax coloring makes it easy to see how your pattern is interpreted by the regex engine. No more confusion about what needs to be escaped.&lt;/li&gt;
&lt;li&gt;See matches and replacements in real time while you edit your pattern.&lt;/li&gt;
&lt;li&gt;Copy match and replacement code snippets of your pattern for quick use in a number of different programming languages.&lt;/li&gt;
&lt;li&gt;The built-in regular expression reference sheet helps you find the piece of regex syntax you need.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;br /&gt;Website: &lt;a href="http://krillapps.com/patterns/"&gt;http://krillapps.com/patterns/&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;#7 - Clarify&lt;/h2&gt;
&lt;p&gt;&lt;img alt="#7 - Clarify" src="http://media.screensteps.me/tbetts/p6dn2n/7-clarify.png?1369061346" width="635" height="351" /&gt;&lt;/p&gt;
&lt;p&gt;Quickly create tutorials and how-to documents.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style="text-decoration:underline;"&gt;Features&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Capture images.&lt;/li&gt;
&lt;li&gt;Each capture becomes a step in your document.&lt;/li&gt;
&lt;li&gt;Add annotations and text to images.&lt;/li&gt;
&lt;li&gt;Add text.&lt;/li&gt;
&lt;li&gt;Share your document via DropBox or Clarify-it.com.&lt;/li&gt;
&lt;li&gt;Share as a PDF.&lt;/li&gt;
&lt;li&gt;Copy RTF to email or word processing documents.&lt;/li&gt;
&lt;li&gt;Many ways to export images.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;br /&gt;Website: &lt;a href="http://www.clarify-it.com/"&gt;http://www.clarify-it.com&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;#8 - ColorSchemer Studio 2&lt;/h2&gt;
&lt;p&gt;&lt;img alt="#8 - ColorSchemer Studio 2" src="http://media.screensteps.me/tbetts/p6dn2n/8-colorschemer-studio-2.png?1369061346" width="660" height="481" /&gt;&lt;/p&gt;
&lt;p&gt;Quickly create schemes. This tool has a GalleryBrowser button on the toolbar that provides access to millions of color palettes in addition to being able to create your own from scratch.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style="text-decoration:underline;"&gt;Features&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Create and save color palettes.&lt;/li&gt;
&lt;li&gt;Identify color harmonies.&lt;/li&gt;
&lt;li&gt;Access over a million pre-made color schemes.&lt;/li&gt;
&lt;li&gt;Pull unique palettes from photos or images.&lt;/li&gt;
&lt;li&gt;Build custom LiveScheme formulas.&lt;/li&gt;
&lt;li&gt;Transform a single color into a complete color scheme.&lt;/li&gt;
&lt;li&gt;Mix colors and create gradient blends.&lt;/li&gt;
&lt;li&gt;Find similar or related colors.&lt;/li&gt;
&lt;li&gt;Preview colors on a variety of layouts.&lt;/li&gt;
&lt;li&gt;View colors through colorblind eyes.&lt;/li&gt;
&lt;li&gt;Print your color schemes.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;br /&gt;Website: &lt;a href="http://www.colorschemer.com/osx_info.php"&gt;http://www.colorschemer.com/osx_info.php&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;#9 - Spectrum&lt;/h2&gt;
&lt;p&gt;&lt;img alt="#9 - Spectrum" src="http://media.screensteps.me/tbetts/p6dn2n/9-spectrum.png?1369061347" width="553" height="686" /&gt;&lt;/p&gt;
&lt;p&gt;Quickly create beautiful color schemes. Inspired by principles of color theory. This tool also makes it really easy to copy each color to the clipboard in a number of formats, including hex color code, UIColor, CIColor, etc.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style="text-decoration:underline;"&gt;Features&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Create color schemes based on harmony rules.&lt;/li&gt;
&lt;li&gt;Instantly explore tints and shades for a given color to fine tune the palette.&lt;/li&gt;
&lt;li&gt;Automatically create color schemes from a photograph - great for inspirations.&lt;/li&gt;
&lt;li&gt;Organize your palettes and create a searchable collection of color schemes.&lt;/li&gt;
&lt;li&gt;Capture color from your screen using the built-in color picker tool.&lt;/li&gt;
&lt;li&gt;Export your color schemes to CSS and ASE (for use in Adobe&amp;#39;s Creative Suite).&lt;/li&gt;
&lt;li&gt;Import colors from existing CSS and ASE files.&lt;/li&gt;
&lt;li&gt;Instantly preview your color schemes using a variety of visualizations.&lt;/li&gt;
&lt;li&gt;Configure color profiles.&lt;/li&gt;
&lt;li&gt;Switch between two color wheel modes - perceptual and uniform.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;br /&gt;Website: &lt;a href="http://www.eigenlogik.com/spectrum/"&gt;http://www.eigenlogik.com/spectrum/&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;#10 - ColoRotate&lt;/h2&gt;
&lt;p&gt;&lt;img alt="#10 - ColoRotate" src="http://media.screensteps.me/tbetts/p6dn2n/10-colorotate.png?1369061348" width="586" height="442" /&gt;&lt;/p&gt;
&lt;p&gt;Work fast. Edit color palettes with a few taps of your fingers. Easily analyze, extract, adjust, and share colors.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style="text-decoration:underline;"&gt;Features&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Work fast. Edit your color palettes with a few taps of your fingers. Easily analyze, extract, adjust, and share colors.&lt;/li&gt;
&lt;li&gt;Color smart. Take control of colors with the intuitive 3D color scope. There are powerful tools for extracting from images, adjusting with blends, making precise edits, or generating fresh ideas with randomized palettes.&lt;/li&gt;
&lt;li&gt;Sociable colors. View your palettes with six different preview modes. Share with colleagues, clients and friends by email, Twitter, Facebook, Evernote, DropBox, or send to your photo library.&lt;/li&gt;
&lt;li&gt;Works with Photoshop. Connect to Photoshop CS5 or CS6 and ColoRotate instantly updates the foreground &amp;amp; background colors, or sends palettes to your desktop.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;br /&gt;Website: &lt;a href="http://mobile.colorotate.org/"&gt;http://mobile.colorotate.org&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://plus.google.com/114841922674980098581?rel=author"&gt;By Torrey Betts&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.infragistics.com/community/aggbug.aspx?PostID=404473" width="1" height="1"&gt;</description><category domain="http://www.infragistics.com/community/blogs/torrey-betts/archive/tags/Objective-C/default.aspx">Objective-C</category><category domain="http://www.infragistics.com/community/blogs/torrey-betts/archive/tags/Xcode/default.aspx">Xcode</category><category domain="http://www.infragistics.com/community/blogs/torrey-betts/archive/tags/NucliOS/default.aspx">NucliOS</category><category domain="http://www.infragistics.com/community/blogs/torrey-betts/archive/tags/iOS/default.aspx">iOS</category><category domain="http://www.infragistics.com/community/blogs/torrey-betts/archive/tags/iOS+Development/default.aspx">iOS Development</category></item></channel></rss>