<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://community.infragistics.com/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/"><channel><title>Search results matching tag 'Templating'</title><link>http://community.infragistics.com/search/SearchResults.aspx?a=1&amp;o=DateDescending&amp;tag=Templating&amp;orTags=0</link><description>Search results matching tag 'Templating'</description><dc:language>en-US</dc:language><generator>CommunityServer 2008.5 SP1 (Build: 31106.3070)</generator><item><title>jQuery Grids and Responsive Web Design</title><link>http://community.infragistics.com/blogs/damyan_petev/archive/2013/04/12/jquery-grids-and-responsive-web-design.aspx</link><pubDate>Fri, 12 Apr 2013 18:37:00 GMT</pubDate><guid isPermaLink="false">7a8b7c76-b7ad-48e0-9694-5b04ca132ed0:399957</guid><dc:creator>dpetev</dc:creator><description>&lt;p&gt;&lt;img title="Responsive Web Design and jQuery Grids" style="float:left;margin:0px 5px 0px 0px;display:inline;" alt="Responsive Web Design and jQuery Grids" align="left" src="http://media.infragistics.com/community/Release/13.1/jQuery/responsive-grid/jquery-grid-responsive-web-design.png" /&gt;Responsive Web Design has been abuzz for some time now. In case you just now clash with the term, it’s a &lt;a title="Responsive web design - Wikipedia" href="http://en.wikipedia.org/wiki/Responsive_web_design" target="_blank"&gt;web design approach aimed at crafting sites to provide an optimal viewing experience across a wide range of devices&lt;/a&gt;. Basically, a CSS3 / JavaScript / jQuery powered&amp;nbsp; site that adjusts itself to better suit the screen it’s on, with the added bonus of keeping a single code base. What’s not to like? Well besides it’s often abbreviated ‘RWD’ which outside of the IT fields stands for &lt;a href="http://en.wikipedia.org/wiki/Rear-wheel_drive"&gt;Rear-wheel drive&lt;/a&gt;, so slightly confusing for people into both.. but that’s a minor issue. Other than that, it’s pretty awesome, but also sometimes hard to implement – some elements of a Web app simply don’t handle well squishing into smaller spaces. Complicated enterprise applications might even require quite a bit of extra work – and as you know with &lt;a title="Ignite UI: JavaScript / jQuery &amp;amp; HTML5 UI Framework" href="http://www.infragistics.com/products/jquery/" target="_blank"&gt;Ignite UI&lt;/a&gt; we want to help you get the extra work out of the way! And what do heavy business apps use? Grids, of course! &lt;/p&gt; &lt;p&gt;Now, how do you imagine a big table with a few columns and at least a few hundred rows is to fit in portrait mode on tablets and event more so on phones? The limited space calls for some changes and I’m quite excited to tell you your jQuery Grids will soon (and I mean soon – 13.1 is right around the corner) be equipped with the Responsive feature, ready to fit right into your RWD site! Do I hear clapping? Yeah, that’s not some simple data table we are talking about here – a full-fledged, &lt;a title="Ignite UI jQuery Grid" href="http://www.infragistics.com/products/jquery/grid/" target="_blank"&gt;feature-packed jQuery Data Grid&lt;/a&gt; and its &lt;a title="http://www.infragistics.com/products/jquery/hierarchical-grid/" href="http://www.infragistics.com/products/jquery/hierarchical-grid/" target="_blank"&gt;Hierarchical version&lt;/a&gt; – they can do so much you might as well just make a whole app out of them. A &lt;strong&gt;responsive&lt;/strong&gt; app!&lt;/p&gt; &lt;p&gt;Lastly, if you are in for a quick start with the whole toolset and related concepts you can &lt;a title="Get Started Learning Ignite UI Today!" href="http://www.infragistics.com/community/blogs/craig_shoemaker/archive/2013/03/06/get-started-learning-ignite-ui-today.aspx" target="_blank"&gt;Get Started Learning Ignite UI Today!&lt;/a&gt; The more you know, the more exciting this will be.&lt;/p&gt; &lt;h1&gt;What can it do for you and what can you do with Responsive!&lt;/h1&gt; &lt;p&gt;The main star of the Responsive feature is allowing you to know in what ‘state’ the app is running and define separate grid and column settings for each to make the best of whatever space you have. For example only do a few major columns for a phone view, some more for a tablet:&lt;/p&gt; &lt;p&gt;&lt;a title="The Ignite UI Grid with 3 columns visible in phone mode" href="http://media.infragistics.com/community/Release/13.1/jQuery/responsive-grid/jquery-grid-responsive-phone.png"&gt;&lt;img title="The Ignite UI Grid with 3 columns visible in phone mode" style="margin:0px 25px 0px 0px;" alt="The Ignite UI Grid with 3 columns visible in phone mode" src="http://media.infragistics.com/community/Release/13.1/jQuery/responsive-grid/jquery-grid-responsive-phone-thumb.png" /&gt;&lt;/a&gt;&lt;a title="The Ignite UI Grid in tablet mode" href="http://media.infragistics.com/community/Release/13.1/jQuery/responsive-grid/jquery-grid-responsive-tablet.png"&gt;&lt;img title="The Ignite UI Grid in tablet mode" alt="The Ignite UI Grid in tablet mode" src="http://media.infragistics.com/community/Release/13.1/jQuery/responsive-grid/jquery-grid-responsive-tablet-thumb.png" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;And the all the extra stuff when you have the space:&lt;/p&gt; &lt;p&gt;&lt;a title="The Ignite UI Grid with all columns visible in desktop mode" href="http://media.infragistics.com/community/Release/13.1/jQuery/responsive-grid/jquery-grid-responsive-desktop.png"&gt;&lt;img title="The Ignite UI Grid with all columns visible in desktop mode" alt="The Ignite UI Grid with all columns visible in desktop mode" src="http://media.infragistics.com/community/Release/13.1/jQuery/responsive-grid/jquery-grid-responsive-desktop-thumb.png" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;The feature allows you to trigger column visibility based on CSS classes – with a slight nod towards those familiar with or already using popular responsive UI frameworks like Twitter Bootstrap. The RWD Grid comes with 3 modes (mode recognizers if you will, we can work on the naming), that are used to match predefined or custom states ( such as ‘phone’, ‘tablet’ and desktop). Mode Recognizers if you will, but we can work on the naming:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Responsive mode – the base  &lt;li&gt;Infragistics mode  &lt;li&gt;Bootstrap mode&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;The base implementation looks at the window width, but the Infragistics and Bootstrap profiles rely on CSS3 media classes through a set of classes. Actually here is where Bootstrap comes with their set of media queries and specific classes, that many of you should find familiar. It’s not as simple as putting CSS classes on table cells, though! The igGrid is way too complex for that, but the Responsive feature does the next best thing – hiding columns thought the API methods and detecting when to do that using the class on a test element. I actually love this technique, because that’s how you do a ‘matchMedia’ polyfill (because &lt;a title="Can I use... :  CSS3 Media Queries /  matchMedia" href="http://caniuse.com/#search=media%20quer" target="_blank"&gt;most mobile browsers support media queries, but not &amp;#39;matchMedia&amp;#39;&lt;/a&gt;) and I always thought it was super clever workaround. But anyways, the point is that though CSS you can define when columns will be visible and the grid will do the rest for you. I’ll actually just include a shot of the Twitter Bootstrap description that should be clear enough:&lt;/p&gt; &lt;p&gt;&lt;a title="Twitter Bootstrap&amp;#39;s Responsive utility classes" href="http://twitter.github.io/bootstrap/scaffolding.html#responsive" target="_blank"&gt;&lt;img title="Twitter Bootstrap&amp;#39;s Responsive utility classes" alt="Twitter Bootstrap&amp;#39;s Responsive utility classes" src="http://media.infragistics.com/community/Release/13.1/jQuery/responsive-grid/bootstrap-responsive-utility-classes.png" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Basically what you do is have you classes in CSS - the ones that come with Bootstrap as above, or the ones from Ignite UI CSS that are pretty much the same, but with out usual “ui-“ prefix, so it’s “ui-visible-phone” and so on. Basically, you need the classes in there – if you are using Bootstrap – great, you can reuse, otherwise we will provide you with them. Those classes are assigned in the column settings on the feature (remember, they are for the test element only) and it really is as simple as adding the Responsive feature to your grid with settings similar to this:&lt;/p&gt; &lt;div id="codeSnippetWrapper" style="overflow:auto;cursor:text;border-top:silver 1px solid;height:108px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-right:silver 1px solid;border-bottom:silver 1px solid;padding-bottom:4px;direction:ltr;text-align:left;padding-top:4px;padding-left:4px;margin:20px 0px 10px;border-left:silver 1px solid;padding-right:4px;max-height:200px;width:97.5%;background-color:#f4f4f4;"&gt;&lt;pre id="codeSnippet" style="border-top-style:none;overflow:visible;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;features : [{&lt;br /&gt;        name : &lt;span style="color:#006080;"&gt;&amp;#39;Responsive&amp;#39;&lt;/span&gt;,&lt;br /&gt;        columnSettings : [{&lt;br /&gt;            columnKey : &lt;span style="color:#006080;"&gt;&amp;#39;name&amp;#39;&lt;/span&gt;,&lt;br /&gt;            classes: &lt;span style="color:#006080;"&gt;&amp;quot;ui-visible-phone&amp;quot;&lt;/span&gt;&lt;br /&gt;        }]&lt;br /&gt;        //....&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;
&lt;p&gt;Or you can even configure visibility though simple properties that match the mode’s profiles:&lt;/p&gt;
&lt;div id="codeSnippetWrapper" style="overflow:auto;cursor:text;border-top:silver 1px solid;height:167px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-right:silver 1px solid;border-bottom:silver 1px solid;padding-bottom:4px;direction:ltr;text-align:left;padding-top:4px;padding-left:4px;margin:20px 0px 10px;border-left:silver 1px solid;padding-right:4px;max-height:200px;width:97.5%;background-color:#f4f4f4;"&gt;&lt;pre id="codeSnippet" style="border-top-style:none;overflow:visible;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&lt;span style="color:#008000;"&gt;// ...&lt;/span&gt;&lt;br /&gt;features : [{&lt;br /&gt;        name : &lt;span style="color:#006080;"&gt;&amp;#39;Responsive&amp;#39;&lt;/span&gt;,&lt;br /&gt;        {&lt;br /&gt;            columnKey : &lt;span style="color:#006080;"&gt;&amp;#39;BusinessEntityID&amp;#39;&lt;/span&gt;,&lt;br /&gt;            configuration: {&lt;br /&gt;                phone: {&lt;br /&gt;                    hidden: &lt;span style="color:#0000ff;"&gt;true&lt;/span&gt;&lt;br /&gt;                }&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;// ...&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;A Template for every occasion&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;So hiding columns is not enough? Well the Responsive feature kindly offers additional configuration options by providing templates for separate modes. You heard me right – you can swap the entire grid template on every mode and in the same configuration as above, where you define state for modes, you can also add column template specific to each mode! So that’s quite something – with templates you can change the look and feel of the entire grid between modes – shift controls templated into cells back to data or the other way around, merge columns and more! Just keep in mind the row templates are final and will override column ones if mixed.&lt;/p&gt;
&lt;h1&gt;Customizable, we need it to be customizable!&lt;/h1&gt;
&lt;p&gt;And so we hear – there’s a whole bunch of settings you can change for way the feature works. The sheer fact that the responsive modes can be quite a few – you can use the classes and have the designer decide thought media queries when exactly should the modes be triggered! That in itself sounds like a good foundation to keep design consideration out of the code. &lt;/p&gt;
&lt;p&gt;Then you also have the option to create your own modes… for example have one specially targeted at “phablets” or something like this or any custom width and CSS media query you can think of. You can also extend and define your own mode recognizers (profiles) where you can not only define custom modes, but also use custom logic to say when they are active. That means you responsive grid doesn’t need to depend on CSS or not even on window width..it can be anything you see fit!&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Eventful&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Well, it’s not just automatic column hiding and template switching.. There’s a whole lot more! The numerous events you can react to are simply a powerhouse of a customization point – you can react to mode changes or even to separate columns going away or coming into view – either way at any point you can perform additional work to improve you app’s experience! You can reduce page sizes, group records, filter, sort or anything you deem helpful. You can even use the Responsive feature events as hooks for script-related modifications of your entire page/app – after all it’s already monitoring the state of the device, you might as well make full use of that! As you can imagine there are great many possibilities of what you can do.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Settings&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Besides the elaborate per-column configuration and per-mode settings already mentioned, the Responsive feature doesn’t have that much:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A general setting that will ensure the grid will stretch the full 100% of its parent, overriding other settings.&lt;/li&gt;
&lt;li&gt;A sensitivity setting defining just how much of a change there should be before the feature would react to changes in window width. Performance implications here obviously.&lt;/li&gt;
&lt;li&gt;And finally the option to disable monitoring container resizes as a whole – again some performance gains and pretty much the difference between a responsive and fluid behavior. If you are interested in that sort of stuff check out the info for our conference below.&lt;/li&gt;&lt;/ul&gt;
&lt;h1&gt;Power to the user&lt;/h1&gt;
&lt;p&gt;Trust me when I say I appreciate every effort a developer has made to improve my experience using a site and I get annoyed when I have to scroll left and right to read a single sentence. But then again, I’m also a user who doesn’t like his capabilities being taken away unconditionally. Yes, responsiveness can bring better experience, but only if you don’t take away from important content and functionality without the option to get them back. Basically, I hate when something gets hidden permanently on some mobile device and I can’t find it. It’s infuriating, even more so with RWD where I can’t just skip to the desktop version and make do. &lt;/p&gt;
&lt;p&gt;In the case of the Ignite UI Grid that would mean using the Responsive feature to hide columns that might contain required information. There’s usually a reason for that data to be there and simply removing it from the picture just cuts of functionality from the app! Best part is that the &lt;a title="Column Hiding feature - Ignite UI Grid samples" href="http://www.infragistics.com/products/jquery/sample/grid/column-hiding-basic"&gt;Column Hiding feature&lt;/a&gt; will provide the UI when Responsive kicks in for free:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.infragistics.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/damyan_5F00_petev.metablogapi/0640.jquery_2D00_grid_2D00_responsive_2D00_column_2D00_hiding_5F00_3839C926.png"&gt;&lt;img title="Column Hiding UI with Responsive feature" 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="Column Hiding UI with Responsive feature" src="http://www.infragistics.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/damyan_5F00_petev.metablogapi/8407.jquery_2D00_grid_2D00_responsive_2D00_column_2D00_hiding_5F00_thumb_5F00_3761633C.png" width="344" height="197" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This is something I personally can’t see such a feature without. So, in case you are hiding columns, please consider giving the user the option to control what he’s seeing. &lt;/p&gt;
&lt;h1&gt;Resources&lt;/h1&gt;
&lt;p&gt;This has been more a general overview of the Ignite UI jQuery Grids’ Responsive feature aimed at Responsive Web Design (RWD) and a kind of a teaser for the upcoming 13.1 goodness. I’ll be making some more blogs with more code, demos and tricks very soon, so stay tuned!&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a title="Get Started Learning Ignite UI Today!" href="http://www.infragistics.com/community/blogs/craig_shoemaker/archive/2013/03/06/get-started-learning-ignite-ui-today.aspx" target="_blank"&gt;Get Started Learning Ignite UI Today!&lt;/a&gt; (yes, yes, again!) 
&lt;li&gt;All the awesomeness coming you way: 
&lt;p&gt;&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;/p&gt;
&lt;li&gt;As always Free Trial is available and it will soon be serving up 13.1 code for you to try!&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&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Just in case you are joining us tomorrow for a day filled with JavaScript related talks at &lt;a title="JavaScript Saturday: Sofia, Bulgaria." href="http://jssaturday.com/sofia/home" target="_blank"&gt;JS Saturday&lt;/a&gt; and the topic of Responsive Web Design and Fluid design interest you – make sure to visit the session by our very own &lt;a href="http://jssaturday.com/sofia/speakers.html#konstantinDinev"&gt;Konstantin Dinev&lt;/a&gt;!&lt;br /&gt;&lt;a title="JavaScript Saturday: Sofia, Bulgaria." href="http://jssaturday.com/sofia/home.html"&gt;&lt;img title="JavaScript Saturday: Sofia, Bulgaria." 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="JavaScript Saturday: Sofia, Bulgaria." src="http://www.infragistics.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/damyan_5F00_petev.metablogapi/0640.jssaturday_2D00_logo_5F00_48D1C414.png" width="606" height="253" /&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;</description></item><item><title>Tips on Drag &amp;amp; Drop with the Ignite UI Tree</title><link>http://community.infragistics.com/blogs/damyan_petev/archive/2012/12/19/tips-on-drag-amp-drop-with-the-ignite-ui-tree.aspx</link><pubDate>Wed, 19 Dec 2012 17:23:00 GMT</pubDate><guid isPermaLink="false">7a8b7c76-b7ad-48e0-9694-5b04ca132ed0:386139</guid><dc:creator>dpetev</dc:creator><description>&lt;p&gt;&lt;img title="Tips on Drag &amp;amp; Drop with the Ignite UI Tree" style="float:left;margin:0px 5px 0px 0px;display:inline;" alt="Tips on Drag &amp;amp; Drop with the Ignite UI Tree" align="left" src="http://media.infragistics.com/community/Release/12.2/jQuery/Tree-Drag-Drop/ignite-ui-tips-tree-drag-drop.png" /&gt;As promised in the previous blog on &lt;a title="Ignite UI Tree Drag &amp;amp; Drop" href="http://www.infragistics.com/community/blogs/damyan_petev/archive/2012/12/13/ignite-ui-tree-drag-and-drop.aspx" target="_blank"&gt;Drag &amp;amp; Drop with the Ignite UI Tree&lt;/a&gt; – some tips and tricks coming right up. If you haven’t already looked into the control’s features, now’s your chance – overview with main ones listed in the &lt;a title="igTree Overview - Ignite UI&amp;trade; Online Help ::  2012.2" href="http://help.infragistics.com/NetAdvantage/jQuery/2012.2/CLR4.0?page=igTree_Overview.html" target="_blank"&gt;Documentation&lt;/a&gt; and &lt;a title="Ignite UI online samples - jQuery Tree" href="http://www.infragistics.com/products/jquery/tree" target="_blank"&gt;live in the Samples&lt;/a&gt;. Looking at those, while each of them is rather nice, how do you think some of them would work alongside each other…and is something missing? The first one is always a potential trouble maker and the latter.. well extending functionality is fun, but as you know there are always new stuff coming with each release – might be just the thing you are missing. We do take feedback on everything through socials (links always below), there’s an active community at the &lt;a title="Forums &amp;raquo; IgniteUI - jQuery Controls" href="http://www.infragistics.com/community/forums/default.aspx?GroupID=80" target="_blank"&gt;Forums&lt;/a&gt; and you can always &lt;a title="Feature Request" href="https://www.infragistics.com/my-account/feature-request/" target="_blank"&gt;submit a feature request( must be logged in)&lt;/a&gt;. Enough with the shameless plugs, on to the discussion!&lt;/p&gt; &lt;h1&gt;Play nice?&lt;/h1&gt; &lt;p&gt;As you’ve already seen in my previous post there are some quirks for example when you have nodes moving around with Drag and Drop and &lt;strong&gt;checkboxes&lt;/strong&gt; at the same time you will loose the checkbox state and when a tri-state parent is fully checked a dropped node will respect the valid-for-all rule. &lt;/p&gt; &lt;p&gt;It’s merely the fact that while drag and drop is a nice interaction from a user standpoint, underneath it involves removing and adding nodes. While that is simple in itself, it does present a number of situations where it can be really tricky to preserve whatever state the node may have applied by multiple other features. There’s a similar scenario with &lt;strong&gt;&lt;a title="Tree Selection - Ignite UI Online Samples" href="http://www.infragistics.com/products/jquery/sample/tree/selection"&gt;selection&lt;/a&gt;&lt;/strong&gt; when you move the selected node around – you still keep the selection data, but the visual is gone as the node is re-created.&lt;/p&gt; &lt;p&gt;Then you have another &lt;a title="Tree Load on Demand - Ignite UI Online Samples" href="http://www.infragistics.com/products/jquery/sample/tree/load-on-demand"&gt;major feature of the Ignite UI Tree – the Load On Demand&lt;/a&gt;. This is an extra tricky one actually. While the moving of nodes happens entirely on the client and there’s little that can come in it’s way.. it’s really hard to add a node to a parent one that hasn’t yet populated its children. Yes, you can easily supply the UI, but the underlying data source would still contain no array of child items for you to add to. Of course, one the node populates it’s all good and cool, but as you get told everywhere users are notoriously impatient and in case they do not wait for the node to load it can get quite messy.&lt;/p&gt; &lt;p&gt;Do keep in mind thought, the Ignite UI toolset keeps evolving with not only new features, but general improvements as well and it’s certain Drag&amp;amp;Drop will become more in tune with the rest. For that reason, what I do provide for now would possible become obsolete, but it’s more of a testimony&amp;nbsp; to the fact that you can &lt;strong&gt;enhance and extend&lt;/strong&gt; Ignite UI controls with very &lt;strong&gt;little effort&lt;/strong&gt;!&lt;/p&gt; &lt;h1&gt;Play nice.. or I’ll make you!&lt;/h1&gt; &lt;p&gt;So let’s get on with the modifications. The Tree’s events will be our heroes of the day as many if not all major changes are represented with them. I have one very easy fix for maintaining proper selection UI with truly minor effort – as I said it’s all really a matter of picking the right time to hook your code. I figured it’s mildly pointless to update a second selection variable on each change, so instead I will check when a drag is starting if the node in question is selected. Then when the said node is dropped I would simply use the API method provided for selection. This will in essence go and set in the new path for the node:&lt;/p&gt; &lt;p&gt; &lt;div id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:7b016fcb-b36f-416d-a2b0-89982c66aa25" 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:#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; selectionDirty = &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;/div&gt; &lt;/div&gt; &lt;/div&gt;&lt;/p&gt; &lt;p&gt; &lt;div id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:f6f84add-5272-4ed4-8c46-642899b39d93" 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:300px;overflow:auto;"&gt; &lt;ol style="background:#ffffff;margin:0 0 0 2.5em;padding:0 0 0 5px;"&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;#tree&amp;#39;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000;"&gt;).igTree({&lt;/span&gt;&lt;/li&gt; &lt;li&gt;    &lt;span style="background:#ffffff;color:#000000;"&gt;dragAndDrop: &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;dragAndDropSettings: {&lt;/span&gt;&lt;/li&gt; &lt;li&gt;        &lt;span style="background:#ffffff;color:#000000;"&gt;dragAndDropMode: &lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515;"&gt;&amp;#39;default&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;dragStartDelay: 100,&lt;/span&gt;&lt;/li&gt; &lt;li&gt;        &lt;span style="background:#ffffff;color:#000000;"&gt;revert: &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;&lt;/span&gt;&lt;span style="background:#ffffff;color:#008000;"&gt;//simple icon-only tooltip &lt;/span&gt;&lt;/li&gt; &lt;li&gt;        &lt;span style="background:#ffffff;color:#000000;"&gt;invalidMoveToMarkup: &lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515;"&gt;&amp;#39;&amp;lt;div&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;p&amp;gt;&amp;amp;nbsp;&amp;lt;/p&amp;gt;&amp;lt;/div&amp;gt;&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;containment: $(&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515;"&gt;&amp;quot;#tree&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;dragStart: &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff;"&gt;function&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000;"&gt; (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:#008000;"&gt;// check if element is the one selected&lt;/span&gt;&lt;/li&gt; &lt;li&gt;        &lt;span style="background:#ffffff;color:#000000;"&gt;selectionDirty = $(&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515;"&gt;&amp;#39;#tree&amp;#39;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000;"&gt;).igTree(&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515;"&gt;&amp;#39;isSelected&amp;#39;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000;"&gt;, ui.element);&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;nodeDropped: &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff;"&gt;function&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000;"&gt;(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;if&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000;"&gt; (selectionDirty) {&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;//if it was selected, re-select when dropped in new place&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; newNode = $(&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515;"&gt;&amp;quot;#tree&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000;"&gt;).igTree(&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515;"&gt;&amp;quot;nodeByPath&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000;"&gt;, ui.path + &lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515;"&gt;&amp;#39;_&amp;#39;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000;"&gt; + ui.draggable.attr(&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515;"&gt;&amp;#39;data-path&amp;#39;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000;"&gt;).split(&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515;"&gt;&amp;#39;_&amp;#39;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000;"&gt;).pop());&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;#tree&amp;#39;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000;"&gt;).igTree(&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515;"&gt;&amp;#39;select&amp;#39;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000;"&gt;, newNode);&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;selectionDirty = &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;},&lt;/span&gt;&lt;/li&gt; &lt;li&gt;    &lt;span style="background:#ffffff;color:#000000;"&gt;dataSource: northwindCategories,&lt;/span&gt;&lt;/li&gt; &lt;li&gt;    &lt;span style="background:#ffffff;color:#000000;"&gt;bindings: {&lt;/span&gt;&lt;/li&gt; &lt;li&gt;        &lt;span style="background:#ffffff;color:#000000;"&gt;textKey: &lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515;"&gt;&amp;#39;CategoryName&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;primaryKey: &lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515;"&gt;&amp;#39;CategoryID&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;valueKey: &lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515;"&gt;&amp;#39;CategoryID&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;childDataProperty: &lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515;"&gt;&amp;#39;Products&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;bindings: {&lt;/span&gt;&lt;/li&gt; &lt;li&gt;            &lt;span style="background:#ffffff;color:#000000;"&gt;textKey: &lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515;"&gt;&amp;#39;ProductName&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;valueKey: &lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515;"&gt;&amp;#39;ProductID&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;primaryKey: &lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515;"&gt;&amp;#39;ProductID&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;/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 difference from what you have seen before as code for the tree are the dragStart and nodeDropped events. Because those come in line of the &lt;a title="jQuery UI Interactions" href="http://api.jqueryui.com/category/interactions/"&gt;jQuery UI Draggable &amp;amp; Droppable&lt;/a&gt; events and they can generally handle interaction between two trees, you won’t see the familiar ‘ui.owner‘ to access the tree as it’s kind of hard to tell which tree should be an owner really :) However, since I’m adding handlers separately that’s okay – I know which tree to call. Also, the tree is helpful enough to give nodes by paths – the latter you can get by combining the event provided path (the parent one) and the ID of the dropped element. The way this handles it right now should be suitable for deeper hierarchy that two as well.&lt;/p&gt; &lt;p&gt;Note: Remember you have the same event arguments as in jQuery UI in addition to the Tree adding some stuff (the element for example), but in the case of the drop the element is the actual target and the draggable from the original arguments is the node being dropped. The results:&lt;/p&gt; &lt;p&gt;&lt;img title="An (very low quality) animation to show the comparison between the default selection handling and the enhanced one." alt="An (very low quality) animation to show the comparison between the default selection handling and the enhanced one." src="http://media.infragistics.com/community/Release/12.2/jQuery/Tree-Drag-Drop/ignite-ui-tree-drag-drop-selection.gif" /&gt;&lt;/p&gt; &lt;p&gt;You can take a very similar approach with the checkboxes in bi-state mode Trees to complement that feature, however, the tri-state limitation I feel might be the right design (respecting the parent global state). Up to you really, the option is there.&lt;/p&gt; &lt;h3&gt;Load on Demand&lt;/h3&gt; &lt;p&gt;As I mentioned it’s nothing that complicated stopping this from being flawless, except the very nature of loading data on demand..it’s not there yet! And if the user doesn’t want to wait things go bad. One very simple way is to decrease the expand delay (time till nodes automatically expand when dragged over) to mere nothing. This might make it work just fine if the service you use is fast enough to get ahead of the unsuspecting user. However, go too low and you risk the user triggering a whole bunch of requests on the drag path and actually making the application slower rather than faster. The solution lies in not letting the user drop on non-populated node. However, that would mean that at some point the node would expand and drop would be possible, but the helper will still be showing invalid location. It’s not such a nice experience to make the user shake the node around to force a drag and re-evaluation of the drop target. If you want just the perfect experience, you can have it with one trick – move the mouse for the user! Yup, basically listen for when the node is populated, check if the user is on top of it, and trigger a mouse move so the validation will be re-done:&lt;/p&gt; &lt;p&gt; &lt;div id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:8f015cc3-6916-4e15-8f1d-59549962b0dc" 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:300px;overflow:auto;"&gt; &lt;ol style="background:#ffffff;margin:0 0 0 2em;padding:0 0 0 5px;"&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; stateHelper = { dropTarget: &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff;"&gt;null&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000;"&gt;, populatingNode: &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff;"&gt;null&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000;"&gt;, draggedNode: &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;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;div id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:e9a0182a-2ed0-48be-ae0d-b749d54a6136" 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:300px;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;#tree&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000;"&gt;).igTree({&lt;/span&gt;&lt;/li&gt; &lt;li&gt;     &lt;span style="background:#ffffff;color:#000000;"&gt;dragAndDrop: &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;parentNodeImageClass: &lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515;"&gt;&amp;quot;parent&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;dragAndDropSettings: {&lt;/span&gt;&lt;/li&gt; &lt;li&gt;         &lt;span style="background:#ffffff;color:#000000;"&gt;dragAndDropMode: &lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515;"&gt;&amp;quot;move&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;customDropValidation: &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff;"&gt;function&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000;"&gt; (element) {&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;// Validates the drop target:&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;// Nodes will properly cause targets to expand (and therefore load)&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;// But we must not allow actual drop before the data is loaded &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;// because we have nothing to add this node to.&lt;/span&gt;&lt;/li&gt; &lt;li&gt;             &lt;span style="background:#ffffff;color:#000000;"&gt;stateHelper.dropTarget = $(&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff;"&gt;this&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;stateHelper.draggedNode = $(element);&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; childNodes = stateHelper.dropTarget.closest(&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515;"&gt;&amp;#39;li[data-role=node]&amp;#39;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000;"&gt;).children(&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515;"&gt;&amp;#39;ul&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;span style="background:#ffffff;color:#0000ff;"&gt;if&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000;"&gt; (childNodes.length &amp;gt; 0 &amp;amp;&amp;amp; JSON.parse(childNodes.attr(&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515;"&gt;&amp;#39;data-populated&amp;#39;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000;"&gt;)) === &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;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff;"&gt;return&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000;"&gt; &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;}&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;return&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000;"&gt; &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;},&lt;/span&gt;&lt;/li&gt; &lt;li&gt;         &lt;span style="background:#ffffff;color:#000000;"&gt;expandDelay: 500&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;dragStop: &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff;"&gt;function&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000;"&gt;(evt, ui) {&lt;/span&gt;&lt;/li&gt; &lt;li&gt;         &lt;span style="background:#ffffff;color:#000000;"&gt;stateHelper.dropTarget = undefined;&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;nodePopulated: &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff;"&gt;function&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000;"&gt;(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;if&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000;"&gt; (stateHelper.dropTarget &amp;amp;&amp;amp; $.contains(ui.element, stateHelper.dropTarget)) {&lt;/span&gt;&lt;/li&gt; &lt;li&gt;             &lt;span style="background:#ffffff;color:#000000;"&gt;stateHelper.populatingNode = ui.element;&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;rendered: &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff;"&gt;function&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000;"&gt;(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;if&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000;"&gt; (stateHelper.populatingNode) {&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;// forse re-handling of the drag in case the user manages to &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;// shomehow keep his mouse steady when the node expands&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;// this will evaluate the target again&lt;/span&gt;&lt;/li&gt; &lt;li&gt;             &lt;span style="background:#ffffff;color:#000000;"&gt;stateHelper.populatingNode.children(&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515;"&gt;&amp;#39;a&amp;#39;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000;"&gt;).trigger({&lt;/span&gt;&lt;/li&gt; &lt;li&gt;                 &lt;span style="background:#ffffff;color:#000000;"&gt;type: &lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515;"&gt;&amp;#39;mousemove&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;pageX: stateHelper.draggedNode.data(&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515;"&gt;&amp;#39;draggable&amp;#39;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000;"&gt;).position.left,&lt;/span&gt;&lt;/li&gt; &lt;li&gt;                 &lt;span style="background:#ffffff;color:#000000;"&gt;pageY: stateHelper.draggedNode.data(&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515;"&gt;&amp;#39;draggable&amp;#39;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000;"&gt;).position.top&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;stateHelper.populatingNode = undefined;&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;dataSourceType: &lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515;"&gt;&amp;#39;remoteUrl&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;dataSource: &lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515;"&gt;&amp;#39;http://services.odata.org/OData/OData.svc/Categories?$format=json&amp;amp;$callback=?&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;responseDataKey: &lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515;"&gt;&amp;quot;d&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;loadOnDemand: &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;bindings: {&lt;/span&gt;&lt;/li&gt; &lt;li&gt;         &lt;span style="background:#ffffff;color:#000000;"&gt;textKey: &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;valueKey: &lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515;"&gt;&amp;#39;ID&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;primaryKey: &lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515;"&gt;&amp;#39;ID&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;childDataProperty: &lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515;"&gt;&amp;#39;Products&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;bindings: {&lt;/span&gt;&lt;/li&gt; &lt;li&gt;             &lt;span style="background:#ffffff;color:#000000;"&gt;textKey: &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;valueKey: &lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515;"&gt;&amp;#39;ID&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;primaryKey: &lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515;"&gt;&amp;#39;ID&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;childDataProperty: &lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515;"&gt;&amp;#39;Supplier&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;/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;As you can see the Tree is bound to the oData Northwind service making calls only when needed, we listen for populated nodes and save them in the ‘stateHelper’ to later trigger the mouse move on them when the UI has been rendered.&lt;/p&gt; &lt;p&gt;&lt;img title="A demonstation of how the experience can be improved with load on demand and Drag&amp;amp;Drop" alt="A demonstation of how the experience can be improved with load on demand and Drag&amp;amp;Drop" src="http://media.infragistics.com/community/Release/12.2/jQuery/Tree-Drag-Drop/drag-drop-load-on-demand.gif" /&gt;&lt;/p&gt; &lt;h3&gt;A word on the custom validation function&lt;/h3&gt; &lt;p&gt;The thing about this functions is that it will be overridden by the internal tree validation, which makes it the last last chance for you as a developer to return false and prevent a node drop on that target. What this also should tell you is that the internal validation will try to validate actual Ignite UI Tree as a target, so your function is not to enable something the feature won’t allow – no call will be made to it when the target is foreign. This begs the question, can you still use other targets? Yes, the drop events still fire on the drop targets! Take the &lt;a title="Simple File Manager - Ignite UI samples" href="http://www.infragistics.com/products/jquery/sample/tree/simple-file-manager" target="_blank"&gt;Simple File Manager&lt;/a&gt; as an example – the trick is in the usage of the droppable events instead!&lt;/p&gt; &lt;p&gt; And as you have already seen form above the context of the function is the droppable element and the parameter is the draggable.&lt;/p&gt; &lt;p&gt;Last but not least, if you are wondering how this JavaScript function is being used with the ASP.NET MVC wrappers, the MVC side property accepts a string with the function’s name. What that means is that such functions need to be discoverable on the global scope (on window really), so be careful where you define it:&lt;/p&gt; &lt;p&gt; &lt;div id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:8dcd4c16-8da9-423a-908c-0e534529eb9e" 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:300px;overflow:auto;"&gt; &lt;ol style="background:#ffffff;margin:0 0 0 2em;padding:0 0 0 5px;"&gt; &lt;li&gt;&lt;span style="background:#ffffff;color:#000000;"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#008000;"&gt;//rest is omitted&lt;/span&gt;&lt;/li&gt; &lt;li&gt;    &lt;span style="background:#ffffff;color:#000000;"&gt;}).DragAndDropSettings(d =&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;d.ExpandDelay(500);&lt;/span&gt;&lt;/li&gt; &lt;li&gt;        &lt;span style="background:#ffffff;color:#000000;"&gt;d.CustomDropValidation(&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515;"&gt;&amp;quot;customValidation&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;And then:&lt;/p&gt; &lt;h1&gt; &lt;div id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:f6d2fdd6-77fd-4f56-80c7-af2dddb81183" 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:300px;overflow:auto;"&gt; &lt;ol style="background:#ffffff;margin:0 0 0 2em;padding:0 0 0 5px;"&gt; &lt;li&gt;&lt;span style="background:#ffffff;color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#800000;"&gt;script&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff;"&gt;&amp;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; customValidation(element) {&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;// omitted&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:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="background:#ffffff;color:#800000;"&gt;script&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt;&lt;/h1&gt; &lt;h1&gt;Resources&lt;/h1&gt; &lt;p&gt;First let me again remind of the &lt;a title="igTree Overview - Ignite UI&amp;trade; Online Help ::  2012.2" href="http://help.infragistics.com/NetAdvantage/jQuery/2012.2/CLR4.0?page=igTree_Overview.html" target="_blank"&gt;elaborate Ignite UI Tree Documentation&lt;/a&gt; and &lt;a title="Ignite UI jQuery API Reference" href="http://help.infragistics.com/jQuery/2012.2/ui.igtree" target="_blank"&gt;jQuery API Reference&lt;/a&gt;. Then don’t forget the &lt;strong&gt;&lt;a title="Ignite UI Tree samples" href="http://www.infragistics.com/products/jquery/tree" target="_blank"&gt;awesome samples&lt;/a&gt;! &lt;/strong&gt;&lt;/p&gt; &lt;p&gt;This time I’ll add in the mix a &lt;a title="ASP.NET MVC demo project for the Ignite UI Tree&amp;#39;s Drag and Drop feature" href="http://media.infragistics.com/community/Release/12.2/jQuery/Tree-Drag-Drop/tree-drag-drop-tips.zip" target="_blank"&gt;solid ASP.NET MVC demo project&lt;/a&gt; ( with everything from here included in with both MVC helper and script-only demos, plus some basic stuff from the previous post). &lt;strong&gt;Make sure to check that one out, the animations above don’t do it justice!&lt;/strong&gt;&amp;nbsp; You would need at least a trial version of Ignite UI so hit the banner below if you are still lacking one.&lt;/p&gt; &lt;p&gt;Also you can go for fiddling with two demos on JSFiddle:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a title="Ignite Ui Tree: Basic settings and events + enhanced selection demo on JSFiddle" href="http://jsfiddle.net/damyanpetev/TZXP2/" target="_blank"&gt;Basic settings and events + enhanced selection demo&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a title="Ignite UI Tree: Modified Drag&amp;amp;Drop + Load On Demand behavior with Custom drop validation function on JSFiddle." href="http://jsfiddle.net/damyanpetev/uLxax/" target="_blank"&gt;Modified Drag&amp;amp;Drop + Load On Demand behavior with Custom drop validation function.&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;strong&gt;Stay tuned,&lt;/strong&gt; for there is still more awesome tricks I have for you – next time we’ll do some updating support!&lt;/p&gt; &lt;h1&gt;Summary&lt;/h1&gt; &lt;p&gt;This was the second part of the in-depth look at the Ignite UI Tree’s Drag and Drop feature. We covered some of the challenges such functionality presents and how you can overcome them. We improved the selection handling of moved nodes, we made the experience a true joy with Load on Demand. We also gave a little attention to the custom validation function – what is it for, what to expect and what you can do with it. At the end of this, I would like to remind you that this has been a proof of the concept that the controls are flexible enough to let you mold them to your needs with little code and great impact!&lt;/p&gt; &lt;p name="gotcha"&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;/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="That would be me!" href="https://twitter.com/DamyanPetev"&gt;&lt;em&gt;@DamyanPetev&lt;/em&gt;&lt;/a&gt;&lt;em&gt; and &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;</description></item><item><title>IgniteUI jQuery Grid Unbound Columns: Updating and Hierarchy</title><link>http://community.infragistics.com/blogs/damyan_petev/archive/2012/10/26/igniteui-jquery-grid-unbound-columns-updating-and-hierarchy.aspx</link><pubDate>Fri, 26 Oct 2012 23:01:00 GMT</pubDate><guid isPermaLink="false">7a8b7c76-b7ad-48e0-9694-5b04ca132ed0:379000</guid><dc:creator>dpetev</dc:creator><description>&lt;p&gt;&lt;a href="http://www.infragistics.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/damyan_5F00_petev.metablogapi/4810.igniteui_2D00_jquery_2D00_grid_2D00_unbound_2D00_columns_2D00_updating_2D00_hierarchy_5F00_095E0559.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;float:left;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="igniteui-jquery-grid-unbound-columns-updating-hierarchy" border="0" alt="igniteui-jquery-grid-unbound-columns-updating-hierarchy" align="left" src="http://www.infragistics.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/damyan_5F00_petev.metablogapi/3733.igniteui_2D00_jquery_2D00_grid_2D00_unbound_2D00_columns_2D00_updating_2D00_hierarchy_5F00_thumb_5F00_3606BF32.png" width="250" height="250" /&gt;&lt;/a&gt;Unbound Columns bring you the freedom of flexible layouts in the IgniteUI Grid and neat support for features to make your grid behave like nothing’s that different.&amp;nbsp; After you’ve seen some of the capabilities (&lt;a title="How to get started with jQuery Grid Unbound Columns" href="http://www.infragistics.com/community/blogs/damyan_petev/archive/2012/10/16/how-to-get-started-with-jquery-grid-unbound-columns.aspx" target="_blank"&gt;getting started blog&lt;/a&gt;) and inner workings(&lt;a title="jQuery Grid Unbound Column: How to make the most of it" href="http://www.infragistics.com/community/blogs/damyan_petev/archive/2012/10/16/jquery-grid-unbound-column-how-to-make-the-most-of-it.aspx" target="_blank"&gt;configure and make the most of it&lt;/a&gt;) it’s only natural to tackle some not too basic cases. We’ll throw in some editing action – in all fairness, something very basic as far as the user or desired end-result are concerned, however nothing simple in the eyes of the developer. Following that some curious scenarios when using the Hierarchical Grid with unbound columns. So let’s jump right on topic.&lt;/p&gt; &lt;h1 id="updating" name="updating"&gt;To Save or not to Save&lt;/h1&gt; &lt;h3 id="deserialization" name="deserialization"&gt;Custom Deserialization&lt;/h3&gt; &lt;p&gt;Adding &lt;a title="Ignite UI&amp;trade; Online Help - igGrid Updating" href="http://help.infragistics.com/NetAdvantage/jQuery/2012.2/CLR4.0?page=igGrid_Updating_LandingPage.html" target="_blank"&gt;Updating&lt;/a&gt; should be fairly straight-forward, but there’s a catch.. or rather a few. One thing you are extremely likely to face is handling updates to the server. The grid will behave as expected and kindly include unbound values in the transactions. For that reason, as we already mentioned. the client-side model that includes Unbound columns would not match the one the grid was bound to on the server. That means direct deserialization using the standard .NET serializators won&amp;#39;t go very well(more like at all) and the same goes for using the &lt;a title="Ignite UI&amp;trade; Online Help - MVC API" href="http://help.infragistics.com/NetAdvantage/jQuery/2012.2/CLR4.0?page=Infragistics.Web.Mvc~Infragistics.Web.Mvc.GridModel~LoadTransactions.html" target="_blank"&gt;Grid model&amp;#39;s LoadTransactions method&lt;/a&gt;(which is the same thing really). The most reasonable way to go about this is custom deserialization. Don’t let that fool you – it’s actually very easy with something like &lt;a title="Json.NET is a popular high-performance JSON framework for .NET" href="http://json.codeplex.com/" target="_blank"&gt;Json.NET&lt;/a&gt;. Plus, it even comes pre-packed with some (all?) new MVC4 templates anyway. It’s fast and, as far as my experience goes, it handles missing or extra values easily. Let’s have the following Grid configuration with AdventureWorks (&lt;a title="AdventureWorks Sample Databases (MSDN)" href="http://msdn.microsoft.com/en-us/library/ms124501(v=sql.100).aspx" target="_blank"&gt;&lt;img title="AdventureWorks Sample Databases (MSDN)" alt="AdventureWorks Sample Databases (MSDN)" src="http://users.infragistics.com/dpetev/external_link.PNG" /&gt;&lt;/a&gt;) Employees similar to so far used examples:&lt;/p&gt; &lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:51c053a8-918b-4ee4-855b-94ede26b6308" class="wlWriterEditableSmartContent"&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="color:#800000;"&gt;&amp;#39;#grid&amp;#39;&lt;/span&gt;).igGrid({&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;    updateUrl : &lt;span style="color:#800000;"&gt;&amp;#39;/Home/UpdateUrl&amp;#39;&lt;/span&gt;,&lt;/li&gt; &lt;li&gt;    localSchemaTransform : &lt;span style="color:#0000ff;"&gt;false&lt;/span&gt;,&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;    autoGenerateColumns : &lt;span style="color:#0000ff;"&gt;false&lt;/span&gt;,&lt;/li&gt; &lt;li&gt;    autoGenerateLayouts : &lt;span style="color:#0000ff;"&gt;false&lt;/span&gt;,        &lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;    primaryKey: &lt;span style="color:#800000;"&gt;&amp;quot;BusinessEntityID&amp;quot;&lt;/span&gt;,&lt;/li&gt; &lt;li&gt;    columns : [{&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;            key : &lt;span style="color:#800000;"&gt;&amp;#39;BusinessEntityID&amp;#39;&lt;/span&gt;,&lt;/li&gt; &lt;li&gt;            dataType : &lt;span style="color:#800000;"&gt;&amp;#39;number&amp;#39;&lt;/span&gt;,&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;            headerText : &lt;span style="color:#800000;"&gt;&amp;#39;B.E. Id&amp;#39;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;        }, {&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;            unbound : &lt;span style="color:#0000ff;"&gt;true&lt;/span&gt;,&lt;/li&gt; &lt;li&gt;            key : &lt;span style="color:#800000;"&gt;&amp;#39;name&amp;#39;&lt;/span&gt;,&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;            headerText : &lt;span style="color:#800000;"&gt;&amp;#39;Name&amp;#39;&lt;/span&gt;,&lt;/li&gt; &lt;li&gt;            dataType : &lt;span style="color:#800000;"&gt;&amp;#39;string&amp;#39;&lt;/span&gt;&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;        }, {&lt;/li&gt; &lt;li&gt;            key : &lt;span style="color:#800000;"&gt;&amp;#39;LoginID&amp;#39;&lt;/span&gt;,&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;            dataType : &lt;span style="color:#800000;"&gt;&amp;#39;string&amp;#39;&lt;/span&gt;,&lt;/li&gt; &lt;li&gt;            headerText : &lt;span style="color:#800000;"&gt;&amp;#39;Login Id&amp;#39;&lt;/span&gt;&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;        }, {&lt;/li&gt; &lt;li&gt;            key : &lt;span style="color:#800000;"&gt;&amp;#39;SickLeaveHours&amp;#39;&lt;/span&gt;,&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;            dataType : &lt;span style="color:#800000;"&gt;&amp;#39;number&amp;#39;&lt;/span&gt;,&lt;/li&gt; &lt;li&gt;            headerText : &lt;span style="color:#800000;"&gt;&amp;#39;Sick Leave Hours&amp;#39;&lt;/span&gt;&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;        }, {&lt;/li&gt; &lt;li&gt;            key : &lt;span style="color:#800000;"&gt;&amp;#39;VacationHours&amp;#39;&lt;/span&gt;,&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;            dataType : &lt;span style="color:#800000;"&gt;&amp;#39;number&amp;#39;&lt;/span&gt;,&lt;/li&gt; &lt;li&gt;            headerText : &lt;span style="color:#800000;"&gt;&amp;#39;Vacation Hours&amp;#39;&lt;/span&gt;&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;        }, {&lt;/li&gt; &lt;li&gt;            unbound : &lt;span style="color:#0000ff;"&gt;true&lt;/span&gt;,&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;            key : &lt;span style="color:#800000;"&gt;&amp;#39;total&amp;#39;&lt;/span&gt;,&lt;/li&gt; &lt;li&gt;            headerText : &lt;span style="color:#800000;"&gt;&amp;#39;Total&amp;#39;&lt;/span&gt;,&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;            dataType : &lt;span style="color:#800000;"&gt;&amp;#39;number&amp;#39;&lt;/span&gt;,&lt;/li&gt; &lt;li&gt;            formula : calcTotal,&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;            template : &lt;span style="color:#800000;"&gt;&amp;#39;&amp;lt;span {{if parseInt(${total})/100 &amp;gt; 1 }} class=&amp;#92;&amp;#39;red&amp;#92;&amp;#39; {{/if}}&amp;gt; ${total} / 100 &amp;lt;/span&amp;gt;&amp;#39;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;        }&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;    ],&lt;/li&gt; &lt;li&gt;    features : [{&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;            name : &lt;span style="color:#800000;"&gt;&amp;#39;Updating&amp;#39;&lt;/span&gt;,&lt;/li&gt; &lt;li&gt;            enableAddRow : &lt;span style="color:#0000ff;"&gt;false&lt;/span&gt;,&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;            columnSettings : [{&lt;/li&gt; &lt;li&gt;                    columnKey : &lt;span style="color:#800000;"&gt;&amp;#39;total&amp;#39;&lt;/span&gt;,&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;                    readOnly : &lt;span style="color:#0000ff;"&gt;true&lt;/span&gt;&lt;/li&gt; &lt;li&gt;                }, {&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;                    columnKey : &lt;span style="color:#800000;"&gt;&amp;#39;BusinessEntityID&amp;#39;&lt;/span&gt;,&lt;/li&gt; &lt;li&gt;                    readOnly : &lt;span style="color:#0000ff;"&gt;true&lt;/span&gt;&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;                }]&lt;/li&gt; &lt;li&gt;        }&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;    ],&lt;/li&gt; &lt;li&gt;    height : &lt;span style="color:#800000;"&gt;&amp;#39;600px&amp;#39;&lt;/span&gt;,&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;    dataSource : &lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background:#ffff00;color:#800000;"&gt;@&lt;/span&gt;Url.Action(&lt;span style="color:#a31515;"&gt;&amp;quot;HrcEmployees&amp;quot;&lt;/span&gt;)&lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt;,&lt;/li&gt; &lt;li&gt;    rendered: &lt;span style="color:#0000ff;"&gt;function&lt;/span&gt; (evt, ui){&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;        ui.owner.setUnboundValues(peopleNames , &lt;span style="color:#800000;"&gt;&amp;quot;name&amp;quot;&lt;/span&gt;);&lt;/li&gt; &lt;li&gt;    }&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;});&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;p&gt;Or the equivalent in ASP.NET MVC using the helper with chaining:&lt;/p&gt; &lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:61f81bb5-9916-432e-a918-7331254b2c3d" class="wlWriterEditableSmartContent"&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:#ffff00;"&gt;@(&lt;/span&gt;Html.Infragistics().Grid(Model).AutoGenerateColumns(&lt;span style="color:#0000ff;"&gt;false&lt;/span&gt;).AutoGenerateLayouts(&lt;span style="color:#0000ff;"&gt;true&lt;/span&gt;)&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;    .PrimaryKey(&lt;span style="color:#a31515;"&gt;&amp;quot;BusinessEntityID&amp;quot;&lt;/span&gt;)&lt;/li&gt; &lt;li&gt;    .Columns(column =&amp;gt;&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;    {&lt;/li&gt; &lt;li&gt;        column.For(x =&amp;gt; x.BusinessEntityID).HeaderText(&lt;span style="color:#a31515;"&gt;&amp;quot;B.E. Id&amp;quot;&lt;/span&gt;).DataType(&lt;span style="color:#a31515;"&gt;&amp;quot;number&amp;quot;&lt;/span&gt;);&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;        column.Unbound(&lt;span style="color:#a31515;"&gt;&amp;quot;name&amp;quot;&lt;/span&gt;).HeaderText(&lt;span style="color:#a31515;"&gt;&amp;quot;Name&amp;quot;&lt;/span&gt;).DataType(&lt;span style="color:#a31515;"&gt;&amp;quot;string&amp;quot;&lt;/span&gt;);&lt;/li&gt; &lt;li&gt;        column.For(x =&amp;gt; x.LoginID).HeaderText(&lt;span style="color:#a31515;"&gt;&amp;quot;Login Id&amp;quot;&lt;/span&gt;).DataType(&lt;span style="color:#a31515;"&gt;&amp;quot;string&amp;quot;&lt;/span&gt;);&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;        column.For(x =&amp;gt; x.SickLeaveHours).HeaderText(&lt;span style="color:#a31515;"&gt;&amp;quot;Sick Leave Hours&amp;quot;&lt;/span&gt;).DataType(&lt;span style="color:#a31515;"&gt;&amp;quot;number&amp;quot;&lt;/span&gt;);&lt;/li&gt; &lt;li&gt;        column.For(x =&amp;gt; x.VacationHours).HeaderText(&lt;span style="color:#a31515;"&gt;&amp;quot;Vacation Hours&amp;quot;&lt;/span&gt;).DataType(&lt;span style="color:#a31515;"&gt;&amp;quot;number&amp;quot;&lt;/span&gt;);&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;        column.Unbound(&lt;span style="color:#a31515;"&gt;&amp;quot;total&amp;quot;&lt;/span&gt;).HeaderText(&lt;span style="color:#a31515;"&gt;&amp;quot;Total&amp;quot;&lt;/span&gt;).DataType(&lt;span style="color:#a31515;"&gt;&amp;quot;number&amp;quot;&lt;/span&gt;)&lt;/li&gt; &lt;li&gt;            .Formula(&lt;span style="color:#a31515;"&gt;&amp;quot;calcTotal&amp;quot;&lt;/span&gt;).Template(&lt;span style="color:#a31515;"&gt;&amp;quot;&amp;lt;span {{if parseInt(${total})/100 &amp;gt; 1 }} class=&amp;#39;red&amp;#39; {{/if}}&amp;gt; ${total} / 100 &amp;lt;/span&amp;gt;&amp;quot;&lt;/span&gt;);&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;    })&lt;/li&gt; &lt;li&gt;    .Height(&lt;span style="color:#a31515;"&gt;&amp;quot;600px&amp;quot;&lt;/span&gt;)&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;    .Features(feature =&amp;gt; &lt;/li&gt; &lt;li&gt;        {&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;            feature.Updating().EnableAddRow(&lt;span style="color:#0000ff;"&gt;false&lt;/span&gt;).ColumnSettings(colSetting =&amp;gt;&lt;/li&gt; &lt;li&gt;            {&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;                colSetting.ColumnSetting().ColumnKey(&lt;span style="color:#a31515;"&gt;&amp;quot;total&amp;quot;&lt;/span&gt;).ReadOnly(&lt;span style="color:#0000ff;"&gt;true&lt;/span&gt;);&lt;/li&gt; &lt;li&gt;                colSetting.ColumnSetting().ColumnKey(&lt;span style="color:#a31515;"&gt;&amp;quot;BusinessEntityID&amp;quot;&lt;/span&gt;).ReadOnly(&lt;span style="color:#0000ff;"&gt;true&lt;/span&gt;);&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;            }).EditMode(&lt;span style="color:#2b91af;"&gt;GridEditMode&lt;/span&gt;.Row);&lt;/li&gt; &lt;li&gt;        })&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;    .UpdateUrl(Url.Action(&lt;span style="color:#a31515;"&gt;&amp;quot;UpdateUrl&amp;quot;&lt;/span&gt;))&lt;/li&gt; &lt;li&gt;    .SetUnboundValues(&lt;span style="color:#a31515;"&gt;&amp;quot;name&amp;quot;&lt;/span&gt;, (ViewBag.people &lt;span style="color:#0000ff;"&gt;as&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color:#0000ff;"&gt;string&lt;/span&gt;&amp;gt;).Cast&amp;lt;&lt;span style="color:#0000ff;"&gt;object&lt;/span&gt;&amp;gt;().ToList())&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;    .DataBind()&lt;/li&gt; &lt;li&gt;    .Render()&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;&lt;span style="background:#ffff00;"&gt;)&lt;/span&gt;&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;p&gt;As you can see the ID is not editable for obvious reasons and so is the formula field. What you would get from the grid as a transaction would contain all of the above properties. One approach would be to take advantage of the flexibility of Json.Net and go about it as you normally would:&lt;/p&gt; &lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:74805add-9aa7-4a2b-9eb1-caf4d694e216" class="wlWriterEditableSmartContent"&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:#fff;max-height:300px;overflow:auto;"&gt; &lt;ol style="background:#ffffff;margin:0;padding:0 0 0 5px;"&gt; &lt;li&gt;&lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; transactions = &lt;span style="color:#2b91af;"&gt;JsonConvert&lt;/span&gt;.DeserializeObject&amp;lt;&lt;span style="color:#2b91af;"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color:#2b91af;"&gt;Transaction&lt;/span&gt;&amp;lt;&lt;span style="color:#2b91af;"&gt;EmployeeDTO&lt;/span&gt;&amp;gt;&amp;gt;&amp;gt;(Request.Form[&lt;span style="color:#a31515;"&gt;&amp;quot;ig_transactions&amp;quot;&lt;/span&gt;]);&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;p&gt;Form there on it is identical to what you can find in the &lt;a title="Ignite UI&amp;trade; Online Help : igGrid Updating" href="http://help.infragistics.com/NetAdvantage/jQuery/2012.2/CLR4.0?page=igGrid_Updating.html" target="_blank"&gt;documentation on Batch Updating&lt;/a&gt;. Another take would be to go for LINQ to JSON instead and deserialize to JObject:&lt;/p&gt; &lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:7b1c9936-2911-4a73-8219-6b7c145b3208" class="wlWriterEditableSmartContent"&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:#fff;max-height:300px;overflow:auto;"&gt; &lt;ol style="background:#ffffff;margin:0;padding:0 0 0 5px;"&gt; &lt;li&gt;&lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; transactions = &lt;span style="color:#2b91af;"&gt;JsonConvert&lt;/span&gt;.DeserializeObject&amp;lt;&lt;span style="color:#2b91af;"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color:#2b91af;"&gt;Transaction&lt;/span&gt;&amp;lt;&lt;span style="color:#2b91af;"&gt;JObject&lt;/span&gt;&amp;gt;&amp;gt;&amp;gt;(Request.Form[&lt;span style="color:#a31515;"&gt;&amp;quot;ig_transactions&amp;quot;&lt;/span&gt;]);&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;p&gt;An advantage you get is that if you like me don’t have the whole model displayed in the grid and therefore the transactions don’t contain quite the whole records and assigning it blindly will just put nulls in the ones I’m missing. Besides picking separate properties from the record this approach is also the easiest way to access unbound values if you need them:&lt;/p&gt; &lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:cf69ac62-ac1f-429b-a141-39c74f7cb5e0" class="wlWriterEditableSmartContent"&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="color:#2b91af;"&gt;AdventureWorksEntities&lt;/span&gt; context = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;AdventureWorksEntities&lt;/span&gt;();&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;&lt;span style="color:#0000ff;"&gt;foreach&lt;/span&gt; (&lt;span style="color:#2b91af;"&gt;Transaction&lt;/span&gt;&amp;lt;&lt;span style="color:#2b91af;"&gt;JObject&lt;/span&gt;&amp;gt; transaction &lt;span style="color:#0000ff;"&gt;in&lt;/span&gt; transactions)&lt;/li&gt; &lt;li&gt;{&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;    &lt;span style="color:#0000ff;"&gt;int&lt;/span&gt; id = (&lt;span style="color:#0000ff;"&gt;int&lt;/span&gt;)transaction.row[&lt;span style="color:#a31515;"&gt;&amp;quot;BusinessEntityID&amp;quot;&lt;/span&gt;];&lt;/li&gt; &lt;li&gt;    &lt;span style="color:#008000;"&gt;// take id in advance as accessing it is not a canonical method and then find the data records &lt;/span&gt;&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;    &lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; employee = context.Employees.Where(x =&amp;gt; x.BusinessEntityID == id).Single();&lt;/li&gt; &lt;li&gt;    &lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; person = context.People.Where(x =&amp;gt; x.BusinessEntityID == id).Single();&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;    &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (transaction.type == &lt;span style="color:#a31515;"&gt;&amp;quot;row&amp;quot;&lt;/span&gt;) &lt;span style="color:#008000;"&gt;//edit!&lt;/span&gt;&lt;/li&gt; &lt;li&gt;    {&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;        employee.VacationHours = (&lt;span style="color:#0000ff;"&gt;short&lt;/span&gt;)transaction.row[&lt;span style="color:#a31515;"&gt;&amp;quot;VacationHours&amp;quot;&lt;/span&gt;];&lt;/li&gt; &lt;li&gt;        employee.SickLeaveHours = (&lt;span style="color:#0000ff;"&gt;short&lt;/span&gt;)transaction.row[&lt;span style="color:#a31515;"&gt;&amp;quot;SickLeaveHours&amp;quot;&lt;/span&gt;];&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;        employee.LoginID = (&lt;span style="color:#0000ff;"&gt;string&lt;/span&gt;)transaction.row[&lt;span style="color:#a31515;"&gt;&amp;quot;LoginID&amp;quot;&lt;/span&gt;];&lt;/li&gt; &lt;li&gt;        person.FirstName = transaction.row[&lt;span style="color:#a31515;"&gt;&amp;quot;name&amp;quot;&lt;/span&gt;].ToString().Split(&lt;span style="color:#a31515;"&gt;&amp;#39; &amp;#39;&lt;/span&gt;).First();&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;        person.LastName = transaction.row[&lt;span style="color:#a31515;"&gt;&amp;quot;name&amp;quot;&lt;/span&gt;].ToString().Split(&lt;span style="color:#a31515;"&gt;&amp;#39; &amp;#39;&lt;/span&gt;).Last();&lt;/li&gt; &lt;li&gt;    }&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;    &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (transaction.type == &lt;span style="color:#a31515;"&gt;&amp;quot;delete&amp;quot;&lt;/span&gt;) &lt;span style="color:#008000;"&gt;//delete!&lt;/span&gt;&lt;/li&gt; &lt;li&gt;    {&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;        context.Employees.DeleteObject(employee);&lt;/li&gt; &lt;li&gt;    }&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;}&lt;/li&gt; &lt;li&gt;context.SaveChanges();&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;h3 id="set-unbound-value-transaction" name="set-unbound-value-transaction"&gt;“My Unbound values don’t reach the server”&lt;/h3&gt; &lt;p&gt;So you use the client-side ‘setUnboundValues()’ method like you are supposed to and attempt to save the changes with the method above but they never appear to persist. What gives? Well, for starters “you are supposed to” in the last sentence is truly wrong – the method does set values but since it’s designed to work without updating on the grid, the changes it makes are “client-side only” type and are completely unrelated with Updating and transactions. That means that you are setting a value but it is never sent to the server or persisted in other way. So to achieve the desired result you should turn to the &lt;a title="IgniteUI API reference - Grid Updating" href="http://help.infragistics.com/jQuery/2012.2/ui.iggridupdating#methods" target="_blank"&gt;Updating API&lt;/a&gt; instead and &lt;strong&gt;use either ‘setCellValue’ or ‘updateRow’&lt;/strong&gt;. Yes, they work work with Unbound columns! Frankly, the methods have very subtle differences with&amp;nbsp; the main one being the type of transaction they generate and I usually pick the one that matches the edit mode:&lt;/p&gt; &lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:a463e45c-e914-4973-9027-6611fe7269bf" class="wlWriterEditableSmartContent"&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:300px;overflow:auto;"&gt; &lt;ol style="background:#ffffff;margin:0 0 0 2em;padding:0 0 0 5px;"&gt; &lt;li&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;button&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;onclick&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;$(&amp;#39;#grid&amp;#39;).data(&amp;#39;igGridUpdating&amp;#39;).setCellValue(2, &amp;#39;name&amp;#39;, &amp;#39;John Doe&amp;#39;)&amp;quot;&amp;gt;&lt;/span&gt; Update names [cell]&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;button&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;button&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;onclick&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;$(&amp;#39;#grid&amp;#39;).data(&amp;#39;igGridUpdating&amp;#39;).updateRow(2, { name : &amp;#39;John Doe&amp;#39;})&amp;quot;&amp;gt;&lt;/span&gt; Update names [row]&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;button&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;p&gt;There basically produce the same result with different type of transaction. In the demo and the JFiddle versions linked below I’ve put up a simple demonstration of this with a log you can use to list the current transactions on the grid in order to see that there are indeed none after a ‘setUnboundValues()’ call but the Updating methods behave as expected.&lt;/p&gt; &lt;h3 id="formula" name="formula"&gt;Formula Trouble&lt;/h3&gt; &lt;p&gt;So you save&amp;nbsp; your changes and everything obviously goes well with the server, but ..&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.infragistics.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/damyan_5F00_petev.metablogapi/2744.igniteui_2D00_jquery_2D00_grid_2D00_unbound_2D00_columns_2D00_updating_2D00_formula_5F00_3C4D95C0.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="igniteui-jquery-grid-unbound-columns-updating-formula" border="0" alt="igniteui-jquery-grid-unbound-columns-updating-formula" src="http://www.infragistics.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/damyan_5F00_petev.metablogapi/3821.igniteui_2D00_jquery_2D00_grid_2D00_unbound_2D00_columns_2D00_updating_2D00_formula_5F00_thumb_5F00_6DD90355.png" width="472" height="126" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Find something wrong? This is a row in which I’ve edited the Vacation hours value, however the total value calculated from a formula stays the same and moreover, it’s the same after the actual submit of transaction to the server passes too. Because of the type of functionality formula property – it is neither a template nor a formatting function, it’s supposed to provide the initial value. Therefore, it’s called on binding and from there on the grid has data to work with as if it is part of the data source and formula is no longer needed. But hey, I want my value correct and I don’t feel like reloading the page for sure. So how do you get this to work? Consider this, the &lt;a title="IgniteUI jQuery API reference" href="http://help.infragistics.com/jQuery/2012.2/ui.iggrid#methods" target="_blank"&gt;save changes method&lt;/a&gt; does not offer a callback and in case you are wondering neither does the original in the igDataSource. But it does say AJAX and it should have a callback, right? And it does, lets just say it’s well hidden. It’s called a success handler and the grid maintains an array of them to call when it handles the AJAX success (only!). Also the problem is I want to refresh my view in order to update the formula calculations. However, simply calling ‘dataBind()’ on the data source won’t do in my case as I have additional unbound values(the names) that are still the same and they won’t update until a refresh of the page. Plus, it&amp;#39;s a lot of overhead I don&amp;#39;t really need(goodness forbid using the grid&amp;#39;s data bind method that does a whole lot more work even). Thankfully you have grid operations that cause a re-bind such as paging and sorting without messing with the actual data in the source. What if we could use that? Well we can! A slight hack if you will would be to trick the grid into changing page without actually changing it which would essentially be a page re-fresh. This can be done using the ‘&lt;a title="IgniteUI jQuery API reference for the igDataSOurce methods" href="http://help.infragistics.com/jQuery/2012.2/ig.datasource#methods" target="_blank"&gt;pageIndex()&lt;/a&gt;’ data source method you&amp;#39;d normally use to programmatically change page or get current index:&lt;/p&gt; &lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:460c3b23-6115-49eb-85c8-b581980a0eea" class="wlWriterEditableSmartContent"&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:300px;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="color:#800000;"&gt;&amp;quot;#grid&amp;quot;&lt;/span&gt;).live(&lt;span style="color:#800000;"&gt;&amp;quot;iggridrendered&amp;quot;&lt;/span&gt;, &lt;span style="color:#0000ff;"&gt;function&lt;/span&gt; (event, ui) {&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;    &lt;span style="color:#006400;"&gt;//rendered event only fired once so add success update handler here&lt;/span&gt;&lt;/li&gt; &lt;li&gt;    ui.owner.dataSource._addChangesSuccessHandler(updateSuccess);&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;});&lt;/li&gt; &lt;li&gt;&lt;span style="color:#0000ff;"&gt;function&lt;/span&gt; updateSuccess(data, textStatus, jqXHR) {&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;    &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (data.Success === &lt;span style="color:#0000ff;"&gt;true&lt;/span&gt; &amp;amp;&amp;amp; textStatus == &lt;span style="color:#800000;"&gt;&amp;quot;success&amp;quot;&lt;/span&gt;) {&lt;/li&gt; &lt;li&gt;        &lt;span style="color:#006400;"&gt;//&amp;#39;re-bind&amp;#39; to force formula calculation with new verified values.&lt;/span&gt;&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;        &lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; gridDS = $(&lt;span style="color:#800000;"&gt;&amp;quot;#grid&amp;quot;&lt;/span&gt;).data(&lt;span style="color:#800000;"&gt;&amp;quot;igGrid&amp;quot;&lt;/span&gt;).dataSource;&lt;/li&gt; &lt;li&gt;        gridDS.pageIndex(gridDS.pageIndex());&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;    }&lt;/li&gt; &lt;li&gt;}&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;p&gt;This registers your own handler that gets the very same parameters as a normal AXAJ callback (and this can be useful in many other scenarios!) and in it we access the grid’s data source now that we know that the save has gone through and do our little refresh inception-style. It’s not perfect, but it kind of works; another very plausible solution would be to just go ahead and set the right value.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;NOTE&lt;/strong&gt;: Keep in mind that if you use template to display value in unbound column that is built with values from other columns it will update once they change. There’s a demo available for that in both MVC and JFiddle below.&lt;/p&gt; &lt;h1 id="hierarchical-grid-unbound-column" name="hierarchical-grid-unbound-column"&gt;Hierarchical Grid with Unbound Columns&lt;/h1&gt; &lt;p&gt;Now here’s another good one. By design the &lt;a title="Ignite UI&amp;trade; Online Help - igHierarchicalGrid Overview" href="http://help.infragistics.com/NetAdvantage/jQuery/2012.2/CLR4.0?page=igHierarchicalGrid_Overview.html" target="_blank"&gt;hierarchical grid uses flat igGrids&lt;/a&gt; and for that reason we consider most of the functionality&amp;nbsp; to be shared and used in the same way with the same results. However, there are a few logical, yet important differences to consider when using hierarchy with Unbound Columns.&lt;/p&gt; &lt;h3 id="set-unbound-value-child-layout" name="set-unbound-value-child-layout"&gt;Setting values and child column layouts&lt;/h3&gt; &lt;p&gt;Of course, &lt;a title="Adding data for the unbound columns" href="http://www.infragistics.com/community/blogs/damyan_petev/archive/2012/10/16/how-to-get-started-with-jquery-grid-unbound-columns.aspx#unbound-data" target="_blank"&gt;all the methods&lt;/a&gt; to do that are still available, but consider this – you now have not just one grid, but rather a whole bunch of them. Using the ‘unboundValues’ is mostly logical as they are tied to their column definitions. But when you decide to set some unbound values on the client but nothing happens? For reference here’s how the grid definition looks:&lt;/p&gt; &lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:95cc2ae2-3093-4eba-a370-0926cb95656f" class="wlWriterEditableSmartContent"&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="color:#800000;"&gt;&amp;#39;#grid&amp;#39;&lt;/span&gt;).igHierarchicalGrid({&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;    dataSource: &lt;span style="background:#ffff00;"&gt;@&lt;/span&gt;Html.Raw(&lt;span style="color:#2b91af;"&gt;Json&lt;/span&gt;.Encode(Model)),&lt;/li&gt; &lt;li&gt;    dataSourceType: &lt;span style="color:#800000;"&gt;&amp;#39;json&amp;#39;&lt;/span&gt;,&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;    autoGenerateColumns: &lt;span style="color:#0000ff;"&gt;false&lt;/span&gt;,&lt;/li&gt; &lt;li&gt;    autoGenerateLayouts: &lt;span style="color:#0000ff;"&gt;false&lt;/span&gt;,&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;    columns: [{&lt;/li&gt; &lt;li&gt;        key: &lt;span style="color:#800000;"&gt;&amp;#39;DepartmentID&amp;#39;&lt;/span&gt;,&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;        headerText: &lt;span style="color:#800000;"&gt;&amp;#39;DEP Id&amp;#39;&lt;/span&gt;,&lt;/li&gt; &lt;li&gt;        dataType: &lt;span style="color:#800000;"&gt;&amp;#39;number&amp;#39;&lt;/span&gt;&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;    }, {&lt;/li&gt; &lt;li&gt;        key: &lt;span style="color:#800000;"&gt;&amp;#39;Name&amp;#39;&lt;/span&gt;,&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;        headerText: &lt;span style="color:#800000;"&gt;&amp;#39;Name&amp;#39;&lt;/span&gt;,&lt;/li&gt; &lt;li&gt;        dataType: &lt;span style="color:#800000;"&gt;&amp;#39;string&amp;#39;&lt;/span&gt;&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;    }, {&lt;/li&gt; &lt;li&gt;        key: &lt;span style="color:#800000;"&gt;&amp;#39;GroupName&amp;#39;&lt;/span&gt;,&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;        headerText: &lt;span style="color:#800000;"&gt;&amp;#39;Group Name&amp;#39;&lt;/span&gt;,&lt;/li&gt; &lt;li&gt;        dataType: &lt;span style="color:#800000;"&gt;&amp;#39;string&amp;#39;&lt;/span&gt;&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;    }, {&lt;/li&gt; &lt;li&gt;        key: &lt;span style="color:#800000;"&gt;&amp;#39;ModifiedDate&amp;#39;&lt;/span&gt;,&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;        headerText: &lt;span style="color:#800000;"&gt;&amp;#39;Modified Date&amp;#39;&lt;/span&gt;,&lt;/li&gt; &lt;li&gt;        dataType: &lt;span style="color:#800000;"&gt;&amp;#39;date&amp;#39;&lt;/span&gt;&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;    }, {&lt;/li&gt; &lt;li&gt;        unbound: &lt;span style="color:#0000ff;"&gt;true&lt;/span&gt;,&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;        key: &lt;span style="color:#800000;"&gt;&amp;#39;employees&amp;#39;&lt;/span&gt;,&lt;/li&gt; &lt;li&gt;        headerText: &lt;span style="color:#800000;"&gt;&amp;#39;Employees&amp;#39;&lt;/span&gt;,&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;        dataType: &lt;span style="color:#800000;"&gt;&amp;#39;number&amp;#39;&lt;/span&gt;,&lt;/li&gt; &lt;li&gt;        unboundValues: [7, 3, 18, 9, 12, 4, 180, 5, 6]&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;    }&lt;/li&gt; &lt;li&gt;],&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;    columnLayouts: [{&lt;/li&gt; &lt;li&gt;        autoGenerateColumns: &lt;span style="color:#0000ff;"&gt;false&lt;/span&gt;,&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;        autoGenerateLayouts: &lt;span style="color:#0000ff;"&gt;false&lt;/span&gt;,&lt;/li&gt; &lt;li&gt;        mergeUnboundColumns: &lt;span style="color:#0000ff;"&gt;true&lt;/span&gt;,&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;        columns: [{&lt;/li&gt; &lt;li&gt;            key: &lt;span style="color:#800000;"&gt;&amp;#39;BusinessEntityID&amp;#39;&lt;/span&gt;,&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;            headerText: &lt;span style="color:#800000;"&gt;&amp;#39;B.E. Id&amp;#39;&lt;/span&gt;,&lt;/li&gt; &lt;li&gt;            dataType: &lt;span style="color:#800000;"&gt;&amp;#39;number&amp;#39;&lt;/span&gt;&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;        }, {&lt;/li&gt; &lt;li&gt;            key: &lt;span style="color:#800000;"&gt;&amp;#39;DepartmentID&amp;#39;&lt;/span&gt;,&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;            headerText: &lt;span style="color:#800000;"&gt;&amp;#39;Dep id&amp;#39;&lt;/span&gt;,&lt;/li&gt; &lt;li&gt;            dataType: &lt;span style="color:#800000;"&gt;&amp;#39;number&amp;#39;&lt;/span&gt;,&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;            hidden: &lt;span style="color:#0000ff;"&gt;true&lt;/span&gt;&lt;/li&gt; &lt;li&gt;        }, {&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;            unbound: &lt;span style="color:#0000ff;"&gt;true&lt;/span&gt;,&lt;/li&gt; &lt;li&gt;            key: &lt;span style="color:#800000;"&gt;&amp;#39;name&amp;#39;&lt;/span&gt;,&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;            headerText: &lt;span style="color:#800000;"&gt;&amp;#39;name&amp;#39;&lt;/span&gt;,&lt;/li&gt; &lt;li&gt;            dataType: &lt;span style="color:#800000;"&gt;&amp;#39;string&amp;#39;&lt;/span&gt;&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;        }, {&lt;/li&gt; &lt;li&gt;            key: &lt;span style="color:#800000;"&gt;&amp;#39;VacationHours&amp;#39;&lt;/span&gt;,&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;            headerText: &lt;span style="color:#800000;"&gt;&amp;#39;Vacation Hours&amp;#39;&lt;/span&gt;,&lt;/li&gt; &lt;li&gt;            dataType: &lt;span style="color:#800000;"&gt;&amp;#39;number&amp;#39;&lt;/span&gt;&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;        }, {&lt;/li&gt; &lt;li&gt;            key: &lt;span style="color:#800000;"&gt;&amp;#39;SickLeaveHours&amp;#39;&lt;/span&gt;,&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;            headerText: &lt;span style="color:#800000;"&gt;&amp;#39;Sick Leave Hours&amp;#39;&lt;/span&gt;,&lt;/li&gt; &lt;li&gt;            dataType: &lt;span style="color:#800000;"&gt;&amp;#39;number&amp;#39;&lt;/span&gt;&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;        }, {&lt;/li&gt; &lt;li&gt;            unbound: &lt;span style="color:#0000ff;"&gt;true&lt;/span&gt;,&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;            key: &lt;span style="color:#800000;"&gt;&amp;#39;counter&amp;#39;&lt;/span&gt;,&lt;/li&gt; &lt;li&gt;            headerText: &lt;span style="color:#800000;"&gt;&amp;#39;Counter&amp;#39;&lt;/span&gt;,&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;            dataType: &lt;span style="color:#800000;"&gt;&amp;#39;number&amp;#39;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;        }&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;        ],&lt;/li&gt; &lt;li&gt;        key: &lt;span style="color:#800000;"&gt;&amp;#39;Employees&amp;#39;&lt;/span&gt;,&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;        primaryKey: &lt;span style="color:#800000;"&gt;&amp;#39;BusinessEntityID&amp;#39;&lt;/span&gt;,&lt;/li&gt; &lt;li&gt;        foreignKey: &lt;span style="color:#800000;"&gt;&amp;#39;DepartmentID&amp;#39;&lt;/span&gt;&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;    }&lt;/li&gt; &lt;li&gt;],&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;    height: &lt;span style="color:#800000;"&gt;&amp;#39;500px&amp;#39;&lt;/span&gt;,&lt;/li&gt; &lt;li&gt;    autoCommit: &lt;span style="color:#0000ff;"&gt;false&lt;/span&gt;,&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;    primaryKey: &lt;span style="color:#800000;"&gt;&amp;#39;DepartmentID&amp;#39;&lt;/span&gt;,&lt;/li&gt; &lt;li&gt;    localSchemaTransform: &lt;span style="color:#0000ff;"&gt;true&lt;/span&gt;&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;});&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;p&gt;&lt;a href="http://www.infragistics.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/damyan_5F00_petev.metablogapi/2742.igniteui_2D00_jquery_2D00_hierarchical_2D00_grid_2D00_unbound_2D00_columns_5F00_7B3F165B.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="igniteui-jquery-hierarchical-grid-unbound-columns" border="0" alt="igniteui-jquery-hierarchical-grid-unbound-columns" src="http://www.infragistics.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/damyan_5F00_petev.metablogapi/8623.igniteui_2D00_jquery_2D00_hierarchical_2D00_grid_2D00_unbound_2D00_columns_5F00_thumb_5F00_6C283781.png" width="650" height="311" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;And to sill some of the missing values you attempt calling something like:&lt;/p&gt; &lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:89b8dc01-3f64-4f8f-9ad3-f8722d5e5d1a" class="wlWriterEditableSmartContent"&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:#fff;max-height:300px;overflow:auto;"&gt; &lt;ol style="background:#ffffff;margin:0;padding:0 0 0 5px;"&gt; &lt;li&gt;$(&lt;span style="color:#800000;"&gt;&amp;#39;#grid&amp;#39;&lt;/span&gt;).igHierarchicalGrid(&lt;span style="color:#800000;"&gt;&amp;#39;setUnboundValues&amp;#39;&lt;/span&gt;, [ 52, 522, 368, 42635], &lt;span style="color:#800000;"&gt;&amp;#39;counter&amp;#39;&lt;/span&gt;);&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;p&gt;However nothing happens. If you had attempted the same with say ‘employees’ it would’ve. That is because as we explained there are multiple grids here and &lt;strong&gt;set value methods are to be called for the respective layout.&lt;/strong&gt; So in order to add values to the child layout you need to access it first. The hierarchical grid provides a method to do that:&lt;/p&gt; &lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:eb99331f-741d-45d9-8056-fc7b3c4f77e0" class="wlWriterEditableSmartContent"&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:300px;overflow:auto;"&gt; &lt;ol style="background:#ffffff;margin:0 0 0 2em;padding:0 0 0 5px;"&gt; &lt;li&gt;$.each($(&lt;span style="color:#800000;"&gt;&amp;#39;#grid&amp;#39;&lt;/span&gt;).data(&lt;span style="color:#800000;"&gt;&amp;#39;igHierarchicalGrid&amp;#39;&lt;/span&gt;).allChildrenWidgets(), &lt;span style="color:#0000ff;"&gt;function&lt;/span&gt; (i, grid) {&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;    grid.setUnboundValues([12.2, 12.2, 12.2, 12.2], &lt;span style="color:#800000;"&gt;&amp;#39;counter&amp;#39;&lt;/span&gt;);&lt;/li&gt; &lt;li&gt;});&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;p&gt;You could pick one, but above I’m targeting all available child grids and setting values and there’s a good reason. To be able to target specific layout you need to be aware it is there – the Hierarchical grid creates the child grids only when expanding for performance reasons, therefore you cannot set values to something that doesn’t exist yet. Furthermore, unless you provide you unbound values in advance ( set them on the column property or merge them on the server) even after calling the above, newly expanded(created) layouts will still be with empty unbound columns. My best advice is to assign even temporary initial values to spare the user the sight of empty columns and/or handle a &lt;a title="IgniteUI API reference - igHierarchicalGrid events" href="http://help.infragistics.com/jQuery/2012.2/ui.ighierarchicalgrid#events" target="_blank"&gt;suitable event such as &amp;#39;childGridCreated&amp;#39;&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;ASP.NET MVC&lt;/p&gt; &lt;p&gt;MVC offers some additional challenges such as the relevant &lt;a title="Merge Unbound Columns property" href="http://www.infragistics.com/community/blogs/damyan_petev/archive/2012/10/16/jquery-grid-unbound-column-how-to-make-the-most-of-it.aspx#merge-unbound-columns" target="_blank"&gt;Merge Unbound Columns property&lt;/a&gt; and others. First and foremost let me remind again the SetUnboundValues’s Dictionary method overload is still your best bet to get things going as expected. Also the client-side explanations above still holds true although this time you set values to column layouts of the main grid, but it has to be done for the respective layout.&lt;/p&gt; &lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:85b6747e-b8fd-42dc-b877-f3c4cb5630e8" class="wlWriterEditableSmartContent"&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:300px;overflow:auto;"&gt; &lt;ol style="background:#ffffff;margin:0 0 0 2em;padding:0 0 0 5px;white-space:nowrap;"&gt; &lt;li&gt;childLayout.MergeUnboundColumns = &lt;span style="color:#0000ff;"&gt;true&lt;/span&gt;;&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;childLayout.Columns.Add(&lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;UnboundColumn&lt;/span&gt;()&lt;/li&gt; &lt;li&gt;{&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;    Key = &lt;span style="color:#a31515;"&gt;&amp;quot;counter&amp;quot;&lt;/span&gt;,&lt;/li&gt; &lt;li&gt;    HeaderText = &lt;span style="color:#a31515;"&gt;&amp;quot;Counter&amp;quot;&lt;/span&gt;,&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;    DataType = &lt;span style="color:#a31515;"&gt;&amp;quot;number&amp;quot;&lt;/span&gt;,&lt;/li&gt; &lt;li&gt;    UnboundValues = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color:#0000ff;"&gt;object&lt;/span&gt;&amp;gt;() { 1, 2, 3, 4, 5, 6, 7, 8, 9 }&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;}); &lt;span style="color:#008000;"&gt;//This will not work!&lt;/span&gt;&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;p&gt;Using the Unbound values column property which if used in child layout definition will be applied to all layouts by default. However when you enable merging the values inside the column definition are not supported and pretty much ignored. So in their place you get the default null values and empty columns on the client. &lt;/p&gt; &lt;p&gt;Then you have the SetUnboundValues’s List overload that suspiciously looks very much like the property, but you will be surprised when it actually works with merging. But there’s also a catch – since the method’s purpose is to provide all values for for a grid in one go, when used it will still map values to ID’s ..of the first child layout only. This is as far as the grid is willing to do the guessing for you I guess. However if the child layout doesn’t have primary key another default behavior kicks in and those values are applied separately to each child. I’m only explaining all of this as I think in some situations child layouts could be sharing values or just need an example values for one layout and these can turn out just fine.&lt;/p&gt; &lt;p&gt;Once again, assigning with the Dictionary overload applies the required mapping so values will properly be added throughout children&amp;nbsp; based on key matches.&lt;/p&gt; &lt;h3 id="loadOnDemand-MergeUnboundColumn" name="loadOnDemand-MergeUnboundColumn"&gt;Load On Demand and Merge Unbound columns don’t go well…&lt;/h3&gt; &lt;p&gt;These really don’t go well at all! And it’s really not that surprising – LoadOnDemand assures the grid that data for child layouts will be provided later on and merging demands they are present in the data source, so even though you may have Unbound Values set using the property itself and you can see it on the client code it will still be ignored and data for the unbound columns will be required from the data received when creating the child. That mean that you need to send it along with the original grid model and this makes the Unbound Columns redundant or if the source is oData nearly absurd to implement. SO better don’t try this at home. The best part is that if you don’t provide those values and the grid starts looking for them it will end up badly..with exceptions :) This is true for SetUnboundValue methods as well, however this is not hopeless combination of functionality:&lt;/p&gt; &lt;h3 id="getdata-method" name="getdata-method"&gt;GetData() to the rescue&lt;/h3&gt; &lt;p&gt;Of course, this is the &lt;a title="Ignite UI&amp;trade; Online Help - GetData Method" href="http://help.infragistics.com/NetAdvantage/jQuery/2012.2/CLR4.0?page=Infragistics.Web.Mvc~Infragistics.Web.Mvc.GridModel~GetData.html" target="_blank"&gt;Grid models’ GetData() method&lt;/a&gt; and it’s extremely helpful when using load on demand. In fact, so helpful, that when used to generate responses for the child layouts it will look at your model and properly merge unbound values applied with SetUnboundValue methods again following the default&amp;nbsp; behavior – with list values are added to each generated response essentially added to very layout and with dictionary overload just the matching ones. So this (lines 73/74 in the model show the setting of values with both List and Dictionary):&lt;/p&gt; &lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:f8d273fa-3090-4c6c-af12-5696b15e5bd9" class="wlWriterEditableSmartContent"&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 3em;padding:0 0 0 5px;white-space:nowrap;"&gt; &lt;li&gt;&lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;JsonResult&lt;/span&gt; BindChild(&lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; path, &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; layout)&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;{&lt;/li&gt; &lt;li&gt;    &lt;span style="color:#2b91af;"&gt;GridModel&lt;/span&gt; viewModel = GenerateGridModel();&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;    &lt;span style="color:#2b91af;"&gt;AdventureWorksEntities&lt;/span&gt; context = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;AdventureWorksEntities&lt;/span&gt;();&lt;/li&gt; &lt;li&gt;    viewModel.DataSource = context.Employees.ToList().ConvertAll(eh =&amp;gt; eh.ToDTO()).AsQueryable();&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;    &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; viewModel.GetData(path, layout);&lt;/li&gt; &lt;li&gt;}   &lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&lt;/li&gt; &lt;li&gt;&lt;span style="color:#0000ff;"&gt;private&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;GridModel&lt;/span&gt; GenerateGridModel()&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;{&lt;/li&gt; &lt;li&gt;    &lt;span style="color:#2b91af;"&gt;GridModel&lt;/span&gt; grid = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;GridModel&lt;/span&gt;();&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;    grid.Height = &lt;span style="color:#a31515;"&gt;&amp;quot;500px&amp;quot;&lt;/span&gt;;&lt;/li&gt; &lt;li&gt;    grid.AutoCommit = &lt;span style="color:#0000ff;"&gt;false&lt;/span&gt;;&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;    grid.PrimaryKey = &lt;span style="color:#a31515;"&gt;&amp;quot;DepartmentID&amp;quot;&lt;/span&gt;;&lt;/li&gt; &lt;li&gt;   &lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;    grid.AutoGenerateColumns = &lt;span style="color:#0000ff;"&gt;false&lt;/span&gt;;&lt;/li&gt; &lt;li&gt;    grid.AutoGenerateLayouts = &lt;span style="color:#0000ff;"&gt;false&lt;/span&gt;;&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;    &lt;span style="color:#2b91af;"&gt;GridColumnLayoutModel&lt;/span&gt; childLayout = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;GridColumnLayoutModel&lt;/span&gt;();&lt;/li&gt; &lt;li&gt;&amp;nbsp;&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;    &lt;span style="color:#008000;"&gt;//settings&lt;/span&gt;&lt;/li&gt; &lt;li&gt;    grid.LoadOnDemand = &lt;span style="color:#0000ff;"&gt;true&lt;/span&gt;;&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;    childLayout.Key = &lt;span style="color:#a31515;"&gt;&amp;quot;Employees&amp;quot;&lt;/span&gt;;&lt;/li&gt; &lt;li&gt;    childLayout.PrimaryKey = &lt;span style="color:#a31515;"&gt;&amp;quot;BusinessEntityID&amp;quot;&lt;/span&gt;;&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;    childLayout.ForeignKey = &lt;span style="color:#a31515;"&gt;&amp;quot;DepartmentID&amp;quot;&lt;/span&gt;;&lt;/li&gt; &lt;li&gt;    childLayout.MergeUnboundColumns = &lt;span style="color:#0000ff;"&gt;true&lt;/span&gt;;&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;    &lt;/li&gt; &lt;li&gt;    childLayout.AutoGenerateColumns = &lt;span style="color:#0000ff;"&gt;false&lt;/span&gt;;&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;    childLayout.AutoGenerateLayouts = &lt;span style="color:#0000ff;"&gt;false&lt;/span&gt;;&lt;/li&gt; &lt;li&gt; &lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;    childLayout.DataSourceUrl = Url.Action(&lt;span style="color:#a31515;"&gt;&amp;quot;BindChild&amp;quot;&lt;/span&gt;);&lt;/li&gt; &lt;li&gt;&amp;nbsp;&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;    childLayout.Columns = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color:#2b91af;"&gt;GridColumn&lt;/span&gt;&amp;gt;();&lt;/li&gt; &lt;li&gt;    childLayout.Columns.Add(&lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;GridColumn&lt;/span&gt;()&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;    {&lt;/li&gt; &lt;li&gt;        Key = &lt;span style="color:#a31515;"&gt;&amp;quot;BusinessEntityID&amp;quot;&lt;/span&gt;,&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;        HeaderText = &lt;span style="color:#a31515;"&gt;&amp;quot;B.E. Id&amp;quot;&lt;/span&gt;,&lt;/li&gt; &lt;li&gt;        DataType = &lt;span style="color:#a31515;"&gt;&amp;quot;number&amp;quot;&lt;/span&gt;&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;    });&lt;/li&gt; &lt;li&gt;&amp;nbsp;&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;    childLayout.Columns.Add(&lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;GridColumn&lt;/span&gt;()&lt;/li&gt; &lt;li&gt;    {&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;        Key = &lt;span style="color:#a31515;"&gt;&amp;quot;DepartmentID&amp;quot;&lt;/span&gt;,&lt;/li&gt; &lt;li&gt;        HeaderText = &lt;span style="color:#a31515;"&gt;&amp;quot;Dep id&amp;quot;&lt;/span&gt;,&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;        DataType = &lt;span style="color:#a31515;"&gt;&amp;quot;number&amp;quot;&lt;/span&gt;,&lt;/li&gt; &lt;li&gt;        Hidden = &lt;span style="color:#0000ff;"&gt;true&lt;/span&gt;&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;    });&lt;/li&gt; &lt;li&gt;&amp;nbsp;&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;    childLayout.Columns.Add(&lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;UnboundColumn&lt;/span&gt;()&lt;/li&gt; &lt;li&gt;    {&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;        Key = &lt;span style="color:#a31515;"&gt;&amp;quot;name&amp;quot;&lt;/span&gt;,&lt;/li&gt; &lt;li&gt;        HeaderText = &lt;span style="color:#a31515;"&gt;&amp;quot;name&amp;quot;&lt;/span&gt;,&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;        DataType = &lt;span style="color:#a31515;"&gt;&amp;quot;string&amp;quot;&lt;/span&gt;,&lt;/li&gt; &lt;li&gt;    });&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&lt;/li&gt; &lt;li&gt;    childLayout.Columns.Add(&lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;GridColumn&lt;/span&gt;()&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;    {&lt;/li&gt; &lt;li&gt;        Key = &lt;span style="color:#a31515;"&gt;&amp;quot;VacationHours&amp;quot;&lt;/span&gt;,&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;        HeaderText = &lt;span style="color:#a31515;"&gt;&amp;quot;Vacation Hours&amp;quot;&lt;/span&gt;,&lt;/li&gt; &lt;li&gt;        DataType = &lt;span style="color:#a31515;"&gt;&amp;quot;number&amp;quot;&lt;/span&gt;&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;    });&lt;/li&gt; &lt;li&gt;    childLayout.Columns.Add(&lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;GridColumn&lt;/span&gt;()&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;    {&lt;/li&gt; &lt;li&gt;        Key = &lt;span style="color:#a31515;"&gt;&amp;quot;SickLeaveHours&amp;quot;&lt;/span&gt;,&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;        HeaderText = &lt;span style="color:#a31515;"&gt;&amp;quot;Sick Leave Hours&amp;quot;&lt;/span&gt;,&lt;/li&gt; &lt;li&gt;        DataType = &lt;span style="color:#a31515;"&gt;&amp;quot;number&amp;quot;&lt;/span&gt;&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;    });&lt;/li&gt; &lt;li&gt;    childLayout.Columns.Add(&lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;UnboundColumn&lt;/span&gt;()&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;    {&lt;/li&gt; &lt;li&gt;        Key = &lt;span style="color:#a31515;"&gt;&amp;quot;counter&amp;quot;&lt;/span&gt;,&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;        HeaderText = &lt;span style="color:#a31515;"&gt;&amp;quot;Counter&amp;quot;&lt;/span&gt;,&lt;/li&gt; &lt;li&gt;        DataType = &lt;span style="color:#a31515;"&gt;&amp;quot;number&amp;quot;&lt;/span&gt;&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;    });&lt;/li&gt; &lt;li&gt;    childLayout.SetUnboundValues(&lt;span style="color:#a31515;"&gt;&amp;quot;counter&amp;quot;&lt;/span&gt;, &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color:#0000ff;"&gt;object&lt;/span&gt;&amp;gt;() { 1, 2, 3, 4, 5, 6, 7, 8, 9 });&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;    childLayout.SetUnboundValues(&lt;span style="color:#a31515;"&gt;&amp;quot;name&amp;quot;&lt;/span&gt;, peopleNames);&lt;/li&gt; &lt;li&gt;&amp;nbsp;&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;    grid.Columns = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color:#2b91af;"&gt;GridColumn&lt;/span&gt;&amp;gt;();&lt;/li&gt; &lt;li&gt;    grid.Columns.Add(&lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;GridColumn&lt;/span&gt;()&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;    {&lt;/li&gt; &lt;li&gt;        Key = &lt;span style="color:#a31515;"&gt;&amp;quot;DepartmentID&amp;quot;&lt;/span&gt;,&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;        HeaderText = &lt;span style="color:#a31515;"&gt;&amp;quot;DEP Id&amp;quot;&lt;/span&gt;,&lt;/li&gt; &lt;li&gt;        DataType = &lt;span style="color:#a31515;"&gt;&amp;quot;number&amp;quot;&lt;/span&gt;&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;    });&lt;/li&gt; &lt;li&gt;    grid.Columns.Add(&lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;GridColumn&lt;/span&gt;()&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;    {&lt;/li&gt; &lt;li&gt;        Key = &lt;span style="color:#a31515;"&gt;&amp;quot;Name&amp;quot;&lt;/span&gt;,&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;        HeaderText = &lt;span style="color:#a31515;"&gt;&amp;quot;Name&amp;quot;&lt;/span&gt;,&lt;/li&gt; &lt;li&gt;        DataType = &lt;span style="color:#a31515;"&gt;&amp;quot;string&amp;quot;&lt;/span&gt;&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;    });&lt;/li&gt; &lt;li&gt;&amp;nbsp;&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;    grid.Columns.Add(&lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;GridColumn&lt;/span&gt;()&lt;/li&gt; &lt;li&gt;    {&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;        Key = &lt;span style="color:#a31515;"&gt;&amp;quot;GroupName&amp;quot;&lt;/span&gt;,&lt;/li&gt; &lt;li&gt;        HeaderText = &lt;span style="color:#a31515;"&gt;&amp;quot;Group Name&amp;quot;&lt;/span&gt;,&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;        DataType = &lt;span style="color:#a31515;"&gt;&amp;quot;string&amp;quot;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;    });&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&lt;/li&gt; &lt;li&gt;    grid.Columns.Add(&lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;GridColumn&lt;/span&gt;()&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;    {&lt;/li&gt; &lt;li&gt;        Key = &lt;span style="color:#a31515;"&gt;&amp;quot;ModifiedDate&amp;quot;&lt;/span&gt;,&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;        HeaderText = &lt;span style="color:#a31515;"&gt;&amp;quot;Modified Date&amp;quot;&lt;/span&gt;,&lt;/li&gt; &lt;li&gt;        DataType = &lt;span style="color:#a31515;"&gt;&amp;quot;date&amp;quot;&lt;/span&gt;&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;    });&lt;/li&gt; &lt;li&gt;    grid.Columns.Add(&lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;UnboundColumn&lt;/span&gt;()&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;    {&lt;/li&gt; &lt;li&gt;        Key = &lt;span style="color:#a31515;"&gt;&amp;quot;employees&amp;quot;&lt;/span&gt;,&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;        HeaderText = &lt;span style="color:#a31515;"&gt;&amp;quot;Employees&amp;quot;&lt;/span&gt;,&lt;/li&gt; &lt;li&gt;        DataType = &lt;span style="color:#a31515;"&gt;&amp;quot;number&amp;quot;&lt;/span&gt;,&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;        UnboundValues = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color:#0000ff;"&gt;object&lt;/span&gt;&amp;gt;() { 7, 3, 18, 9, 12, 4, 180, 5, 6 }&lt;/li&gt; &lt;li&gt;    });&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&lt;/li&gt; &lt;li&gt;    grid.ColumnLayouts.Add(childLayout);&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;    &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; grid;&lt;/li&gt; &lt;li&gt;}&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;p&gt;Will produce the following response to the client:&lt;/p&gt; &lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:cfd8fb5a-3928-4563-867f-2d594b993eb3" class="wlWriterEditableSmartContent"&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;/li&gt; &lt;li style="background:#f3f3f3;"&gt;    &lt;span style="color:#800000;"&gt;&amp;quot;Records&amp;quot;&lt;/span&gt; : [{&lt;/li&gt; &lt;li&gt;            &lt;span style="color:#800000;"&gt;&amp;quot;BusinessEntityID&amp;quot;&lt;/span&gt; : 11,&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;            &lt;span style="color:#800000;"&gt;&amp;quot;DepartmentID&amp;quot;&lt;/span&gt; : 2,&lt;/li&gt; &lt;li&gt;            &lt;span style="color:#800000;"&gt;&amp;quot;name&amp;quot;&lt;/span&gt; : &lt;span style="color:#800000;"&gt;&amp;quot;Ovidiu Cracium&amp;quot;&lt;/span&gt;,&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;            &lt;span style="color:#800000;"&gt;&amp;quot;VacationHours&amp;quot;&lt;/span&gt; : 7,&lt;/li&gt; &lt;li&gt;            &lt;span style="color:#800000;"&gt;&amp;quot;SickLeaveHours&amp;quot;&lt;/span&gt; : 23,&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;            &lt;span style="color:#800000;"&gt;&amp;quot;counter&amp;quot;&lt;/span&gt; : 1&lt;/li&gt; &lt;li&gt;        }, {&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;            &lt;span style="color:#800000;"&gt;&amp;quot;BusinessEntityID&amp;quot;&lt;/span&gt; : 12,&lt;/li&gt; &lt;li&gt;            &lt;span style="color:#800000;"&gt;&amp;quot;DepartmentID&amp;quot;&lt;/span&gt; : 2,&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;            &lt;span style="color:#800000;"&gt;&amp;quot;name&amp;quot;&lt;/span&gt; : &lt;span style="color:#800000;"&gt;&amp;quot;Thierry D&amp;#92;u0027Hers&amp;quot;&lt;/span&gt;,&lt;/li&gt; &lt;li&gt;            &lt;span style="color:#800000;"&gt;&amp;quot;VacationHours&amp;quot;&lt;/span&gt; : 9,&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;            &lt;span style="color:#800000;"&gt;&amp;quot;SickLeaveHours&amp;quot;&lt;/span&gt; : 24,&lt;/li&gt; &lt;li&gt;            &lt;span style="color:#800000;"&gt;&amp;quot;counter&amp;quot;&lt;/span&gt; : 2&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;        }, {&lt;/li&gt; &lt;li&gt;            &lt;span style="color:#800000;"&gt;&amp;quot;BusinessEntityID&amp;quot;&lt;/span&gt; : 13,&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;            &lt;span style="color:#800000;"&gt;&amp;quot;DepartmentID&amp;quot;&lt;/span&gt; : 2,&lt;/li&gt; &lt;li&gt;            &lt;span style="color:#800000;"&gt;&amp;quot;name&amp;quot;&lt;/span&gt; : &lt;span style="color:#800000;"&gt;&amp;quot;Janice Galvin&amp;quot;&lt;/span&gt;,&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;            &lt;span style="color:#800000;"&gt;&amp;quot;VacationHours&amp;quot;&lt;/span&gt; : 8,&lt;/li&gt; &lt;li&gt;            &lt;span style="color:#800000;"&gt;&amp;quot;SickLeaveHours&amp;quot;&lt;/span&gt; : 24,&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;            &lt;span style="color:#800000;"&gt;&amp;quot;counter&amp;quot;&lt;/span&gt; : 3&lt;/li&gt; &lt;li&gt;        }&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;    ],&lt;/li&gt; &lt;li&gt;    &lt;span style="color:#800000;"&gt;&amp;quot;TotalRecordsCount&amp;quot;&lt;/span&gt; : 0,&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;    &lt;span style="color:#800000;"&gt;&amp;quot;Metadata&amp;quot;&lt;/span&gt; : {&lt;/li&gt; &lt;li&gt;        &lt;span style="color:#800000;"&gt;&amp;quot;timezoneOffset&amp;quot;&lt;/span&gt; : 10800000&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;    }&lt;/li&gt; &lt;li&gt;}&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;p&gt;Even when merging is not in use, this method will be kind enough to include the said values as metadata instead and achieve the same results. One thing to note is that the method does require the presence of primary and foreign key in the child layout in order to perform proper mapping, which if not needed can be hidden but still must be present. Despite that,&amp;nbsp; using the Grid model with Load On demand is the best way to have child data generated properly and it allows Unbound Columns to be merged along with all else!&lt;/p&gt; &lt;h3 id="using-unbound-values-in-templates" name="using-unbound-values-in-templates"&gt;Bonus scene (formula + template)&lt;/h3&gt; &lt;p&gt;Or more like bonus scenario. Since unbound columns are not even tied with values what happens if as above and examples before you got that Unbound Column with both formula to calculate total &lt;strong&gt;and &lt;/strong&gt;template. Now that template uses a static value for the max…how about we add yet another column for that, provide some values and use that instead in the template?&lt;/p&gt; &lt;p&gt; &lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:7c736013-bdf4-469d-aec4-f63fface0f27" class="wlWriterEditableSmartContent"&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:#ffff00;"&gt;@(&lt;/span&gt;Html.Infragistics().Grid(Model).AutoGenerateColumns(&lt;span style="color:#0000ff;"&gt;false&lt;/span&gt;).AutoGenerateLayouts(&lt;span style="color:#0000ff;"&gt;false&lt;/span&gt;).LocalSchemaTransform(&lt;span style="color:#0000ff;"&gt;false&lt;/span&gt;)&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;    .ColumnLayouts(layout =&amp;gt; layout.For(x =&amp;gt; x.Employees).AutoGenerateColumns(&lt;span style="color:#0000ff;"&gt;false&lt;/span&gt;).Columns(column =&amp;gt;&lt;/li&gt; &lt;li&gt;        {&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;            column.For(x =&amp;gt; x.BusinessEntityID).HeaderText(&lt;span style="color:#a31515;"&gt;&amp;quot;B.E. Id&amp;quot;&lt;/span&gt;).DataType(&lt;span style="color:#a31515;"&gt;&amp;quot;number&amp;quot;&lt;/span&gt;);&lt;/li&gt; &lt;li&gt;            column.For(x =&amp;gt; x.SickLeaveHours).HeaderText(&lt;span style="color:#a31515;"&gt;&amp;quot;Sick Leave Hours&amp;quot;&lt;/span&gt;).DataType(&lt;span style="color:#a31515;"&gt;&amp;quot;number&amp;quot;&lt;/span&gt;);&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;            column.For(x =&amp;gt; x.VacationHours).HeaderText(&lt;span style="color:#a31515;"&gt;&amp;quot;Vacation Hours&amp;quot;&lt;/span&gt;).DataType(&lt;span style="color:#a31515;"&gt;&amp;quot;number&amp;quot;&lt;/span&gt;);&lt;/li&gt; &lt;li&gt;            column.Unbound(&lt;span style="color:#a31515;"&gt;&amp;quot;total&amp;quot;&lt;/span&gt;).HeaderText(&lt;span style="color:#a31515;"&gt;&amp;quot;Total / Max&amp;quot;&lt;/span&gt;).DataType(&lt;span style="color:#a31515;"&gt;&amp;quot;number&amp;quot;&lt;/span&gt;).Formula(&lt;span style="color:#a31515;"&gt;&amp;quot;calcTotal&amp;quot;&lt;/span&gt;).Template(&lt;span style="color:#a31515;"&gt;&amp;quot;&amp;lt;span {{if ${total}/parseInt(${max}) &amp;gt; 1 }} class=&amp;#39;red&amp;#39; {{/if}}&amp;gt; ${total} / ${max} &amp;lt;/span&amp;gt;&amp;quot;&lt;/span&gt;);&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;            column.Unbound(&lt;span style="color:#a31515;"&gt;&amp;quot;max&amp;quot;&lt;/span&gt;).HeaderText(&lt;span style="color:#a31515;"&gt;&amp;quot;Max&amp;quot;&lt;/span&gt;).DataType(&lt;span style="color:#a31515;"&gt;&amp;quot;string&amp;quot;&lt;/span&gt;).Hidden(&lt;span style="color:#0000ff;"&gt;true&lt;/span&gt;);&lt;/li&gt; &lt;li&gt;        })&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;        .LocalSchemaTransform(&lt;span style="color:#0000ff;"&gt;false&lt;/span&gt;)&lt;/li&gt; &lt;li&gt;        .SetUnboundValues(&lt;span style="color:#a31515;"&gt;&amp;quot;max&amp;quot;&lt;/span&gt;, &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;Dictionary&lt;/span&gt;&amp;lt;&lt;span style="color:#0000ff;"&gt;object&lt;/span&gt;, &lt;span style="color:#0000ff;"&gt;object&lt;/span&gt;&amp;gt;() { { 2, 50 }, { 3, 100 }, { 5, 80 }, { 6, 100 }, { 11, 25 }, { 12, 66 }, { 13, 76 }, { 4, 32 }, { 15, 18 } })&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;        .PrimaryKey(&lt;span style="color:#a31515;"&gt;&amp;quot;BusinessEntityID&amp;quot;&lt;/span&gt;)&lt;/li&gt; &lt;li&gt;    )&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;    .PrimaryKey(&lt;span style="color:#a31515;"&gt;&amp;quot;DepartmentID&amp;quot;&lt;/span&gt;)&lt;/li&gt; &lt;li&gt;    .Columns(column =&amp;gt;&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;    {&lt;/li&gt; &lt;li&gt;        column.For(x =&amp;gt; x.DepartmentID).HeaderText(&lt;span style="color:#a31515;"&gt;&amp;quot;DEP Id&amp;quot;&lt;/span&gt;).DataType(&lt;span style="color:#a31515;"&gt;&amp;quot;number&amp;quot;&lt;/span&gt;);&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;        column.For(x =&amp;gt; x.Name).HeaderText(&lt;span style="color:#a31515;"&gt;&amp;quot;Name&amp;quot;&lt;/span&gt;).DataType(&lt;span style="color:#a31515;"&gt;&amp;quot;string&amp;quot;&lt;/span&gt;);&lt;/li&gt; &lt;li&gt;        column.For(x =&amp;gt; x.GroupName).HeaderText(&lt;span style="color:#a31515;"&gt;&amp;quot;Group Name&amp;quot;&lt;/span&gt;).DataType(&lt;span style="color:#a31515;"&gt;&amp;quot;string&amp;quot;&lt;/span&gt;);&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;        column.For(x =&amp;gt; x.ModifiedDate).HeaderText(&lt;span style="color:#a31515;"&gt;&amp;quot;Modified Date&amp;quot;&lt;/span&gt;).DataType(&lt;span style="color:#a31515;"&gt;&amp;quot;date&amp;quot;&lt;/span&gt;);&lt;/li&gt; &lt;li&gt;        column.Unbound(&lt;span style="color:#a31515;"&gt;&amp;quot;employees&amp;quot;&lt;/span&gt;).HeaderText(&lt;span style="color:#a31515;"&gt;&amp;quot;Employees&amp;quot;&lt;/span&gt;).DataType(&lt;span style="color:#a31515;"&gt;&amp;quot;number&amp;quot;&lt;/span&gt;).UnboundValues(&lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color:#0000ff;"&gt;object&lt;/span&gt;&amp;gt;() { 7, 3, 18, 9, 12, 4, 180, 5, 6 });&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;    })&lt;/li&gt; &lt;li&gt;    .Height(&lt;span style="color:#a31515;"&gt;&amp;quot;600px&amp;quot;&lt;/span&gt;)&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;    .Features(feature =&amp;gt; &lt;/li&gt; &lt;li&gt;        {&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;            feature.Paging().Type(&lt;span style="color:#2b91af;"&gt;OpType&lt;/span&gt;.Local).PageSize(10);&lt;/li&gt; &lt;li&gt;            feature.Sorting().Type(&lt;span style="color:#2b91af;"&gt;OpType&lt;/span&gt;.Local);&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;            feature.Filtering().Type(&lt;span style="color:#2b91af;"&gt;OpType&lt;/span&gt;.Local);&lt;/li&gt; &lt;li&gt;        })&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;    .DataSource(Model)&lt;/li&gt; &lt;li&gt;    .ClientDataSourceType(&lt;span style="color:#2b91af;"&gt;ClientDataSourceType&lt;/span&gt;.JSON)&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;    .DataBind()&lt;/li&gt; &lt;li&gt;    .Render()&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;&lt;span style="background:#ffff00;"&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;Would it work as expected? For a moment, it might. See there’s no merging enabled, therefore it happens on the client and since the schema doesn&amp;#39;t include the Unbound columns the grid isn’t as kind as to go about and apply null-s to every record missing unbound value. So in essence unless you provide all of them, records will not even have a ‘max’ property and guess what happens when the templating engine tries to get a value for it :) But no worries, a solution is possible using yet another formula:&lt;/p&gt; &lt;p&gt; &lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:31f8c30e-dd14-4161-ac06-0d99a8eea1ce" class="wlWriterEditableSmartContent"&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:#fff;max-height:300px;overflow:auto;"&gt; &lt;ol style="background:#ffffff;margin:0;padding:0 0 0 5px;"&gt; &lt;li&gt;column.Unbound(&lt;span style="color:#a31515;"&gt;&amp;quot;max&amp;quot;&lt;/span&gt;).HeaderText(&lt;span style="color:#a31515;"&gt;&amp;quot;Max&amp;quot;&lt;/span&gt;).DataType(&lt;span style="color:#a31515;"&gt;&amp;quot;string&amp;quot;&lt;/span&gt;).Hidden(&lt;span style="color:#0000ff;"&gt;true&lt;/span&gt;).Formula(&lt;span style="color:#a31515;"&gt;&amp;quot;maxFix&amp;quot;&lt;/span&gt;);&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt;&lt;/p&gt; &lt;p&gt;And in it you can assign values or in this case keep the ones available and place defaults. It doesn’t even have to be null-s anymore:&lt;/p&gt; &lt;p&gt; &lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:78f5ad47-34b3-4331-b378-91a9b7cf2568" class="wlWriterEditableSmartContent"&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:300px;overflow:auto;"&gt; &lt;ol style="background:#ffffff;margin:0 0 0 2em;padding:0 0 0 5px;white-space:nowrap;"&gt; &lt;li&gt;&lt;span style="color:#0000ff;"&gt;function&lt;/span&gt; maxFix(row, grid) {&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;    &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; row.max ?   row.max : &lt;span style="color:#800000;"&gt;&amp;quot;???&amp;quot;&lt;/span&gt;;&lt;/li&gt; &lt;li&gt;};&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt;&lt;/p&gt; &lt;p&gt;And you get quite lovely results:&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.infragistics.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/damyan_5F00_petev.metablogapi/2766.igniteui_2D00_jquery_2D00_grid_2D00_unbound_2D00_columns_2D00_formulas_2D00_templates_5F00_03DF6EE8.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="igniteui-jquery-grid-unbound-columns-formulas-templates" border="0" alt="igniteui-jquery-grid-unbound-columns-formulas-templates" src="http://www.infragistics.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/damyan_5F00_petev.metablogapi/8130.igniteui_2D00_jquery_2D00_grid_2D00_unbound_2D00_columns_2D00_formulas_2D00_templates_5F00_thumb_5F00_50A3357E.png" width="650" height="325" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;h1 name="resources-demos"&gt;Resources and demos&lt;/h1&gt; &lt;ul&gt; &lt;li&gt; &lt;div name="gotcha"&gt;&lt;a title="How to get started with jQuery Grid Unbound Columns" href="http://www.infragistics.com/community/blogs/damyan_petev/archive/2012/10/16/how-to-get-started-with-jquery-grid-unbound-columns.aspx" target="_blank"&gt;How to get started with jQuery Grid Unbound Columns&lt;/a&gt;&lt;/div&gt; &lt;ul&gt; &lt;li&gt; &lt;p&gt;&lt;a title="Why Unbound columns? Benefits and possible use cases." href="http://www.infragistics.com/community/blogs/damyan_petev/archive/2012/10/16/how-to-get-started-with-jquery-grid-unbound-columns.aspx#why-unbound-columns" target="_blank"&gt;Why Unbound columns?&lt;/a&gt;&lt;/p&gt; &lt;li&gt; &lt;p&gt;&lt;a title="Ignite UI Grid quick setup with Unbound Column" href="http://www.infragistics.com/community/blogs/damyan_petev/archive/2012/10/16/how-to-get-started-with-jquery-grid-unbound-columns.aspx#quick-setup" target="_blank"&gt;Quick setup&lt;/a&gt; + &lt;a title="Quick setup with ASP.NET MVC wrapper" href="http://www.infragistics.com/community/blogs/damyan_petev/archive/2012/10/16/how-to-get-started-with-jquery-grid-unbound-columns.aspx#asp-net-mvc" target="_blank"&gt;with ASP.NET MVC wrapper&lt;/a&gt;&lt;/p&gt; &lt;li&gt; &lt;p&gt;&lt;a title="Adding data for the unbound columns" href="http://www.infragistics.com/community/blogs/damyan_petev/archive/2012/10/16/how-to-get-started-with-jquery-grid-unbound-columns.aspx#unbound-data" target="_blank"&gt;Adding data&lt;/a&gt;: with the &lt;a title="Unbound Values property" href="http://www.infragistics.com/community/blogs/damyan_petev/archive/2012/10/16/how-to-get-started-with-jquery-grid-unbound-columns.aspx#unbound-values" target="_blank"&gt;UnboundValues property&lt;/a&gt;, &lt;a title="Set Unbound Values methods" href="http://www.infragistics.com/community/blogs/damyan_petev/archive/2012/10/16/how-to-get-started-with-jquery-grid-unbound-columns.aspx#set-unbound-values" target="_blank"&gt;Set Unbound Values methods&lt;/a&gt; and &lt;a title="Unbound Column formula option." href="http://www.infragistics.com/community/blogs/damyan_petev/archive/2012/10/16/how-to-get-started-with-jquery-grid-unbound-columns.aspx#formula" target="_blank"&gt;calculating them via formula&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt; &lt;ul&gt; &lt;li&gt; &lt;div name="gotcha"&gt;&lt;a title="jQuery Grid Unbound Column: How to make the most of it" href="http://www.infragistics.com/community/blogs/damyan_petev/archive/2012/10/16/jquery-grid-unbound-column-how-to-make-the-most-of-it.aspx" target="_blank"&gt;How to configure jQuery Grid Unbound Column and make the most of it&lt;/a&gt;&lt;/div&gt; &lt;ul&gt; &lt;ul&gt; &lt;li&gt; &lt;div name="gotcha"&gt;&lt;a title="Merge Unbound Columns property" href="http://www.infragistics.com/community/blogs/damyan_petev/archive/2012/10/16/jquery-grid-unbound-column-how-to-make-the-most-of-it.aspx#merge-unbound-columns" target="_blank"&gt;Merge Unbound Columns property&lt;/a&gt; and &lt;a title="Merge Unbound Columns Performance implications" href="http://www.infragistics.com/community/blogs/damyan_petev/archive/2012/10/16/jquery-grid-unbound-column-how-to-make-the-most-of-it.aspx#performance" target="_blank"&gt;&lt;strong&gt;Performance&lt;/strong&gt; implications&lt;/a&gt;&lt;/div&gt; &lt;li&gt; &lt;div name="gotcha"&gt;&lt;a title="Merging Unbound Columns and setting values on data-bound client event" href="http://www.infragistics.com/community/blogs/damyan_petev/archive/2012/10/16/jquery-grid-unbound-column-how-to-make-the-most-of-it.aspx#merge-set-unbound-values" target="_blank"&gt;Merging Unbound Columns and setting values on data-bound client event&lt;/a&gt;&lt;/div&gt; &lt;li&gt; &lt;div name="gotcha"&gt;&lt;a title="Client-side methods to get Unbound columns and their values" href="http://www.infragistics.com/community/blogs/damyan_petev/archive/2012/10/16/jquery-grid-unbound-column-how-to-make-the-most-of-it.aspx#get-columns-values" target="_blank"&gt;Client-side methods to get Unbound columns and their values&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt; &lt;li&gt; &lt;div name="gotcha"&gt;Using unbound columns with &lt;a title="Unbound Column with Templating or formatting?" href="http://www.infragistics.com/community/blogs/damyan_petev/archive/2012/10/16/jquery-grid-unbound-column-how-to-make-the-most-of-it.aspx#template-format" target="_blank"&gt;advanced column options such as Templating or formatting&lt;/a&gt;.&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt; &lt;ul&gt; &lt;li&gt; &lt;div name="gotcha"&gt;You can instantly try the the feature with the following JSFiddle-s:&lt;/div&gt;&lt;/li&gt; &lt;ul&gt; &lt;li&gt; &lt;div name="gotcha"&gt;&lt;a title="A JFIddle demo showing the IgniteUI Grid with Unbound columns and the ways to set values in order to support proper Updating." href="http://jsfiddle.net/damyanpetev/TswUa/" target="_blank"&gt;Updating and setting unbound values. Transactions.&lt;/a&gt;&lt;/div&gt; &lt;li&gt; &lt;div name="gotcha"&gt;&lt;a title="A JFIddle demo showing the IgniteUI Hierarchical Grid with Unbound columns and  unbound values in both parent and child layouts." href="http://jsfiddle.net/damyanpetev/eMYCS/" target="_blank"&gt;Setting unbound values in both parent and child layouts in the Hierarchical Grid&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt; &lt;li&gt; &lt;div name="gotcha"&gt;I’ve prepared a&lt;strong&gt; fairly elaborate &lt;a title="Unbound-Column-Updating-Hierarchy - ASP.NET MVC demo project" href="http://media.infragistics.com/community/Release/12.2/jQuery/Unbound-Columns/Unbound-Column-Updating-Hierarchy.zip" target="_blank"&gt;ASP.NET MVC project&lt;/a&gt;&lt;/strong&gt; with various grid configurations described above with both jQuery/JavaScript and MVC Helper. &lt;em&gt;Keep in mind most views use the MVC wrapper and require at least a trial version of Ignite UI on your machine – click the banner below to get yourself one.&lt;/em&gt;&lt;/div&gt; &lt;li&gt; &lt;div name="gotcha"&gt;There are two demos available in our Samples: &lt;a title="Ignite UI Grid - Unbound Column sample" href="http://www.infragistics.com/products/jquery/sample/grid/unbound-column" target="_blank"&gt;Unbound Column in the Grid&lt;/a&gt; and &lt;a title="Ignite UI sample - Hierarchical Grid with Unbound Column" href="http://www.infragistics.com/products/jquery/sample/hierarchical-grid/unbound-column-hierarchical-grid" target="_blank"&gt;Unbound Column in the Hierarchical Grid&lt;/a&gt;.&lt;/div&gt; &lt;li&gt; &lt;div name="gotcha"&gt;You can find general and control specific help in our &lt;a title="Infragistics(R) Ignite UI&amp;trade; Online Help ::  2012.2" href="http://help.infragistics.com/NetAdvantage/jQuery/2012.2/CLR4.0" target="_blank"&gt;Online Documentation&lt;/a&gt;&lt;/div&gt; &lt;li&gt; &lt;div name="gotcha"&gt;You can find the client-side options and methods in the &lt;a title="Ignite UI API Reference : igGrid" href="http://help.infragistics.com/jQuery/2012.2/ui.iggrid" target="_blank"&gt;Ignite UI jQuery Grid API reference&lt;/a&gt;.&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p name="gotcha"&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;/p&gt; &lt;p name="gotcha"&gt;&lt;em&gt;As always, you can follow us on Twitter &lt;/em&gt;&lt;a title="That would be me!" href="https://twitter.com/DamyanPetev"&gt;&lt;em&gt;@DamyanPetev&lt;/em&gt;&lt;/a&gt;&lt;em&gt; and &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;h1 id="tldr-summary" name="tldr-summary"&gt;TL;DR | Summary&lt;/h1&gt; &lt;p name="gotcha"&gt;In this article we covered the usage the Updating feature with Unbound Columns in the IgniteUI Grid – how to deserialize the now non-conforming model of data the client side jQuery widget is sending. We also looked into the proper methods of setting values so they can be persisted and how to deal with editing and formula updating upon dependency field change.&lt;/p&gt; &lt;p name="gotcha"&gt;In addition to those, some light was shone upon how the Hierarchical version of the grid ever so slightly differs from the flat one and the unique challenges it poses – setting values and the dynamic creation of child widgets. The odd interaction between options such as Merge Unbound columns and Load on Demand and just how bad can things so and how useful the ASP.NET MVC Grid model ‘GetData()’ method can be to prevent that. Lastly, a small demo just to give head up when using Unbound Column values in templates without merging values on the server.&lt;/p&gt;</description></item><item><title>jQuery Grid Unbound Column: How to make the most of it</title><link>http://community.infragistics.com/blogs/damyan_petev/archive/2012/10/16/jquery-grid-unbound-column-how-to-make-the-most-of-it.aspx</link><pubDate>Tue, 16 Oct 2012 21:39:00 GMT</pubDate><guid isPermaLink="false">7a8b7c76-b7ad-48e0-9694-5b04ca132ed0:377225</guid><dc:creator>dpetev</dc:creator><description>&lt;p&gt;&lt;img style="display:inline;float:left;" title="Ignite UI jQuery Grid&amp;#39;s Unbound Columns and configuring it to make the most of it." alt="Ignite UI jQuery Grid&amp;#39;s Unbound Columns and configuring it to make the most of it." align="left" src="http://media.infragistics.com/community/Release/12.2/jQuery/Unbound-Columns/jquery-grid-unbound-columns-configure.png" /&gt;When in need of displaying columns with separate data – be it from a different source or based on the values of others – this new column type will prove truly helpful. Be sure to read the introductory blog on &lt;a title="How to get started with jQuery Grid Unbound Columns" href="http://www.infragistics.com/community/blogs/damyan_petev/archive/2012/10/16/how-to-get-started-with-jquery-grid-unbound-columns.aspx" target="_blank"&gt;how to get started with jQuery Grid Unbound Columns&lt;/a&gt;. As promised we’ll go into greater detail into the options available to tweak the &lt;a title="Ignite UI: The World&amp;rsquo;s Most Advanced JavaScript &amp;amp; HTML5 UI Framework" href="http://www.infragistics.com/community/blogs/jason_beres/archive/2012/10/12/ignite-ui-the-world-s-most-advanced-javascript-amp-html5-ui-framework.aspx" target="_blank"&gt;Ignite UI&lt;/a&gt; Grid’s Unbound Column feature to your own use case and needs.  &lt;h1 id="merge-unbound-columns" name="merge-unbound-columns"&gt;Merge Unbound Columns&lt;/h1&gt; &lt;p&gt;This is where it really gets interesting. Due to the very nature of the performed functions – bringing two or more distinct sources together in a single control’s view -&amp;nbsp; as a developer you are given a additional option to control that. You can define the grid’s behavior&amp;nbsp; using the MergeUnboundColumns property. It is relevant when defining a grid on&amp;nbsp; the server-side with the ASP.NET MVC wrapper. The default option is false and what happens is that your unbound values get sent to the client as Metadata, rather than along with the actual data source records. You can take for example the previous blog sample. To make it clear here is how a part of the grid definition would look with the option off by default :  &lt;p&gt;&lt;img title="Ignite UI jQuery Grid definition as produced by the ASP.NET MVC wrapper. MergeUnboundCoulmns is false by default and all the unbound values are transmitted to the client in the source metadata." alt="Ignite UI jQuery Grid definition as produced by the ASP.NET MVC wrapper. MergeUnboundCoulmns is false by default and all the unbound values are transmitted to the client in the source metadata." src="http://media.infragistics.com/community/Release/12.2/jQuery/Unbound-Columns/jquery-grid-merge-unbound-columns-metadata.png" /&gt;  &lt;p&gt;&lt;em&gt;(It’s a little bit formatted and the actual records are collapsed so the structure can be visible, but rest assured they do not contain any of the unbound values)&lt;/em&gt;  &lt;p&gt;Of course, if you take a closer look at the generated scripts you will also notice the above grid being initialized with the identical client property ‘mergeUnboundColumns’ being false. I did say it was a property meaningful when using the ASP.NET MVC helpers and it mostly is. What the client property does is being a flag for the grid if the data comes merged..or should the control do that on the client-side &lt;strong&gt;only in combination with remote data source&lt;/strong&gt;. Otherwise, this property with local source won’t have any effect whatsoever. What all this means is that at the end of the journey the widget will have to do the merging anyway – that is how such values can normally participate in features such as sorting, filtering, etc.  &lt;p&gt;Naturally, what makes the difference when setting this property to true is that the merging is performed on the server. Notice line 2 below:&lt;/p&gt; &lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:13dfee0f-dae3-4801-af92-e2517f426e29" class="wlWriterEditableSmartContent"&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:#ffff00;"&gt;@(&lt;/span&gt;Html.Infragistics().Grid(Model).AutoGenerateColumns(&lt;span style="color:#0000ff;"&gt;false&lt;/span&gt;).AutoGenerateLayouts(&lt;span style="color:#0000ff;"&gt;true&lt;/span&gt;)&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;    .MergeUnboundColumns(&lt;span style="color:#0000ff;"&gt;true&lt;/span&gt;)&lt;/li&gt; &lt;li&gt;    .Columns(column =&amp;gt;&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;    {&lt;/li&gt; &lt;li&gt;        column.For(x =&amp;gt; x.BusinessEntityID).HeaderText(&lt;span style="color:#a31515;"&gt;&amp;quot;B.E. Id&amp;quot;&lt;/span&gt;).DataType(&lt;span style="color:#a31515;"&gt;&amp;quot;number&amp;quot;&lt;/span&gt;);&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;        column.Unbound(&lt;span style="color:#a31515;"&gt;&amp;quot;name&amp;quot;&lt;/span&gt;).HeaderText(&lt;span style="color:#a31515;"&gt;&amp;quot;Name&amp;quot;&lt;/span&gt;).DataType(&lt;span style="color:#a31515;"&gt;&amp;quot;string&amp;quot;&lt;/span&gt;);&lt;/li&gt; &lt;li&gt;        column.For(x =&amp;gt; x.LoginID).HeaderText(&lt;span style="color:#a31515;"&gt;&amp;quot;Login Id&amp;quot;&lt;/span&gt;).DataType(&lt;span style="color:#a31515;"&gt;&amp;quot;string&amp;quot;&lt;/span&gt;);&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;        column.For(x =&amp;gt; x.SickLeaveHours).HeaderText(&lt;span style="color:#a31515;"&gt;&amp;quot;Sick Leave Hours&amp;quot;&lt;/span&gt;).DataType(&lt;span style="color:#a31515;"&gt;&amp;quot;number&amp;quot;&lt;/span&gt;);&lt;/li&gt; &lt;li&gt;        column.For(x =&amp;gt; x.VacationHours).HeaderText(&lt;span style="color:#a31515;"&gt;&amp;quot;Vacation Hours&amp;quot;&lt;/span&gt;).DataType(&lt;span style="color:#a31515;"&gt;&amp;quot;number&amp;quot;&lt;/span&gt;);&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;    })&lt;/li&gt; &lt;li&gt;    .Height(&lt;span style="color:#a31515;"&gt;&amp;quot;600px&amp;quot;&lt;/span&gt;)&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;    .Features(feature =&amp;gt; &lt;/li&gt; &lt;li&gt;        {&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;            feature.Paging().Type(&lt;span style="color:#2b91af;"&gt;OpType&lt;/span&gt;.Local);&lt;/li&gt; &lt;li&gt;            feature.Sorting().Type(&lt;span style="color:#2b91af;"&gt;OpType&lt;/span&gt;.Local);&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;            feature.Filtering().Type(&lt;span style="color:#2b91af;"&gt;OpType&lt;/span&gt;.Local);&lt;/li&gt; &lt;li&gt;            feature.GroupBy().Type(&lt;span style="color:#2b91af;"&gt;OpType&lt;/span&gt;.Local);&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;        })&lt;/li&gt; &lt;li&gt;    .SetUnboundValues(&lt;span style="color:#a31515;"&gt;&amp;quot;name&amp;quot;&lt;/span&gt;, (ViewBag.people &lt;span style="color:#0000ff;"&gt;as&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color:#0000ff;"&gt;string&lt;/span&gt;&amp;gt;).Cast&amp;lt;&lt;span style="color:#0000ff;"&gt;object&lt;/span&gt;&amp;gt;().ToList())&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;    .DataBind()&lt;/li&gt; &lt;li&gt;    .Render()&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;&lt;span style="background:#ffff00;"&gt;)&lt;/span&gt;&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;p&gt;As a result data gets send as a totally normal set of records and the merge client property states true telling the widget not to look for values in the metadata as they are no longer there:&lt;/p&gt; &lt;p&gt;&lt;img title="Ignite UI jQuery Grid definition as produced by the ASP.NET MVC wrapper. MergeUnboundCoulmns is true and unbound values are now part of the data records." alt="Ignite UI jQuery Grid definition as produced by the ASP.NET MVC wrapper. MergeUnboundCoulmns is true and unbound values are now part of the data records." src="http://media.infragistics.com/community/Release/12.2/jQuery/Unbound-Columns/jquery-grid-merge-unbound-columns-true.png" /&gt;  &lt;h3 id="merged-unbound-columns-unboundDS" name="merged-unbound-columns-unboundDS"&gt;Merged Unbound columns distinctive property – unboundDS&lt;/h3&gt; &lt;p&gt;The “unboundDS” property indicates that the column is indeed unbound. This is done, regardless of the client treating unbound columns as bound when ‘mergeUnboundColumns’ is true. Or should I say this is done exactly because of that. Have a look at what comes as a column definition in this case: &lt;/p&gt; &lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:cf1b999c-10d4-4876-af01-dc34b3609ddc" class="wlWriterEditableSmartContent"&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:#fff;max-height:500px;overflow:auto;"&gt; &lt;ol style="background:#ffffff;margin:0;padding:0 0 0 5px;white-space:nowrap;"&gt; &lt;li&gt;{&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;                unbound : &lt;span style="color:#0000ff;"&gt;false&lt;/span&gt;,&lt;/li&gt; &lt;li&gt;                key : &lt;span style="color:#800000;"&gt;&amp;#39;name&amp;#39;&lt;/span&gt;,&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;                headerText : &lt;span style="color:#800000;"&gt;&amp;#39;Name&amp;#39;&lt;/span&gt;,&lt;/li&gt; &lt;li&gt;                dataType : &lt;span style="color:#800000;"&gt;&amp;#39;string&amp;#39;&lt;/span&gt;,&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;                unboundDS : &lt;span style="color:#0000ff;"&gt;true&lt;/span&gt;&lt;/li&gt; &lt;li&gt;            }&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;p&gt;As the values for the column are already in the records the grid is not supposed to look for them elsewhere and the unbound setting is false. But then again the same false can be added to any other column with no side effects..So how do you know if there are &lt;strong&gt;actual unbound columns&lt;/strong&gt; defined anyway? This is why the ‘unboundDS’ property is here for, to give a way for a client code to know if and which columns’ values are separate and most importantly to inform the grid that remote operations such as filtering and sorting (not supported by the feature) should not be allowed for that column.&lt;/p&gt; &lt;h3 id="performance" name="performance"&gt;Performance&lt;/h3&gt; &lt;p&gt;As you can&amp;nbsp; see the above-described configuration produces mostly the same results, however this time the served had to do the heavy lifting and the client enjoys not having anything to do with this and being blissfully unaware of unbound values. This is also very important as &lt;strong&gt;you have the option to distribute the load between client and server. &lt;/strong&gt;Then again a fair warning follows – merging on either side may result in a performance hit if the original data source is way too big. This is because the whole data must be traversed and new unbound values added to it (or default null values if the list values are less). As you can imagine though, the server is usually the one is a more dangerous position as the large data manipulations can become pretty a serious problem when they have to be performed multiple times for multiple clients. A client doing this instead should take much less of an impact doing just its own work.  &lt;p&gt;On a side note, remember the &lt;a title="Set Unbound Values methods" href="http://www.infragistics.com/community/blogs/damyan_petev/archive/2012/10/16/how-to-get-started-with-jquery-grid-unbound-columns.aspx#set-unbound-values" target="_blank"&gt;Set Unbound Values methods&lt;/a&gt; discussed in the previous blog and how it is strongly advisable to use the Dictionary overload as it is a performance gain? Well it’s even more true when using the merge option on the server - causes even more work as the server will be otherwise forced to create the bindings between values you provide and primary keys available. Of course, you are best to save it the trouble and assign them yourself, plus that way the order of the values won’t matter as much. &lt;h1 id="client-data-manipulation" name="client-data-manipulation"&gt;Client-side data manipulation&lt;/h1&gt; &lt;p&gt;Last time we demonstrated the client-side version of the method to set unbound values and saw the additional route of applying a formula on the client. However, those are not the only ways to set unbound values. There’s also an interesting turn of events regarding the usage of the so far described merge functionality that requires some additional client work and therefore, being well equipped to manipulate data on the client is never a bad thing.&amp;nbsp; &lt;h3 id="merge-set-unbound-values" name="merge-set-unbound-values"&gt;Merging Unbound Columns and setting values on data-bound client event&lt;/h3&gt; &lt;p&gt;Let’s have an identical example as so far but this time lets enable the merge option along with using the formula field from last time. Nothing special it shouldn’t affect the end result, right? &lt;/p&gt; &lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:8c3e74a5-36c8-4b98-b1b3-dee02fd36cbb" class="wlWriterEditableSmartContent"&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:300px;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:#ffff00;"&gt;@(&lt;/span&gt;Html.Infragistics().Grid(Model).AutoGenerateColumns(&lt;span style="color:#0000ff;"&gt;false&lt;/span&gt;).AutoGenerateLayouts(&lt;span style="color:#0000ff;"&gt;true&lt;/span&gt;)&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;    .MergeUnboundColumns(&lt;span style="color:#0000ff;"&gt;true&lt;/span&gt;)&lt;/li&gt; &lt;li&gt;    .Columns(column =&amp;gt;&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;    {&lt;/li&gt; &lt;li&gt;        column.For(x =&amp;gt; x.BusinessEntityID).HeaderText(&lt;span style="color:#a31515;"&gt;&amp;quot;B.E. Id&amp;quot;&lt;/span&gt;).DataType(&lt;span style="color:#a31515;"&gt;&amp;quot;number&amp;quot;&lt;/span&gt;);&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;        column.Unbound(&lt;span style="color:#a31515;"&gt;&amp;quot;name&amp;quot;&lt;/span&gt;).HeaderText(&lt;span style="color:#a31515;"&gt;&amp;quot;Name&amp;quot;&lt;/span&gt;).DataType(&lt;span style="color:#a31515;"&gt;&amp;quot;string&amp;quot;&lt;/span&gt;);&lt;/li&gt; &lt;li&gt;        column.For(x =&amp;gt; x.LoginID).HeaderText(&lt;span style="color:#a31515;"&gt;&amp;quot;Login Id&amp;quot;&lt;/span&gt;).DataType(&lt;span style="color:#a31515;"&gt;&amp;quot;string&amp;quot;&lt;/span&gt;);&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;        column.For(x =&amp;gt; x.SickLeaveHours).HeaderText(&lt;span style="color:#a31515;"&gt;&amp;quot;Sick Leave Hours&amp;quot;&lt;/span&gt;).DataType(&lt;span style="color:#a31515;"&gt;&amp;quot;number&amp;quot;&lt;/span&gt;);&lt;/li&gt; &lt;li&gt;        column.For(x =&amp;gt; x.VacationHours).HeaderText(&lt;span style="color:#a31515;"&gt;&amp;quot;Vacation Hours&amp;quot;&lt;/span&gt;).DataType(&lt;span style="color:#a31515;"&gt;&amp;quot;number&amp;quot;&lt;/span&gt;);&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;        column.Unbound(&lt;span style="color:#a31515;"&gt;&amp;quot;total&amp;quot;&lt;/span&gt;).HeaderText(&lt;span style="color:#a31515;"&gt;&amp;quot;Total&amp;quot;&lt;/span&gt;).DataType(&lt;span style="color:#a31515;"&gt;&amp;quot;number&amp;quot;&lt;/span&gt;).Formula(&lt;span style="color:#a31515;"&gt;&amp;quot;calcTotal&amp;quot;&lt;/span&gt;);&lt;/li&gt; &lt;li&gt;    })&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;    .Height(&lt;span style="color:#a31515;"&gt;&amp;quot;600px&amp;quot;&lt;/span&gt;)&lt;/li&gt; &lt;li&gt;    .Features(feature =&amp;gt; &lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;        {&lt;/li&gt; &lt;li&gt;            feature.Paging().Type(&lt;span style="color:#2b91af;"&gt;OpType&lt;/span&gt;.Local);&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;            feature.Sorting().Type(&lt;span style="color:#2b91af;"&gt;OpType&lt;/span&gt;.Local);&lt;/li&gt; &lt;li&gt;            feature.Filtering().Type(&lt;span style="color:#2b91af;"&gt;OpType&lt;/span&gt;.Local);&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;            feature.GroupBy().Type(&lt;span style="color:#2b91af;"&gt;OpType&lt;/span&gt;.Local);&lt;/li&gt; &lt;li&gt;        })&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;    .SetUnboundValues(&lt;span style="color:#a31515;"&gt;&amp;quot;name&amp;quot;&lt;/span&gt;, (ViewBag.people &lt;span style="color:#0000ff;"&gt;as&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color:#0000ff;"&gt;string&lt;/span&gt;&amp;gt;).Cast&amp;lt;&lt;span style="color:#0000ff;"&gt;object&lt;/span&gt;&amp;gt;().ToList())&lt;/li&gt; &lt;li&gt;    .DataBind()&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;    .Render()&lt;/li&gt; &lt;li&gt;&lt;span style="background:#ffff00;"&gt;)&lt;/span&gt;&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;p&gt;Well it did…  &lt;p&gt;&lt;img title="Ignite UI jQuery Grid with two unbound columns (merked orange). This shwos the result of using the merge property with a column formula and since values are not available on the server default null-s are assigned and the client never looks for values and the formula function is left uncalled." alt="Ignite UI jQuery Grid with two unbound columns (merked orange). This shwos the result of using the merge property with a column formula and since values are not available on the server default null-s are assigned and the client never looks for values and the formula function is left uncalled." src="http://media.infragistics.com/community/Release/12.2/jQuery/Unbound-Columns/jquery-grid-merge-unbound-columns-formula.png" /&gt;  &lt;p&gt;See when merge is enabled essentially you tell the grid values will be provided on/from the server and a JavaScript function for the formula is definitely not that. Also since as I explained values are assigned with null as default… that is what you end up getting this way. Can you still provide the same functionality with merged unbound columns? Sure! It’s not quite as simple, but possibly the most appropriate way to do this is to handle the client ‘dataBound’ event, at which point will have the data source object ready and you can directly assign values for unbound columns. Here’s the old formula function:&lt;/p&gt; &lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:ac7100f8-b6f5-41a0-835d-7cf3cb26a71d" class="wlWriterEditableSmartContent"&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:300px;overflow:auto;"&gt; &lt;ol style="background:#ffffff;margin:0 0 0 2em;padding:0 0 0 5px;white-space:nowrap;"&gt; &lt;li&gt;&lt;span style="color:#0000ff;"&gt;function&lt;/span&gt; calcTotal(row, grid) {&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;    &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; row.SickLeaveHours + row.VacationHours;&lt;/li&gt; &lt;li&gt;};&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;p&gt;All that’s different is that you don’t have a function called each time with row values, but you can make it work again(if it was something big that you would not want to change or refactor): &lt;/p&gt; &lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:10bb3619-0d0d-4ecc-8469-7c783feaa086" class="wlWriterEditableSmartContent"&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:300px;overflow:auto;"&gt; &lt;ol style="background:#ffffff;margin:0 0 0 2em;padding:0 0 0 5px;white-space:nowrap;"&gt; &lt;li&gt;$(&lt;span style="color:#800000;"&gt;&amp;quot;#Grid1&amp;quot;&lt;/span&gt;).live(&lt;span style="color:#800000;"&gt;&amp;quot;iggriddatabound&amp;quot;&lt;/span&gt;, &lt;span style="color:#0000ff;"&gt;function&lt;/span&gt; (evt, ui) {&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;   &lt;span style="color:#006400;"&gt;// ui.owner is a reference to the actual grid widget&lt;/span&gt;&lt;/li&gt; &lt;li&gt;    &lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; data = ui.owner.dataSource.data();&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;    $.each(data, &lt;span style="color:#0000ff;"&gt;function&lt;/span&gt; (index, record) {&lt;/li&gt; &lt;li&gt;        &lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; unboundValue = calcTotal(record, ui.owner);&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;        record[&lt;span style="color:#800000;"&gt;&amp;quot;total&amp;quot;&lt;/span&gt;] = unboundValue;&lt;/li&gt; &lt;li&gt;    });&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;});&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;p&gt;Once more, the data-bound event is the most logical place to execute that code as you have the data source, but the UI is not yet rendered, therefore this solution creates exactly the same results as before without noticeable difference for the end-user. Even so, it’s worth mentioning that you can enforce this method of assigning unbound values directly into the source at any point after this as an alternative to the SetUnboundValues method.&lt;/p&gt; &lt;h3 id="get-columns-values" name="get-columns-values"&gt;Get them!&lt;/h3&gt; &lt;p&gt;Speaking of ‘SetUnboundValues ‘ the opposite operation is also available as a client method. There’s also a method to get the whole column even:&lt;/p&gt; &lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:36a62d44-5538-42fb-a835-87dbf45fc935" class="wlWriterEditableSmartContent"&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:300px;overflow:auto;"&gt; &lt;ol style="background:#ffffff;margin:0 0 0 2em;padding:0 0 0 5px;"&gt; &lt;li&gt;&lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; unboundColumn = $(&lt;span style="color:#800000;"&gt;&amp;#39;#grid1&amp;#39;&lt;/span&gt;).igGrid(&lt;span style="color:#800000;"&gt;&amp;#39;getUnboundColumnByKey&amp;#39;&lt;/span&gt;, &lt;span style="color:#800000;"&gt;&amp;#39;name&amp;#39;&lt;/span&gt;);&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;&lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; unboundValues = $(&lt;span style="color:#800000;"&gt;&amp;#39;#grid1&amp;#39;&lt;/span&gt;).igGrid(&lt;span style="color:#800000;"&gt;&amp;#39;getUnboundValues&amp;#39;&lt;/span&gt;, &lt;span style="color:#800000;"&gt;&amp;#39;total&amp;#39;&lt;/span&gt;);&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;p&gt;The first provides you with the whole column with it’s properties &lt;strong&gt;and&lt;/strong&gt; values:&lt;/p&gt; &lt;p&gt;&lt;img title="The results returned by the client method to get Unbound column in the Ignite UI Grid." alt="The results returned by the client method to get Unbound column in the Ignite UI Grid." src="http://media.infragistics.com/community/Release/12.2/jQuery/Unbound-Columns/jquery-grid-get-unbound-column.png" /&gt;&lt;/p&gt; &lt;p&gt;And the values only method will give you just that array of values, however the column key parameter is optional and if not defined an object with all unbound columns’ value arrays will be returned instead.  &lt;p&gt;&lt;img title="The results returned by the client method to get values for Unbound column in the Ignite UI Grid." alt="The results returned by the client method to get values for Unbound column in the Ignite UI Grid." src="http://media.infragistics.com/community/Release/12.2/jQuery/Unbound-Columns/jquery-grid-get-unbound-values.png" /&gt;&amp;nbsp; &lt;h1 id="template-format" name="template-format"&gt;It’s Complicated&lt;/h1&gt; &lt;p&gt;Or is it? There are a number of questions in regard to what happens with unbound columns and advanced column features you’d normally use. This is especially true when you have a formula defined as well… well you can rest assured the functionality is all there. In the very special case of formula calculations to get the value – it is called before any formatting function or applying a template so for all intents and purposes it will work as with any other column. Just the column definition: &lt;/p&gt; &lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:aa2cf75e-df94-46ce-bb55-72641127e658" class="wlWriterEditableSmartContent"&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:300px;overflow:auto;"&gt; &lt;ol style="background:#ffffff;margin:0 0 0 2em;padding:0 0 0 5px;"&gt; &lt;li&gt;column.Unbound(&lt;span style="color:#a31515;"&gt;&amp;quot;total&amp;quot;&lt;/span&gt;).HeaderText(&lt;span style="color:#a31515;"&gt;&amp;quot;Total&amp;quot;&lt;/span&gt;).DataType(&lt;span style="color:#a31515;"&gt;&amp;quot;number&amp;quot;&lt;/span&gt;).Formula(&lt;span style="color:#a31515;"&gt;&amp;quot;calcTotal&amp;quot;&lt;/span&gt;).Template(&lt;span style="color:#a31515;"&gt;&amp;quot;&amp;lt;span {{if parseInt(${total})/100 &amp;gt; 1 }} class=&amp;#39;red&amp;#39; {{/if}}&amp;gt; ${total} / 100 &amp;lt;/span&amp;gt;&amp;quot;&lt;/span&gt;);&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;p&gt;And it’s all working pretty well:&lt;/p&gt; &lt;p&gt;&lt;img title="Ingite UI jQuery Grid with an Unbound column with a values calculated with a formula and conditional templating applied." alt="Ingite UI jQuery Grid with an Unbound column with a values calculated with a formula and conditional templating applied." src="http://media.infragistics.com/community/Release/12.2/jQuery/Unbound-Columns/jquery-grid-unbound-column-formula-template.png" /&gt;&lt;/p&gt; &lt;p&gt;Same goes for formatter functions that are the more extended functionality, but largely similar to templating.&lt;/p&gt; &lt;h1 id="resources-demos" name="resources-demos"&gt;Resources and demos&lt;/h1&gt; &lt;ul&gt; &lt;li&gt; &lt;div name="gotcha"&gt;&lt;a title="How to get started with jQuery Grid Unbound Columns" href="http://www.infragistics.com/community/blogs/damyan_petev/archive/2012/10/16/how-to-get-started-with-jquery-grid-unbound-columns.aspx" target="_blank"&gt;How to get started with jQuery Grid Unbound Columns&lt;/a&gt;&lt;/div&gt; &lt;ul&gt; &lt;li&gt; &lt;p&gt;&lt;a title="Why Unbound columns? Benefits and possible use cases." href="http://www.infragistics.com/community/blogs/damyan_petev/archive/2012/10/16/how-to-get-started-with-jquery-grid-unbound-columns.aspx#why-unbound-columns" target="_blank"&gt;Why Unbound columns?&lt;/a&gt;&lt;/p&gt; &lt;li&gt; &lt;p&gt;&lt;a title="Ignite UI Grid quick setup with Unbound Column" href="http://www.infragistics.com/community/blogs/damyan_petev/archive/2012/10/16/how-to-get-started-with-jquery-grid-unbound-columns.aspx#quick-setup" target="_blank"&gt;Quick setup&lt;/a&gt; + &lt;a title="Quick setup with ASP.NET MVC wrapper" href="http://www.infragistics.com/community/blogs/damyan_petev/archive/2012/10/16/how-to-get-started-with-jquery-grid-unbound-columns.aspx#asp-net-mvc" target="_blank"&gt;with ASP.NET MVC wrapper&lt;/a&gt;&lt;/p&gt; &lt;li&gt; &lt;p&gt;&lt;a title="Adding data for the unbound columns" href="http://www.infragistics.com/community/blogs/damyan_petev/archive/2012/10/16/how-to-get-started-with-jquery-grid-unbound-columns.aspx#unbound-data" target="_blank"&gt;Adding data&lt;/a&gt;:&amp;nbsp; with the &lt;a title="Unbound Values property" href="http://www.infragistics.com/community/blogs/damyan_petev/archive/2012/10/16/how-to-get-started-with-jquery-grid-unbound-columns.aspx#unbound-values" target="_blank"&gt;UnboundValues property&lt;/a&gt;, &lt;a title="Set Unbound Values methods" href="http://www.infragistics.com/community/blogs/damyan_petev/archive/2012/10/16/how-to-get-started-with-jquery-grid-unbound-columns.aspx#set-unbound-values" target="_blank"&gt;Set Unbound Values methods&lt;/a&gt; and &lt;a title="Unbound Column formula option." href="http://www.infragistics.com/community/blogs/damyan_petev/archive/2012/10/16/how-to-get-started-with-jquery-grid-unbound-columns.aspx#formula" target="_blank"&gt;calculating them via formula&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt; &lt;li&gt; &lt;div name="gotcha"&gt;Two JSFiddle-s available for you to play with – the &lt;a title="JSFiddle demonstrating different ways to set unbound values" href="http://jsfiddle.net/damyanpetev/P7Fgp/" target="_blank"&gt;previous one&lt;/a&gt; and another built on top with added support for &lt;a title="Grid Unbound Columns - getting unbound values from columns and conditional templating" href="http://jsfiddle.net/damyanpetev/GqpTy/" target="_blank"&gt;getting unbound values from columns and conditional templating&lt;/a&gt; discussed in this blog. &lt;/div&gt; &lt;li&gt; &lt;div name="gotcha"&gt;A shared demo for this and the previous blog – and &lt;a title="jQuery-Grid-Unbound-Column - ASP.NET MVC demo project" href="http://media.infragistics.com/community/Release/12.2/jQuery/Unbound-Columns/jQuery-Grid-Unbound-Column.zip" target="_blank"&gt;ASP.NET MVC project&lt;/a&gt; with various grid configurations described so far. &lt;em&gt;Keep in mind most views use the MVC wrapper and require at least a trial version of Ignite UI on your machine – click the banner below to get yourself one.&lt;/em&gt;&lt;/div&gt; &lt;li&gt; &lt;div name="gotcha"&gt;There are two demos available in our Samples: &lt;a title="Ignite UI Grid - Unbound Column sample" href="http://www.infragistics.com/products/jquery/sample/grid/unbound-column" target="_blank"&gt;Unbound Column in the Grid&lt;/a&gt; and &lt;a title="Ignite UI sample - Hierarchical Grid with Unbound Column" href="http://www.infragistics.com/products/jquery/sample/hierarchical-grid/unbound-column-hierarchical-grid" target="_blank"&gt;Unbound Column in the Hierarchical Grid&lt;/a&gt;.&lt;/div&gt; &lt;li&gt; &lt;div name="gotcha"&gt;You can find general and control specific help in our &lt;a title="Infragistics(R) Ignite UI&amp;trade; Online Help ::  2012.2" href="http://help.infragistics.com/NetAdvantage/jQuery/2012.2/CLR4.0" target="_blank"&gt;Online Documentation&lt;/a&gt;&lt;/div&gt; &lt;li&gt; &lt;div name="gotcha"&gt;You can find the client-side options and methods in the&amp;nbsp; &lt;a title="Ignite UI API Reference : igGrid" href="http://help.infragistics.com/jQuery/2012.2/ui.iggrid" target="_blank"&gt;Ignite UI jQuery Grid API reference&lt;/a&gt;.&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p name="gotcha"&gt;&lt;em&gt;As always, you can follow us on Twitter &lt;/em&gt;&lt;a title="That would be me!" href="https://twitter.com/DamyanPetev"&gt;&lt;em&gt;@DamyanPetev&lt;/em&gt;&lt;/a&gt;&lt;em&gt; and &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;p name="gotcha"&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;/p&gt; &lt;h1 id="tldr-summary" name="tldr-summary"&gt;TL;DR | Summary&lt;/h1&gt; &lt;p name="gotcha"&gt;In this article we covered the usage of the Merge Unbound Columns property and its vary important performance implications. A look at the inner workings of the grid’s server model provided some insight on what’s really happening and how that would affect your application. Furthermore, we saw how the merge can affect functionality such as the formula and how to overcome that, along with some additional client-side manipulation. Hopefully the blog also cleared any possible questions as to whether Unbound columns work well with other&amp;nbsp; Ignite UI Grid column options such as formatter functions or templates. &lt;/p&gt; &lt;p name="gotcha"&gt;I’ll end this in a manner similar to how it was started – saying that such a feature concerning something as underlying as columns types in the jQuery Grid can affect multiple behaviors and features and is by a long shot not a simple functionality, as I hope it has been made clear by now. For that reason, there are still more interesting topics to be discussed for the future.&lt;/p&gt;</description></item><item><title>jQuery Grid Checkbox Column alternatives (continue)</title><link>http://community.infragistics.com/blogs/damyan_petev/archive/2012/08/13/jquery-grid-checkbox-column-alternatives-continue.aspx</link><pubDate>Mon, 13 Aug 2012 14:40:00 GMT</pubDate><guid isPermaLink="false">7a8b7c76-b7ad-48e0-9694-5b04ca132ed0:367391</guid><dc:creator>dpetev</dc:creator><description>&lt;p&gt;This is the second part covering the topic of &lt;a title="jQuery Grid checkbox column alternatives" href="http://www.infragistics.com/community/blogs/damyan_petev/archive/2012/08/13/jquery-grid-checkbox-column-alternatives.aspx" target="_blank"&gt;jQuery Grid checkbox column alternatives&lt;/a&gt; and/or custom implementations. A quick recap: the &lt;a title="Checkbox column - NetAdvantage for jQuery Grid samples" href="http://www.infragistics.com/products/jquery/sample/grid/checkbox-column" target="_blank"&gt;Checkbox column&lt;/a&gt; is a feature that provides default setup to turn Boolean values in the &lt;a title="NetAdvantage jQuery Grid control" href="http://www.infragistics.com/products/jquery/grid/" target="_blank"&gt;jQuery grid&lt;/a&gt; into checkboxes. As I explained, however, defaults are never good enough for every scenario out there and the community brought up the limitation it has regarding coexistence with column and row templates. While there are valid reasons for that, there are also plenty of cases where&amp;nbsp; you want to go:&lt;/p&gt; &lt;p&gt;&lt;img title="jQuery Grid checkbox column alternative using template to enchance funtionality and match experience." alt="jQuery Grid checkbox column alternative using template to enchance funtionality and match experience." src="http://media.infragistics.com/community/Release/12.1/jQuery/Checkbox-Columns-Alternatives/jquery-grid-checkbox-column-alternative.png" /&gt;&lt;/p&gt; &lt;p&gt;Well, you are not seeing wrong – it does look essentially the same. It’s very simple really. Say, if an application has been using the checkboxes so far and (as it always happens) an idea emerges to add some additional functionality over existing/new column that requires using a template. So it’s reasonable to want keep the same UI as before, right?&lt;/p&gt; &lt;p&gt;Furthermore, as you may remember from the first blog, I don’t quite enjoy the looks on the default checkbox and god forbid the user is running some other OS… Now these checkboxes look just fantastic, so let’s see how we can use those instead.&lt;/p&gt; &lt;h1&gt;The Checkbox column feature to the rescue!&lt;/h1&gt; &lt;p&gt;Not seeing wrong again – what I realized while creating the input templates is that the default feature itself is one as well! The feature being there, the &lt;strong&gt;styles and other useful bits are there for us to put together as we see fit.&lt;/strong&gt; With that said, the first and the easiest thing to reuse is the checkbox column template and its styles.&lt;/p&gt; &lt;h3&gt;The template&lt;/h3&gt; &lt;p&gt;That template uses styled &lt;a title="w3schools.com: HTML &amp;lt;span&amp;gt; Tag" href="http://www.w3schools.com/tags/tag_span.asp" target="_blank"&gt;HTML Span&lt;/a&gt; tags along with CSS to create that UI element, which means it is completely open for styling and independent of OS or browser implementation. Here’s how a template like that would look like:&lt;/p&gt; &lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:cb5151db-f4f9-4e08-a64c-cea620b945e9" class="wlWriterEditableSmartContent"&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:500px;overflow:auto;"&gt; &lt;ol style="background:#ffffff;margin:0 0 0 2em;padding:0 0 0 5px;white-space:nowrap;"&gt; &lt;li&gt;&lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; checkboxTemplate = &lt;span style="color:#800000;"&gt;&amp;quot;&amp;lt;span style=&amp;#92;&amp;quot;width:100%;display:inline-block;overflow:hidden;text-align:center;&amp;#92;&amp;quot;&amp;gt;&amp;quot;&lt;/span&gt; + &lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;    &lt;span style="color:#800000;"&gt;&amp;quot;&amp;lt;span class=&amp;#92;&amp;quot;ui-state-default ui-corner-all ui-igcheckbox-small&amp;#92;&amp;quot;&amp;gt;&amp;quot;&lt;/span&gt; + &lt;/li&gt; &lt;li&gt;    &lt;span style="color:#800000;"&gt;&amp;quot;&amp;lt;span class=&amp;#92;&amp;quot;ui-icon ui-icon-check ui-igcheckbox-small-{{if ${SalariedFlag} === &amp;#92;&amp;quot;true&amp;#92;&amp;quot;}}on{{else}}off{{/if}}&amp;#92;&amp;quot;/&amp;gt;&amp;quot;&lt;/span&gt; + &lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;    &lt;span style="color:#800000;"&gt;&amp;quot;&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&amp;quot;&lt;/span&gt;;&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;p&gt;Now the structure for the spans:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;The outermost Span acts as a cell container spreading itself in the space available and allowing for the inner ones to be nicely centered. Optional.  &lt;li&gt;The middle one acts as the checkbox border. Required.  &lt;li&gt;The innermost is the empty/tick filling. The “ui-igcheckbox-small-off/on” are the respective styles. Note that the ‘off’ style overrides the ‘on’, so you can essentially have ‘on’ by default and add/remove ‘off’ as appropriate (that is exactly how it will be done later on). Also if you have noticed the ‘small’ component, there’s also a ‘normal’ version you can see in the &lt;a title="Row Selectors with Checkboxes - NetAdvantage for jQuery Grid samples" href="http://www.infragistics.com/products/jquery/sample/grid/row-selectors-with-checkboxes" target="_blank"&gt;Row Selectors feature&lt;/a&gt;. Required. &lt;/li&gt;&lt;/ul&gt; &lt;p&gt;The result from this are not surprising (we were after those anyway). The best part is that you get the same look as before(if you have been using the feature), you get an UI control that looks much better than the default and even bleds with the style of other controls. Moreover, it does not only fit in style, it matches the style of the &lt;a title="Row Selectors with Checkboxes - NetAdvantage for jQuery Grid samples" href="http://www.infragistics.com/products/jquery/sample/grid/row-selectors-with-checkboxes" target="_blank"&gt;Row Selectors&lt;/a&gt; (which I view as essential is both are used) and it matches the theme, since the looks come from the CSS and it comes from the theme. A sample grid definition using the above:&lt;/p&gt; &lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:2cb45ba9-d866-4c05-a712-d15d018feb0d" class="wlWriterEditableSmartContent"&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:300px;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;$.ig.loader(&lt;span style="color:#0000ff;"&gt;function&lt;/span&gt; () {&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;    $(&lt;span style="color:#800000;"&gt;&amp;quot;#grid&amp;quot;&lt;/span&gt;).igGrid({&lt;/li&gt; &lt;li&gt;        primaryKey: &lt;span style="color:#800000;"&gt;&amp;quot;BusinessEntityID&amp;quot;&lt;/span&gt;,&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;        height: 550,&lt;/li&gt; &lt;li&gt;        dataSource: &lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background:#ffff00;color:#800000;"&gt;@&lt;/span&gt;Url.Action(&lt;span style="color:#a31515;"&gt;&amp;quot;Employees&amp;quot;&lt;/span&gt;)&lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt;,&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;        autoGenerateColumns: &lt;span style="color:#0000ff;"&gt;false&lt;/span&gt;,&lt;/li&gt; &lt;li&gt;        columns: [&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;            { key: &lt;span style="color:#800000;"&gt;&amp;quot;BusinessEntityID&amp;quot;&lt;/span&gt;, width: &lt;span style="color:#800000;"&gt;&amp;quot;50px&amp;quot;&lt;/span&gt;, headerText: &lt;span style="color:#800000;"&gt;&amp;quot;ID&amp;quot;&lt;/span&gt;, dataType: &lt;span style="color:#800000;"&gt;&amp;quot;number&amp;quot;&lt;/span&gt; , template: &lt;span style="color:#800000;"&gt;&amp;quot;&amp;lt;a href=&amp;#92;&amp;quot;http://msdn.microsoft.com/en-us/library/ms124432(v=sql.100).aspx&amp;#92;&amp;quot;&amp;gt;${BusinessEntityID}&amp;lt;/a&amp;gt;&amp;quot;}&lt;/span&gt;,&lt;/li&gt; &lt;li&gt;            { key: &lt;span style="color:#800000;"&gt;&amp;quot;LoginID&amp;quot;&lt;/span&gt;, width: &lt;span style="color:#800000;"&gt;&amp;quot;250px&amp;quot;&lt;/span&gt;, headerText: &lt;span style="color:#800000;"&gt;&amp;quot;Login ID&amp;quot;&lt;/span&gt;, dataType: &lt;span style="color:#800000;"&gt;&amp;quot;string&amp;quot;&lt;/span&gt; },&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;            { key: &lt;span style="color:#800000;"&gt;&amp;quot;JobTitle&amp;quot;&lt;/span&gt;, width: &lt;span style="color:#800000;"&gt;&amp;quot;220px&amp;quot;&lt;/span&gt; , headerText: &lt;span style="color:#800000;"&gt;&amp;quot;Job Title&amp;quot;&lt;/span&gt;, dataType: &lt;span style="color:#800000;"&gt;&amp;quot;string&amp;quot;&lt;/span&gt; },&lt;/li&gt; &lt;li&gt;            { key: &lt;span style="color:#800000;"&gt;&amp;quot;SalariedFlag&amp;quot;&lt;/span&gt;, width: &lt;span style="color:#800000;"&gt;&amp;quot;120px&amp;quot;&lt;/span&gt;, headerText: &lt;span style="color:#800000;"&gt;&amp;quot;SalariedFlag&amp;quot;&lt;/span&gt;, dataType: &lt;span style="color:#800000;"&gt;&amp;quot;bool&amp;quot;&lt;/span&gt;, template: checkboxTemplate },&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;            { key: &lt;span style="color:#800000;"&gt;&amp;quot;CurrentFlag&amp;quot;&lt;/span&gt;, width: &lt;span style="color:#800000;"&gt;&amp;quot;100px&amp;quot;&lt;/span&gt;,headerText: &lt;span style="color:#800000;"&gt;&amp;quot;Current Flag&amp;quot;&lt;/span&gt;, dataType: &lt;span style="color:#800000;"&gt;&amp;quot;bool&amp;quot;&lt;/span&gt; , template: &lt;span style="color:#800000;"&gt;&amp;quot;&amp;lt;span style=&amp;#92;&amp;quot;width:100%;display:inline-block;overflow:hidden;text-align:center;&amp;#92;&amp;quot;&amp;gt;&amp;lt;span class=&amp;#92;&amp;quot;ui-state-default ui-corner-all ui-igcheckbox-normal&amp;#92;&amp;quot;&amp;gt;&amp;lt;span class=&amp;#92;&amp;quot;ui-icon ui-icon-check ui-igcheckbox-normal-on{{if ${CurrentFlag} === &amp;#92;&amp;quot;true&amp;#92;&amp;quot;}} {{else}} ui-igcheckbox-normal-off{{/if}}&amp;#92;&amp;quot;/&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&amp;quot;}&lt;/span&gt;&lt;/li&gt; &lt;li&gt;             ],&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;        features: [&lt;/li&gt; &lt;li&gt;            { name: &lt;span style="color:#800000;"&gt;&amp;quot;Filtering&amp;quot;&lt;/span&gt;, mode: &lt;span style="color:#800000;"&gt;&amp;quot;advanced&amp;quot;&lt;/span&gt;, type: &lt;span style="color:#800000;"&gt;&amp;quot;local&amp;quot;&lt;/span&gt; },&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;            { name: &lt;span style="color:#800000;"&gt;&amp;quot;Sorting&amp;quot;&lt;/span&gt;, type: &lt;span style="color:#800000;"&gt;&amp;quot;local&amp;quot;&lt;/span&gt; },&lt;/li&gt; &lt;li&gt;            { name: &lt;span style="color:#800000;"&gt;&amp;quot;Updating&amp;quot;&lt;/span&gt;, editMode: &lt;span style="color:#800000;"&gt;&amp;#39;none&amp;#39;}&lt;/span&gt;]&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;    });&lt;/li&gt; &lt;li&gt;});&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;p&gt;The resulting grid with both small (default) checkboxes on the ‘Salaried’ column and ‘normal’ on the “Current Flag”:&lt;/p&gt; &lt;p&gt;&lt;img title="Checkbox columns using the default feature&amp;#39;s template." alt="Checkbox columns using the default feature&amp;#39;s template." src="http://media.infragistics.com/community/Release/12.1/jQuery/Checkbox-Columns-Alternatives/checkbox-column-default-template.png" /&gt;&lt;/p&gt; &lt;p&gt;And, yes, they go Metro or Modern UI (guess that is how it will be called now) if you apply the ‘metro’ theme:&lt;/p&gt; &lt;p&gt;&lt;img title="Checkbox columns using the default feature&amp;#39;s template with metro / modern theme applied." alt="Checkbox columns using the default feature&amp;#39;s template with metro / modern theme applied." src="http://media.infragistics.com/community/Release/12.1/jQuery/Checkbox-Columns-Alternatives/checkbox-column-default-template-modern-metro.png" /&gt;&lt;/p&gt; &lt;p&gt;As you can see since the values are Boolean the columns have no trouble with other Grid features.&lt;/p&gt; &lt;h3&gt;One-click inline value updates&lt;/h3&gt; &lt;p&gt;Of course, just like the previous solution you can hook up to the click event to handle user interaction without entering editing mode. Like before, using the &lt;a title="INFRAGISTICS NETADVANTAGE JQUERY API REFERENCE - Updating" href="http://help.infragistics.com/jQuery/2012.1/ui.iggridupdating#methods" target="_blank"&gt;Updating API&lt;/a&gt; will require the feature itself to be loaded and initialized with the grid (&lt;a title="NetAdvantage&amp;reg; jQuery Online Help : igGrid Updating" href="http://help.infragistics.com/NetAdvantage/jQuery/2012.1/CLR4.0?page=igGrid_Updating.html#enabling_updating" target="_blank"&gt;&lt;img title="NetAdvantage&amp;reg; jQuery Online Help : igGrid Updating" alt="NetAdvantage&amp;reg; jQuery Online Help : igGrid Updating" src="http://users.infragistics.com/dpetev/external_link.PNG" /&gt;&lt;/a&gt;). This time, however we have two columns this time. The options are two – duplicate the event handler for each column or simply pass on the column key to the function and use that instead of static value:&lt;/p&gt; &lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:cf618134-9631-43c6-9542-bb71b816c0c8" class="wlWriterEditableSmartContent"&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:300px;overflow:auto;"&gt; &lt;ol style="background:#ffffff;margin:0 0 0 2em;padding:0 0 0 5px;white-space:nowrap;"&gt; &lt;li&gt;&lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; checkboxTemplate = &lt;span style="color:#800000;"&gt;&amp;quot;&amp;lt;span style=&amp;#92;&amp;quot;width:100%;display:inline-block;overflow:hidden;text-align:center;&amp;#92;&amp;quot;&amp;gt;&amp;quot;&lt;/span&gt; + &lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;    &lt;span style="color:#800000;"&gt;&amp;quot;&amp;lt;span class=&amp;#92;&amp;quot;ui-state-default ui-corner-all ui-igcheckbox-small&amp;#92;&amp;quot;&amp;gt;&amp;quot;&lt;/span&gt; + &lt;/li&gt; &lt;li&gt;    &lt;span style="color:#800000;"&gt;&amp;quot;&amp;lt;span class=&amp;#92;&amp;quot;ui-icon ui-icon-check ui-igcheckbox-small-{{if ${SalariedFlag} === &amp;#92;&amp;quot;true&amp;#92;&amp;quot;}}on{{else}}off{{/if}}&amp;#92;&amp;quot;&amp;quot;&lt;/span&gt; + &lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;    &lt;span style="color:#800000;"&gt;&amp;quot; data-rowid=&amp;#92;&amp;quot;${BusinessEntityID}&amp;#92;&amp;quot;  onclick=&amp;#92;&amp;quot;checkboxChanged(event, &amp;#39;SalariedFlag&amp;#39;);&amp;#92;&amp;quot;/&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&amp;quot;&lt;/span&gt;;&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;p&gt;The ‘data-‘ attribute will be used to keep track of the row key and the column is passed to the handler. Some minor tweaks regarding the different availability of properties for browser support and the final snippet looks like this:&lt;/p&gt; &lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:664c43f1-7646-470f-8a14-32bf514fcc6f" class="wlWriterEditableSmartContent"&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:300px;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="color:#0000ff;"&gt;function&lt;/span&gt; checkboxChanged(evt, colId) {&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;    &lt;span style="color:#006400;"&gt;// for IE &amp;lt; 9 currentTarget is srcElement&lt;/span&gt;&lt;/li&gt; &lt;li&gt;    &lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; element = evt.currentTarget || evt.srcElement; &lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;    &lt;span style="color:#006400;"&gt;// get rowID where change occured:&lt;/span&gt;&lt;/li&gt; &lt;li&gt;    &lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; rowId = $(element).data().rowid;&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;    &lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; newValue;&lt;/li&gt; &lt;li&gt;    &lt;span style="color:#006400;"&gt;//IE doesn&amp;#39;t have classList so check and use Name instead&lt;/span&gt;&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;    &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (element.classList){&lt;/li&gt; &lt;li&gt;        newValue = element.classList.contains(&lt;span style="color:#800000;"&gt;&amp;quot;ui-igcheckbox-small-on&amp;quot;&lt;/span&gt;) ? &lt;span style="color:#0000ff;"&gt;false&lt;/span&gt; : &lt;span style="color:#0000ff;"&gt;true&lt;/span&gt;;&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;    }&lt;/li&gt; &lt;li&gt;    &lt;span style="color:#0000ff;"&gt;else{&lt;/span&gt;&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;        newValue = element.className.indexOf(&lt;span style="color:#800000;"&gt;&amp;quot;ui-igcheckbox-small-on&amp;quot;&lt;/span&gt;) &amp;gt;= 0 ? &lt;span style="color:#0000ff;"&gt;false&lt;/span&gt; : &lt;span style="color:#0000ff;"&gt;true&lt;/span&gt;;&lt;/li&gt; &lt;li&gt;    }&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;    $(&lt;span style="color:#800000;"&gt;&amp;quot;#grid&amp;quot;&lt;/span&gt;).igGridUpdating(&lt;span style="color:#800000;"&gt;&amp;quot;setCellValue&amp;quot;&lt;/span&gt;, rowId, colId, newValue);&lt;/li&gt; &lt;li&gt;}&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;p&gt;The idea is very simple – if click has occurred it means the value should change and it should be the opposite of what it was right now – so we check if ‘on’ style is applied. Note, that I mentioned ‘off’ is the overwriting one, however in this case updating the cell value with an &lt;a title="INFRAGISTICS NETADVANTAGE JQUERY API REFERENCE - Updating" href="http://help.infragistics.com/jQuery/2012.1/ui.iggridupdating#methods" target="_blank"&gt;Updating method&lt;/a&gt; causes the UI to update and therefore the template is reapplied and the ‘on’ style won’t be there if the value is false.&lt;/p&gt; &lt;h3&gt;Editing Action&lt;/h3&gt; &lt;p&gt;There’s one more &lt;strong&gt;awesome part of the Checkbox column feature that can be reused&lt;/strong&gt;. In the first blog I mentioned you can define your own Editor Provider. If you look up the &lt;a title="INFRAGISTICS NETADVANTAGE JQUERY API REFERENCE" href="http://help.infragistics.com/jQuery/2012.1/ui.iggridupdating#options" target="_blank"&gt;Grid Updating API reference&lt;/a&gt; you can see a ‘columnSetting’ that allows to set an Editor Provider and it “should extend $.ig.EditorProviderDefault or it should have definitions of all its methods”. Now that can take some coding, but guess what – the Checkbox column already has one defined! So this is how you use it:&lt;/p&gt; &lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:ba004b7a-7347-461a-9410-3e5d1d1e4bdb" class="wlWriterEditableSmartContent"&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:300px;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;$.ig.loader(&lt;span style="color:#0000ff;"&gt;function&lt;/span&gt; () {&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;    $(&lt;span style="color:#800000;"&gt;&amp;quot;#grid&amp;quot;&lt;/span&gt;).igGrid({&lt;/li&gt; &lt;li&gt;        primaryKey: &lt;span style="color:#800000;"&gt;&amp;quot;BusinessEntityID&amp;quot;&lt;/span&gt;,&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;        height: 550,&lt;/li&gt; &lt;li&gt;        dataSource: &lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background:#ffff00;color:#800000;"&gt;@&lt;/span&gt;Url.Action(&lt;span style="color:#a31515;"&gt;&amp;quot;Employees&amp;quot;&lt;/span&gt;)&lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt;,&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;        autoGenerateColumns: &lt;span style="color:#0000ff;"&gt;false&lt;/span&gt;,&lt;/li&gt; &lt;li&gt;        columns: [&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;            { key: &lt;span style="color:#800000;"&gt;&amp;quot;BusinessEntityID&amp;quot;&lt;/span&gt;, width: &lt;span style="color:#800000;"&gt;&amp;quot;50px&amp;quot;&lt;/span&gt;, headerText: &lt;span style="color:#800000;"&gt;&amp;quot;ID&amp;quot;&lt;/span&gt;, dataType: &lt;span style="color:#800000;"&gt;&amp;quot;number&amp;quot;&lt;/span&gt; , template: &lt;span style="color:#800000;"&gt;&amp;quot;&amp;lt;a style=&amp;#92;&amp;quot;font-size:20px;&amp;#92;&amp;quot; href=&amp;#92;&amp;quot;http://msdn.microsoft.com/en-us/library/ms124432(v=sql.100).aspx&amp;#92;&amp;quot;&amp;gt;${BusinessEntityID}&amp;lt;/a&amp;gt;&amp;quot;}&lt;/span&gt;,&lt;/li&gt; &lt;li&gt;            { key: &lt;span style="color:#800000;"&gt;&amp;quot;LoginID&amp;quot;&lt;/span&gt;, width: &lt;span style="color:#800000;"&gt;&amp;quot;250px&amp;quot;&lt;/span&gt;, headerText: &lt;span style="color:#800000;"&gt;&amp;quot;Login ID&amp;quot;&lt;/span&gt;, dataType: &lt;span style="color:#800000;"&gt;&amp;quot;string&amp;quot;&lt;/span&gt; },&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;            { key: &lt;span style="color:#800000;"&gt;&amp;quot;JobTitle&amp;quot;&lt;/span&gt;, width: &lt;span style="color:#800000;"&gt;&amp;quot;220px&amp;quot;&lt;/span&gt; , headerText: &lt;span style="color:#800000;"&gt;&amp;quot;Job Title&amp;quot;&lt;/span&gt;, dataType: &lt;span style="color:#800000;"&gt;&amp;quot;string&amp;quot;&lt;/span&gt; },&lt;/li&gt; &lt;li&gt;            { key: &lt;span style="color:#800000;"&gt;&amp;quot;SalariedFlag&amp;quot;&lt;/span&gt;, width: &lt;span style="color:#800000;"&gt;&amp;quot;150px&amp;quot;&lt;/span&gt;, headerText: &lt;span style="color:#800000;"&gt;&amp;quot;SalariedFlag&amp;quot;&lt;/span&gt;, dataType: &lt;span style="color:#800000;"&gt;&amp;quot;bool&amp;quot;&lt;/span&gt;, template: checkboxTemplate}&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;        ],&lt;/li&gt; &lt;li&gt;        features: [&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;            { name: &lt;span style="color:#800000;"&gt;&amp;quot;Filtering&amp;quot;&lt;/span&gt;, mode: &lt;span style="color:#800000;"&gt;&amp;quot;advanced&amp;quot;&lt;/span&gt;, type: &lt;span style="color:#800000;"&gt;&amp;quot;local&amp;quot;&lt;/span&gt; },&lt;/li&gt; &lt;li&gt;            { name: &lt;span style="color:#800000;"&gt;&amp;quot;Sorting&amp;quot;&lt;/span&gt;, type: &lt;span style="color:#800000;"&gt;&amp;quot;local&amp;quot;&lt;/span&gt; },&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;            { name: &lt;span style="color:#800000;"&gt;&amp;quot;Updating&amp;quot;&lt;/span&gt;, columnSettings: [{ columnKey: &lt;span style="color:#800000;"&gt;&amp;quot;SalariedFlag&amp;quot;&lt;/span&gt;, editorProvider: &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; $.ig.CustomEditorProviderCheckbox()} ]}]&lt;/li&gt; &lt;li&gt;    });&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;});&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;p&gt;At line 16 – simple and very effective. Now when you enter edit mode you get a proper (and consistent) experience. And it’s really that simple:&lt;/p&gt; &lt;p&gt;&lt;img title="The editor created by the checkbox provider." alt="The editor created by the checkbox provider." src="http://media.infragistics.com/community/Release/12.1/jQuery/Checkbox-Columns-Alternatives/checkbox-column-editor.png" /&gt;&lt;/p&gt; &lt;h3&gt;Editor provider&lt;/h3&gt; &lt;p&gt;The default provider shown above doesn’t quite meet the requirements? Then we’ll use a custom one and throw in some non-Boolean values in the mix for a good measure. As explained, you have a whole bunch of Editor provider for the needs of updating along with a default one that is recommended for customization. In our case, however, we can extend the checkbox provider instead and &lt;strong&gt;only implement the differences.&lt;/strong&gt; Let me explain the basics of a provider – it’s a class with a few essential methods – one for creating an editor (this one gets called by &lt;a title="igGrid Updating : Infragistics(R) NetAdvantage(R) jQuery" href="http://help.infragistics.com/NetAdvantage/jQuery/2012.1/CLR4.0?page=igGrid_Updating.html" target="_blank"&gt;Updating&lt;/a&gt; when edit mode gets activated and returns the actual editing element), one for getting and one for setting values. Then you have focus, size and validation managing, but those are implemented or don’t concern our type of provider. This is the basic flow of method execution to give you an idea why each method does what it does:&lt;/p&gt; &lt;p&gt;&lt;img title="Generalized flow of events and resulting method calls for the Updating editors." alt="Generalized flow of events and resulting method calls for the Updating editors." src="http://media.infragistics.com/community/Release/12.1/jQuery/Checkbox-Columns-Alternatives/checkbox-editor-provider-flow.png" /&gt;&lt;/p&gt; &lt;p&gt;For example, if again you need to support values different than Boolean, you can use your template as usual and override the get and set value methods of the provider to have a nice checkbox editor as well – &lt;strong&gt;no read-only and no flicker.&lt;/strong&gt; Plus it’s even quite easy to implement as well. For the case from the last blog and any other case of random ‘acceptable’ values and &lt;a title="What values are equivalent to false in JavaScript" href="http://www.javascriptexamples.org/2011/01/04/what-values-are-equivalent-to-false-in-javascript/" target="_blank"&gt;false equivalents&lt;/a&gt; means we don’t need to modify the setValue method as..well numbers and strings will evaluate as true and null-s will evaluate as false and it’ll work just fine to display the value in the editor. So it’s just the get and it’s almost amusingly easy:&lt;/p&gt; &lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:8044ab0d-9b68-4a4c-aa7e-b4d15e97467e" class="wlWriterEditableSmartContent"&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:300px;overflow:auto;"&gt; &lt;ol style="background:#ffffff;margin:0 0 0 2em;padding:0 0 0 5px;"&gt; &lt;li&gt;$.ig.CustomEditorProviderCheckbox = $.ig.CustomEditorProviderCheckbox || $.ig.EditorProviderCheckbox.extend({&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;    getValue: &lt;span style="color:#0000ff;"&gt;function&lt;/span&gt; () {&lt;/li&gt; &lt;li&gt;        &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;.value ? 10 : &lt;span style="color:#0000ff;"&gt;null&lt;/span&gt;;&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;    }&lt;/li&gt; &lt;li&gt;});&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;p&gt;Now say that those values won’t evaluate as expected (even though they currently do), you will have to also override the setValue and call the super-class’ method with the desired output:&lt;/p&gt; &lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:4adf4f62-9637-4b00-8dd5-482dcf9794a1" class="wlWriterEditableSmartContent"&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:300px;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;$.ig.CustomEditorProviderCheckbox = $.ig.CustomEditorProviderCheckbox || $.ig.EditorProviderCheckbox.extend({&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;    getValue: &lt;span style="color:#0000ff;"&gt;function&lt;/span&gt; () {&lt;/li&gt; &lt;li&gt;        &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;.value ? 10 : &lt;span style="color:#0000ff;"&gt;null&lt;/span&gt;;&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;    },&lt;/li&gt; &lt;li&gt;    setValue: &lt;span style="color:#0000ff;"&gt;function&lt;/span&gt; (val, updating) {&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;      val = parseInt(val) ? &lt;span style="color:#0000ff;"&gt;true&lt;/span&gt; : &lt;span style="color:#0000ff;"&gt;false&lt;/span&gt;;&lt;/li&gt; &lt;li&gt;      &lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;._super(val, updating);&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;    }&lt;/li&gt; &lt;li&gt;});&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;p&gt;And if all that is not enough you can always go further – change the UI rendered for the Editor in the create method, change the way&amp;nbsp; interaction affects the value in the set method and so on. But that’s a whole separate topic or more like a topic per type of provider as most of them have their special requirements and implementations.&lt;/p&gt; &lt;p&gt;The rest is pretty clear – same template style as in the ‘Editing Action’ part only with parseInt instead like in the previous blog. And again, using the column settings for Updating you set the provider of the desired column to be a new ‘$.ig.CustomEditorProviderCheckbox()’.&lt;/p&gt; &lt;h3&gt;Comparison&lt;/h3&gt; &lt;h5&gt;PROS&lt;/h5&gt; &lt;ul&gt; &lt;li&gt;Will work with other templates.  &lt;li&gt;Easy to implement - 1 line for simple scenarios or one more to set the provider.  &lt;li&gt;Consistent looks – fits with the rest of the grid parts and matches theme.  &lt;li&gt;Excellent editing by reusing the default checkbox editor provider.  &lt;li&gt;Again not limited to just Boolean values.  &lt;li&gt;Also not limited to a bi-state checkbox, an tri-state checkbox can be potentially implemented(&lt;a title="JSFiddle showing a simple 3-state checkbox implementation." href="http://jsfiddle.net/98BMK/" target="_blank"&gt;&lt;img title="JSFiddle showing a simple 3-state checkbox implementation." alt="JSFiddle showing a simple 3-state checkbox implementation." src="http://users.infragistics.com/dpetev/external_link.PNG" /&gt;&lt;/a&gt;) &lt;/li&gt;&lt;/ul&gt; &lt;h5&gt;CONS&lt;/h5&gt; &lt;ul&gt; &lt;li&gt;Can require some code to implement with non-Boolean values, although as shown even there you can spare yourself most of the work.  &lt;li&gt;Does require a little work to add that ‘single-click update’ functionality. I could argue it’s well worth it.  &lt;li&gt;Nothing else I can see, really. &lt;/li&gt;&lt;/ul&gt; &lt;h1&gt;Conclusions&lt;/h1&gt; &lt;p&gt;I hope this has been educational and occasionally useful. I also hope that it’s been made clear that defaults are not your only option and not only is it easy to create custom solutions but also recycling parts of available ones makes it that much better. The way the data is represented is completely arbitrary from the actual values and not only the good old forms elements or the modified ones with consistent looks can be used – at this point you can replace the checkbox with slider/toggle button and you can use similar approach to modify any other type of data representation. Because, in the end, the jQuery Grid and its features have proven to be very customizable and in most cases always have the right property, method or event to help a developer create awesome experiences!&lt;/p&gt; &lt;p&gt;&lt;em&gt;&lt;a title="ASP.NET MVC project demonstrating different features discussed above - both jQuery only and MVC grid setup." href="http://media.infragistics.com/community/Release/12.1/jQuery/Checkbox-Columns-Alternatives/CheckboxAlternatives2.zip"&gt;Demo project is available for download&lt;/a&gt;. As always, you can follow us on Twitter &lt;/em&gt;&lt;a title="That would be me!" href="https://twitter.com/DamyanPetev"&gt;&lt;em&gt;@DamyanPetev&lt;/em&gt;&lt;/a&gt;&lt;em&gt; and &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;</description></item><item><title>jQuery Grid Checkbox Column alternatives</title><link>http://community.infragistics.com/blogs/damyan_petev/archive/2012/08/13/jquery-grid-checkbox-column-alternatives.aspx</link><pubDate>Mon, 13 Aug 2012 07:16:00 GMT</pubDate><guid isPermaLink="false">7a8b7c76-b7ad-48e0-9694-5b04ca132ed0:367267</guid><dc:creator>dpetev</dc:creator><description>&lt;p&gt;The checkbox column (introduced with the last release, see &lt;a title="Using Checkbox Columns with the Infragistics jQuery Grid" href="http://www.infragistics.com/community/blogs/jordan_tsankov/archive/2012/04/26/using-checkbox-columns-with-the-infrtagistics-jquery-grid.aspx" target="_blank"&gt;this post on Using Checkbox Columns with the Infragistics jQuery Grid&lt;/a&gt;) was created to provide a ‘shortcut’ for transforming columns with Boolean values into checkboxes and mostly became reality due to the great interest in such functionality from customers (and after all it does make perfect sense).&lt;/p&gt; &lt;p&gt;&lt;img title="jQuery Grid Checkbox column" alt="jQuery Grid Checkbox column" src="http://media.infragistics.com/community/Release/12.1/jQuery/Checkbox-Columns-Alternatives/jquery-grid-checkbox-column.png" /&gt;&lt;/p&gt; &lt;p&gt;Of course, this isn’t a perfect world and creating defaults that can fit everyone’s needs is probably a lost cause. If you take a look at the introductory blog above, it is indeed saving tons of time – setting a single property is all it takes. That’s good and all, but as it can even be seen in the comments there and on our forums ( &lt;a title="A post about " href="http://www.infragistics.com/community/forums/p/71833/363370.aspx#363518" target="_blank"&gt;this post&lt;/a&gt; for example) there is a limitation – the checkbox column works just great, but it goes all shy when some templating is involved.&lt;/p&gt; &lt;h1&gt;The problem&lt;/h1&gt; &lt;p&gt;In the &lt;a title="INFRAGISTICS NETADVANTAGE JQUERY API REFERENCE" href="http://help.infragistics.com/jQuery/2012.1/ui.iggrid#options" target="_blank"&gt;Grid API reference&lt;/a&gt; under ‘renderCheckboxes’ it says “That option is not available when jQueryTemplating is used.” That’s just a slight bit misleading and is most certainly going to get updated, since this does, in fact, include our own &lt;a title="High performance jQuery templating engine" href="http://www.infragistics.com/products/jquery/templating-engine" target="_blank"&gt;Templating Engine&lt;/a&gt;. So in essence the above should be read as ‘That option is not available when Templating is used’. That is because, by design, the Checkbox column feature is suppressed in such cases, as a row template may have its own rendering for the column.&lt;/p&gt; &lt;p&gt;That may or may not be an intuitive explanation as to why it will not be available with column template as well, but once you think about it – the grid renders rows, it has a default template to do that – a row template. You defining a column simply ends up being included somewhere along the way in that row template, instead of the default. That is why, templating in general will disable this feature.&lt;/p&gt; &lt;p&gt;But not to worry, there are options as always. I stumbled upon this and since customer feedback pointed this out for us (Keep it up, we like constructive feedback!) in this blog I’ll share my experience with coming up for alternative ways&amp;nbsp; to have such functionality.&lt;/p&gt; &lt;h1&gt;A solution&lt;/h1&gt; &lt;h3&gt;Template Checkbox&lt;/h3&gt; &lt;p&gt;Odd enough the problem is also main part of the solutions as it is the easiest way to alter the UI representation of your data and is also very flexible to be tweaked to your liking. Using this to add checkboxes in not all new (&lt;a title="Forums &amp;raquo; NetAdvantage for jQuery &amp;raquo; igGrid &amp;raquo; Infragistics IGGrid with checkbox" href="http://www.infragistics.com/community/forums/p/64525/339865.aspx" target="_blank"&gt;&lt;img title="Forums &amp;raquo; NetAdvantage for jQuery &amp;raquo; igGrid &amp;raquo; Infragistics IGGrid with checkbox" alt="Forums &amp;raquo; NetAdvantage for jQuery &amp;raquo; igGrid &amp;raquo; Infragistics IGGrid with checkbox" src="http://users.infragistics.com/dpetev/external_link.PNG" /&gt;&lt;/a&gt;) and as mentioned the feature itself is meant to be a shortcut for that.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;A fair warning:&lt;/strong&gt;&amp;nbsp; I&amp;#39;m sharing my experience and because of that I’ll go through two different approaches I took. Before diving in using one, make sure you have seen and considered both.&lt;/p&gt; &lt;p&gt;So the first approach is to use a plain HTML input of type checkbox tag and assign it our value. This is the approach you can see in both forum posts linked above as well. You can apply the template to your row template (if you are already using one) or simple assign it to a single column. For demonstration purposes I’ll use the Employees table from AdventureWorks (&lt;a title="AdventureWorks Sample Databases (MSDN)" href="http://msdn.microsoft.com/en-us/library/ms124501(v=sql.100).aspx" target="_blank"&gt;&lt;img title="AdventureWorks Sample Databases (MSDN)" alt="AdventureWorks Sample Databases (MSDN)" src="http://users.infragistics.com/dpetev/external_link.PNG" /&gt;&lt;/a&gt;) for the Salaried flag column and here is how a grid configuration would look like:&lt;/p&gt; &lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:7b07df02-b2ae-4146-be48-a75cf599dd60" class="wlWriterEditableSmartContent"&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:300px;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="color:#800000;"&gt;&amp;quot;#grid&amp;quot;&lt;/span&gt;).igGrid({&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;    primaryKey: &lt;span style="color:#800000;"&gt;&amp;quot;BusinessEntityID&amp;quot;&lt;/span&gt;,&lt;/li&gt; &lt;li&gt;    height: 550,&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;    dataSource: &lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background:#ffff00;color:#800000;"&gt;@&lt;/span&gt;Url.Action(&lt;span style="color:#a31515;"&gt;&amp;quot;Employees&amp;quot;&lt;/span&gt;)&lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt;,&lt;/li&gt; &lt;li&gt;    autoGenerateColumns: &lt;span style="color:#0000ff;"&gt;false&lt;/span&gt;,&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;    columns: [&lt;/li&gt; &lt;li&gt;        { key: &lt;span style="color:#800000;"&gt;&amp;quot;BusinessEntityID&amp;quot;&lt;/span&gt;, width: &lt;span style="color:#800000;"&gt;&amp;quot;50px&amp;quot;&lt;/span&gt;, headerText: &lt;span style="color:#800000;"&gt;&amp;quot;ID&amp;quot;&lt;/span&gt;, dataType: &lt;span style="color:#800000;"&gt;&amp;quot;number&amp;quot;&lt;/span&gt; , template: &lt;span style="color:#800000;"&gt;&amp;quot;&amp;lt;a style=&amp;#92;&amp;quot;font-size:20px;&amp;#92;&amp;quot; href=&amp;#92;&amp;quot;http://msdn.microsoft.com/en-us/library/ms124432(v=sql.100).aspx&amp;#92;&amp;quot;&amp;gt;${BusinessEntityID}&amp;lt;/a&amp;gt;&amp;quot;}&lt;/span&gt;,&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;        { key: &lt;span style="color:#800000;"&gt;&amp;quot;LoginID&amp;quot;&lt;/span&gt;, width: &lt;span style="color:#800000;"&gt;&amp;quot;250px&amp;quot;&lt;/span&gt;, headerText: &lt;span style="color:#800000;"&gt;&amp;quot;Login ID&amp;quot;&lt;/span&gt;, dataType: &lt;span style="color:#800000;"&gt;&amp;quot;string&amp;quot;&lt;/span&gt; },&lt;/li&gt; &lt;li&gt;        { key: &lt;span style="color:#800000;"&gt;&amp;quot;JobTitle&amp;quot;&lt;/span&gt;, width: &lt;span style="color:#800000;"&gt;&amp;quot;220px&amp;quot;&lt;/span&gt; , headerText: &lt;span style="color:#800000;"&gt;&amp;quot;Job Title&amp;quot;&lt;/span&gt;, dataType: &lt;span style="color:#800000;"&gt;&amp;quot;string&amp;quot;&lt;/span&gt; },&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;        { key: &lt;span style="color:#800000;"&gt;&amp;quot;SalariedFlag&amp;quot;&lt;/span&gt;, width: &lt;span style="color:#800000;"&gt;&amp;quot;120px&amp;quot;&lt;/span&gt;, headerText: &lt;span style="color:#800000;"&gt;&amp;quot;SalariedFlag&amp;quot;&lt;/span&gt;, dataType: &lt;span style="color:#800000;"&gt;&amp;quot;bool&amp;quot;&lt;/span&gt;, template: &lt;span style="color:#800000;"&gt;&amp;quot;&amp;lt;input type=&amp;#92;&amp;quot;checkbox&amp;#92;&amp;quot; {{if ${SalariedFlag} === &amp;#92;&amp;quot;true&amp;#92;&amp;quot;}} checked=&amp;#92;&amp;quot;checked&amp;#92;&amp;quot; {{/if}} disabled=&amp;#92;&amp;quot;disabled&amp;#92;&amp;quot; style=&amp;#92;&amp;quot;display: block; margin-left: auto; margin-right: auto;&amp;#92;&amp;quot;&amp;gt;&amp;quot;}&lt;/span&gt;&lt;/li&gt; &lt;li&gt;    ],&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;    &lt;span style="color:#ff0000;"&gt;features&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;:&lt;/span&gt; [&lt;/li&gt; &lt;li&gt;        { &lt;span style="color:#ff0000;"&gt;name&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;:&lt;/span&gt; &lt;span style="color:#800000;"&gt;&amp;quot;Filtering&amp;quot;&lt;/span&gt;, &lt;span style="color:#ff0000;"&gt;mode&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;:&lt;/span&gt; &lt;span style="color:#800000;"&gt;&amp;quot;advanced&amp;quot;&lt;/span&gt;, &lt;span style="color:#ff0000;"&gt;type&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;:&lt;/span&gt; &lt;span style="color:#800000;"&gt;&amp;quot;local&amp;quot;&lt;/span&gt; },&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;        { &lt;span style="color:#ff0000;"&gt;name&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;:&lt;/span&gt; &lt;span style="color:#800000;"&gt;&amp;quot;Sorting&amp;quot;&lt;/span&gt;, &lt;span style="color:#ff0000;"&gt;type&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;:&lt;/span&gt; &lt;span style="color:#800000;"&gt;&amp;quot;local&amp;quot;&lt;/span&gt; }]&lt;/li&gt; &lt;li&gt;});&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;p&gt;Do note that the first column also has a template – a link to the very same table’s description on MSDN – and, as it is visible, that does not stop the checkboxes from appearing in addition to working just fine with features such as sorting and filtering:&lt;/p&gt; &lt;p&gt;&lt;img title="A basic alternative to the checkbox column using template and simple HTML input type checkbox." alt="A basic alternative to the checkbox column using template and simple HTML input type checkbox." src="http://media.infragistics.com/community/Release/12.1/jQuery/Checkbox-Columns-Alternatives/basic-alternative-checkbox-column.png" /&gt;&lt;/p&gt; &lt;h3&gt;Enhancements&lt;/h3&gt; &lt;p&gt;The above template is but a mere rendering tweak and doesn’t come with an interaction package. One other fair point made by customers is that the default interaction can be improved as &lt;a title="Forums &amp;raquo; NetAdvantage for jQuery &amp;raquo; igGrid &amp;raquo; Checkbox column requires 3 clicks to update" href="http://www.infragistics.com/community/forums/p/71578/361919.aspx" target="_blank"&gt;Checkbox column requires 3 clicks to update&lt;/a&gt; – which is how row editing with selection behaves – 1 click to select, another to enter edit and third to change the value. Event though this wasn’t the original issue, since you are now in control of the checkboxes, why not improve things a bit?&lt;/p&gt; &lt;p&gt;The first step is to remove the disabled part, of course. Then you would need to handle user interaction with the checkbox – so add something along the lines of:&lt;/p&gt; &lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:2385c2fd-fd9b-4171-ac90-35375e4adf9e" class="wlWriterEditableSmartContent"&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:#fff;max-height:300px;overflow:auto;"&gt; &lt;ol style="background:#ffffff;margin:0;padding:0 0 0 5px;"&gt; &lt;li&gt;&lt;span style="color:#800000;"&gt; data-rowid=&amp;#92;&amp;quot;${BusinessEntityID}&amp;#92;&amp;quot; onchange=&amp;#92;&amp;quot;checkboxChanged(event);&amp;#92;&amp;quot;&lt;/span&gt;&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;p&gt;to the template. For enabled checkbox inputs onchange and click events are basically interchangeable, so pick one, but the name of the parameter passed to the handle &lt;strong&gt;*must* &lt;/strong&gt;be ‘event’. The ‘data-‘ attribute is the easiest way to store information for the checkbox location – the grid does the same thing with rows elements if you take a closer look and it’s much easier to store it at creation as you then have access to the separate row data entry and will hardly add any overhead. Now just how easy it is with the &lt;a title="INFRAGISTICS NETADVANTAGE JQUERY API REFERENCE - Updating" href="http://help.infragistics.com/jQuery/2012.1/ui.iggridupdating#methods" target="_blank"&gt;Updating API&lt;/a&gt; to put that template to use:&lt;/p&gt; &lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:1599d14d-9e9f-41d1-b309-4311ba82c7bb" class="wlWriterEditableSmartContent"&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:300px;overflow:auto;"&gt; &lt;ol style="background:#ffffff;margin:0 0 0 2em;padding:0 0 0 5px;white-space:nowrap;"&gt; &lt;li&gt;&lt;span style="color:#0000ff;"&gt;function&lt;/span&gt; checkboxChanged(evt) {&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;    &lt;span style="color:#006400;"&gt;// get rowID where change occured:&lt;/span&gt;&lt;/li&gt; &lt;li&gt;    &lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; rowId = $(evt.currentTarget).data().rowid;&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;    $(&lt;span style="color:#800000;"&gt;&amp;quot;#grid&amp;quot;&lt;/span&gt;).igGridUpdating(&lt;span style="color:#800000;"&gt;&amp;quot;updateRow&amp;quot;&lt;/span&gt;, rowId, { &lt;span style="color:#800000;"&gt;&amp;quot;SalariedFlag&amp;quot;&lt;/span&gt;: evt.currentTarget.checked });&lt;/li&gt; &lt;li&gt;}&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;p&gt;Using the &lt;a title="JQUERY API - .data()" href="http://api.jquery.com/data/" target="_blank"&gt;jQuery data()&lt;/a&gt; method gives us that row Id in a snap and the passed event can tell us the state of the checkbox to assign to that column value. Do note that this requires Updating to be loaded as a resource and added to the grid features(&lt;a title="NetAdvantage&amp;reg; jQuery Online Help : igGrid Updating" href="http://help.infragistics.com/NetAdvantage/jQuery/2012.1/CLR4.0?page=igGrid_Updating.html#enabling_updating" target="_blank"&gt;&lt;img title="NetAdvantage&amp;reg; jQuery Online Help : igGrid Updating" alt="NetAdvantage&amp;reg; jQuery Online Help : igGrid Updating" src="http://users.infragistics.com/dpetev/external_link.PNG" /&gt;&lt;/a&gt;). And that leads to some issues that may arise&lt;/p&gt; &lt;h3&gt;When Updating enters the scene..&lt;/h3&gt; &lt;p&gt;It’s fairly reasonable to assume, since editing the checkboxes and Updating are already involved, that the grid is supposed to provide the full editing experience. However, once edit mode activated the edited cell/row UI is separate one, which means that if you don’t implement a provider yourself you will get the default combo-style editor:&lt;/p&gt; &lt;p&gt;&lt;img title="What happens with the template in edit mode." alt="What happens with the template in edit mode." src="http://media.infragistics.com/community/Release/12.1/jQuery/Checkbox-Columns-Alternatives/basic-checkbox-column-editor.png" /&gt;&lt;/p&gt; &lt;p&gt;Now that may or may not be a problem for you (it will work just fine and checkboxes will update once you exit edit mode), but the sake of consistent experience it would be nice if the editor could be a checkbox as well..preferably the same one. At this point you have quite a few options, really, I’ll just provide a few examples how I think this can be made better and usable.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;One little trick &lt;/strong&gt;to try is setting that very same column as read-only. You already have a control that sets the value of the cell regardless of edit state and therefore you can go ahead and set that very same column as read only! What that would do is prevent the cell from getting its UI replaced by editor and in row mode it &lt;strong&gt;will remain unchanged&lt;/strong&gt;. That means no combo like above and the very same checkbox with the same event handler still there ready for action. One tweak required though – since &lt;a title="INFRAGISTICS NETADVANTAGE JQUERY API REFERENCE - Updating" href="http://help.infragistics.com/jQuery/2012.1/ui.iggridupdating#methods" target="_blank"&gt;the Update Row method&lt;/a&gt; is not meant to be called from within edit session it will update the UI. All good? Nope. The issue is that in the case where you have the grid with the above setup and attempt updating a row when editing is activated – then awkward behavior is guaranteed. The UI is updated, &lt;strong&gt;but&lt;/strong&gt; &lt;strong&gt;the editing is still active&lt;/strong&gt; even though the grid looks like it exited that one and since there are not buttons or other elements that handle the editing of the editing session.. well it’s stuck. I see a few options here, things like ending the editing (method is available of course) before calling the update row, but that immediately exits on checkbox change and that is probably not what the user would be expecting to happen. Then again you can disable the checkboxes while editing, but that’s not the way to go when editing is active.&lt;/p&gt; &lt;p&gt;What you can do is save the change directly to the data source transaction logs, after all the checkbox will take care of its UI, but it might require additional work (data dirty event, rebinding) to work properly with other features. You can also simply restart the editing on the very same row for the user:&lt;/p&gt; &lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:4682639d-82cf-4c31-b040-079545926a65" class="wlWriterEditableSmartContent"&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:300px;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="color:#0000ff;"&gt;function&lt;/span&gt; checkboxChanged(evt) {&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;    &lt;span style="color:#006400;"&gt;// get rowID where change occured:&lt;/span&gt;&lt;/li&gt; &lt;li&gt;    &lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; rowId = $(evt.currentTarget).data().rowid;&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;    &lt;span style="color:#006400;"&gt;// if editing is active - update just the cell, otherwise use row update&lt;/span&gt;&lt;/li&gt; &lt;li&gt;    &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt;($(&lt;span style="color:#800000;"&gt;&amp;quot;#grid&amp;quot;&lt;/span&gt;).igGridUpdating(&lt;span style="color:#800000;"&gt;&amp;quot;isEditing&amp;quot;&lt;/span&gt;)){&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;        $(&lt;span style="color:#800000;"&gt;&amp;quot;#grid&amp;quot;&lt;/span&gt;).igGridUpdating(&lt;span style="color:#800000;"&gt;&amp;quot;endEdit&amp;quot;&lt;/span&gt;);&lt;/li&gt; &lt;li&gt;        $(&lt;span style="color:#800000;"&gt;&amp;quot;#grid&amp;quot;&lt;/span&gt;).igGridUpdating(&lt;span style="color:#800000;"&gt;&amp;quot;setCellValue&amp;quot;&lt;/span&gt;, rowId, &lt;span style="color:#800000;"&gt;&amp;quot;SalariedFlag&amp;quot;&lt;/span&gt;, evt.currentTarget.checked);&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;         &lt;/li&gt; &lt;li&gt;        &lt;span style="color:#006400;"&gt;//optionally can start the editing on the same row again&lt;/span&gt;&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;        &lt;span style="color:#006400;"&gt;//need row index:&lt;/span&gt;&lt;/li&gt; &lt;li&gt;        &lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; rows = $(&lt;span style="color:#800000;"&gt;&amp;quot;#grid&amp;quot;&lt;/span&gt;).igGrid(&lt;span style="color:#800000;"&gt;&amp;quot;rows&amp;quot;&lt;/span&gt;);&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;        &lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; rowIndex;&lt;/li&gt; &lt;li&gt;        &lt;span style="color:#006400;"&gt;//var context = this;&lt;/span&gt;&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;        $.each(rows, &lt;span style="color:#0000ff;"&gt;function&lt;/span&gt; (index, row) {&lt;/li&gt; &lt;li&gt;            &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; ($(row).data().id == rowId) {&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;                rowIndex = index;&lt;/li&gt; &lt;li&gt;            }&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;        });&lt;/li&gt; &lt;li&gt;        &lt;span style="color:#006400;"&gt;//make sure you let the calling code exit before attempting start edit,&lt;/span&gt;&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;        &lt;span style="color:#006400;"&gt;// a few milliseconds should be enough&lt;/span&gt;&lt;/li&gt; &lt;li&gt;        setTimeout(&lt;span style="color:#0000ff;"&gt;function&lt;/span&gt; () { $(&lt;span style="color:#800000;"&gt;&amp;quot;#grid&amp;quot;&lt;/span&gt;).igGridUpdating(&lt;span style="color:#800000;"&gt;&amp;quot;startEdit&amp;quot;&lt;/span&gt;, rowIndex, 1); }, 2);&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;    }&lt;/li&gt; &lt;li&gt;    &lt;span style="color:#0000ff;"&gt;else&lt;/span&gt; {&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;        $(&lt;span style="color:#800000;"&gt;&amp;quot;#grid&amp;quot;&lt;/span&gt;).igGridUpdating(&lt;span style="color:#800000;"&gt;&amp;quot;updateRow&amp;quot;&lt;/span&gt;, rowId, { &lt;span style="color:#800000;"&gt;&amp;quot;SalariedFlag&amp;quot;&lt;/span&gt;: evt.currentTarget.checked });&lt;/li&gt; &lt;li&gt;    }&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;}&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;p&gt;Above snippet shows getting the row index from the ID and starting editing on that row with a small delay (event handler is called within anonymous function elsewhere). Ending and starting editing causes the change of UI, which in turn causes a slight flicker, but with some desire and CSS tweaking that can be changed.&lt;/p&gt; &lt;p&gt;Do note that you can explore the possibility of creating custom editor provider for even better experience and I will show some about that in the next part.&lt;/p&gt; &lt;h3&gt;No Boolean? No problem!&lt;/h3&gt; &lt;p&gt;If you noticed so far there’s a really weak connection between the actual value and the representation – our logic dictates both representation and interaction result. SO nothing is really stopping you to use more than just Boolean – strings, numbers, null values – all quite plausible. Perhaps explore more than two states of the checkbox as well. Let’s have AdventureWorks’ SpecialOffers table where a MaxQty property for each offer states a maximum OR ‘NULL’. I want to not just display that data, I want to display an result of assessment of that instead. Might not be the best example, but I will have a column that will instead show if the offer &lt;strong&gt;has a maximum at all:&lt;/strong&gt;&lt;/p&gt; &lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:5a2ba680-853c-42b0-8137-348dfd29945c" class="wlWriterEditableSmartContent"&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:300px;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;$.ig.loader(&lt;span style="color:#0000ff;"&gt;function&lt;/span&gt; () {&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;    $(&lt;span style="color:#800000;"&gt;&amp;quot;#grid&amp;quot;&lt;/span&gt;).igGrid({&lt;/li&gt; &lt;li&gt;        primaryKey: &lt;span style="color:#800000;"&gt;&amp;quot;SpecialOfferID&amp;quot;&lt;/span&gt;,&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;        height: 550,&lt;/li&gt; &lt;li&gt;        dataSource: &lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background:#ffff00;color:#800000;"&gt;@&lt;/span&gt;Url.Action(&lt;span style="color:#a31515;"&gt;&amp;quot;SpecialOffersData&amp;quot;&lt;/span&gt;)&lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt;,&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;        autoGenerateColumns: &lt;span style="color:#0000ff;"&gt;false&lt;/span&gt;,&lt;/li&gt; &lt;li&gt;        columns: [&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;            { key: &lt;span style="color:#800000;"&gt;&amp;quot;SpecialOfferID&amp;quot;&lt;/span&gt;, width: &lt;span style="color:#800000;"&gt;&amp;quot;100px&amp;quot;&lt;/span&gt;, headerText: &lt;span style="color:#800000;"&gt;&amp;quot;ID&amp;quot;&lt;/span&gt;, dataType: &lt;span style="color:#800000;"&gt;&amp;quot;number&amp;quot;&lt;/span&gt; , template: &lt;span style="color:#800000;"&gt;&amp;quot;&amp;lt;a style=&amp;#92;&amp;quot;font-size:20px;&amp;#92;&amp;quot; href=&amp;#92;&amp;quot;http://msdn.microsoft.com/en-us/library/ms124455(v=sql.100)&amp;#92;&amp;quot;&amp;gt;${SpecialOfferID}&amp;lt;/a&amp;gt;&amp;quot;}&lt;/span&gt;,&lt;/li&gt; &lt;li&gt;            { key: &lt;span style="color:#800000;"&gt;&amp;quot;Description&amp;quot;&lt;/span&gt;, width: &lt;span style="color:#800000;"&gt;&amp;quot;250px&amp;quot;&lt;/span&gt;, headerText: &lt;span style="color:#800000;"&gt;&amp;quot;Description&amp;quot;&lt;/span&gt;, dataType: &lt;span style="color:#800000;"&gt;&amp;quot;string&amp;quot;&lt;/span&gt; },&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;            { key: &lt;span style="color:#800000;"&gt;&amp;quot;Type&amp;quot;&lt;/span&gt;, width: &lt;span style="color:#800000;"&gt;&amp;quot;220px&amp;quot;&lt;/span&gt; , headerText: &lt;span style="color:#800000;"&gt;&amp;quot;Type&amp;quot;&lt;/span&gt;, dataType: &lt;span style="color:#800000;"&gt;&amp;quot;string&amp;quot;&lt;/span&gt; },&lt;/li&gt; &lt;li&gt;            { key: &lt;span style="color:#800000;"&gt;&amp;quot;MaxQty&amp;quot;&lt;/span&gt;, width: &lt;span style="color:#800000;"&gt;&amp;quot;150px&amp;quot;&lt;/span&gt;, headerText: &lt;span style="color:#800000;"&gt;&amp;quot;Has MaxQty&amp;quot;&lt;/span&gt;, dataType: &lt;span style="color:#800000;"&gt;&amp;quot;string&amp;quot;&lt;/span&gt;, template: &lt;span style="color:#800000;"&gt;&amp;quot;&amp;lt;input type=&amp;#92;&amp;quot;checkbox&amp;#92;&amp;quot; {{if parseInt(${MaxQty}) }} checked=&amp;#92;&amp;quot;checked&amp;#92;&amp;quot; {{/if}} data-rowid=&amp;#92;&amp;quot;${SpecialOfferID}&amp;#92;&amp;quot;  data-test=&amp;#92;&amp;quot;${MaxQty}&amp;#92;&amp;quot; onchange=&amp;#92;&amp;quot;checkboxChanged(event);&amp;#92;&amp;quot; style=&amp;#92;&amp;quot;display: block; margin-left: auto; margin-right: auto;&amp;#92;&amp;quot;&amp;gt;&amp;quot;}&lt;/span&gt;&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;        ],&lt;/li&gt; &lt;li&gt;        &lt;span style="color:#ff0000;"&gt;features&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;:&lt;/span&gt; [&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;            { &lt;span style="color:#ff0000;"&gt;name&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;:&lt;/span&gt; &lt;span style="color:#800000;"&gt;&amp;quot;Filtering&amp;quot;&lt;/span&gt;, &lt;span style="color:#ff0000;"&gt;mode&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;:&lt;/span&gt; &lt;span style="color:#800000;"&gt;&amp;quot;advanced&amp;quot;&lt;/span&gt;, &lt;span style="color:#ff0000;"&gt;type&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;:&lt;/span&gt; &lt;span style="color:#800000;"&gt;&amp;quot;local&amp;quot;&lt;/span&gt; },&lt;/li&gt; &lt;li&gt;            { &lt;span style="color:#ff0000;"&gt;name&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;:&lt;/span&gt; &lt;span style="color:#800000;"&gt;&amp;quot;Sorting&amp;quot;&lt;/span&gt;, &lt;span style="color:#ff0000;"&gt;type&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;:&lt;/span&gt; &lt;span style="color:#800000;"&gt;&amp;quot;local&amp;quot;&lt;/span&gt; },&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;            { &lt;span style="color:#ff0000;"&gt;name&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;:&lt;/span&gt; &lt;span style="color:#800000;"&gt;&amp;quot;Updating&amp;quot;}&lt;/span&gt;]&lt;/li&gt; &lt;li&gt;    });&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;});&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;p&gt;Note the checkbox is being checked only if the value is not one of the ‘false’ equivalents (parsing returns NaN for example when it fails). Also you can set the values in much the same way – add null for&amp;nbsp; false and default/calculated value for true:&lt;/p&gt; &lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:65a080c4-80ae-412b-a266-92a301b5fed1" class="wlWriterEditableSmartContent"&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:300px;overflow:auto;"&gt; &lt;ol style="background:#ffffff;margin:0 0 0 2em;padding:0 0 0 5px;white-space:nowrap;"&gt; &lt;li&gt;&lt;span style="color:#0000ff;"&gt;function&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;checkboxChanged&lt;/span&gt;(&lt;span style="color:#ff0000;"&gt;evt&lt;/span&gt;) {&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;    &lt;span style="color:#006400;"&gt;// get rowID where change occured:&lt;/span&gt;&lt;/li&gt; &lt;li&gt;    &lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;rowId&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;=&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;$(evt.currentTarget).data().rowid;&lt;/span&gt;&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;    &lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;newValue&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;=&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;evt.currentTarget.checked&lt;/span&gt; ? 10 : &lt;span style="color:#0000ff;"&gt;null&lt;/span&gt;;&lt;/li&gt; &lt;li&gt;    $(&lt;span style="color:#800000;"&gt;&amp;quot;#grid&amp;quot;&lt;/span&gt;).&lt;span style="color:#ff0000;"&gt;igGridUpdating&lt;/span&gt;(&lt;span style="color:#800000;"&gt;&amp;quot;updateRow&amp;quot;&lt;/span&gt;, &lt;span style="color:#ff0000;"&gt;rowId&lt;/span&gt;, { &lt;span style="color:#800000;"&gt;&amp;quot;MaxQty&amp;quot;&lt;/span&gt;: &lt;span style="color:#ff0000;"&gt;newValue&lt;/span&gt; });&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;}&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;p&gt;The results (both from SQL Management Studio and the running app with the jQuery Grid):&lt;/p&gt; &lt;p&gt;&lt;img title="It&amp;#39;s possible with checkbox template to display easily non-boolean values." alt="It&amp;#39;s possible with checkbox template to display easily non-boolean values." src="http://media.infragistics.com/community/Release/12.1/jQuery/Checkbox-Columns-Alternatives/basic-alternative-checkbox-column-non-boolean.png" /&gt;&lt;/p&gt; &lt;p&gt;And again the mentioned Updating tricks can be implemented for this in an identical manner.&lt;/p&gt; &lt;h1&gt;Moving on&lt;strong&gt; &lt;/strong&gt;&lt;/h1&gt; &lt;p&gt;Here’s a quick comparison between the DIY template vs. the default Checkbox column:&lt;/p&gt; &lt;h4&gt;PROS&lt;/h4&gt; &lt;ul&gt; &lt;li&gt;Will work with other templates.  &lt;li&gt;Easy to implement - 1 line for simple scenarios.  &lt;li&gt;Not Limited to just Boolean values.  &lt;li&gt;As a custom solution it is not limited to a bi-state checkbox, an tri-state checkbox can be potentially implemented(&lt;a title="JSFiddle showing a simple 3-state checkbox implementation." href="http://jsfiddle.net/98BMK/" target="_blank"&gt;&lt;img title="JSFiddle showing a simple 3-state checkbox implementation." alt="JSFiddle showing a simple 3-state checkbox implementation." src="http://users.infragistics.com/dpetev/external_link.PNG" /&gt;&lt;/a&gt;) &lt;/li&gt;&lt;/ul&gt; &lt;h4&gt;CONS&lt;/h4&gt; &lt;ul&gt; &lt;li&gt;Does require some code to achieve similar results.  &lt;li&gt;Can be somewhat complicated to implement IF it is also required to function within the Updating edit mode. Overall in tricky relationships with the Updating feature.  &lt;li&gt; &lt;p&gt;The browser implementations don’t look anything special and (correct me if I’m wrong) are not guaranteed to look the same either.&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Hopefully this experience was helpful for all of those that have greater functionalities in mind in that defaults can provide. As I said above this is just me sharing experience, there’s a learning curve here and this is not the only or final solution. &lt;strong&gt;Stay tuned for another approach in upcoming blog!&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&lt;em&gt;&lt;a title="ASP.NET MVC project demonstrating different features discussed above - both jQuery only and MVC grid setup." href="http://media.infragistics.com/community/Release/12.1/jQuery/Checkbox-Columns-Alternatives/CheckboxAlternatives1.zip"&gt;Demo project is available for download&lt;/a&gt;. As always, you can follow us on Twitter &lt;/em&gt;&lt;a title="That would be me!" href="https://twitter.com/DamyanPetev"&gt;&lt;em&gt;@DamyanPetev&lt;/em&gt;&lt;/a&gt;&lt;em&gt; and &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;</description></item><item><title>Creating Windows Phone Applications with Infragistics XamList</title><link>http://community.infragistics.com/blogs/damyan_petev/archive/2012/07/04/creating-windows-phone-applications-with-infragistics-xamlist.aspx</link><pubDate>Wed, 04 Jul 2012 13:32:00 GMT</pubDate><guid isPermaLink="false">7a8b7c76-b7ad-48e0-9694-5b04ca132ed0:360798</guid><dc:creator>dpetev</dc:creator><description>&lt;p&gt;I explained why I think &lt;a title="jQuery Mobile Controls by Infragistics" href="http://blogs.infragistics.com/blogs/damyan_petev/archive/2012/05/18/infragistics-jquery-mobile-controls.aspx" target="_blank"&gt;list controls are THE grids for mobile phones when introducing the jQuery Mobile version&lt;/a&gt;. I believe most would agree they really aim to achieve pretty much the same functionality but within the limited space of a small screen and with the right kind of interaction. Then you could have a look at any of the Infragistics platform product lines&amp;hellip; notice every product is packed with powerful grid controls? Now that the mobile platforms got some additions, if you are a Windows Phone developer with big data in mind, you need to look no further:&lt;/p&gt;
&lt;h1&gt;The XamList is here!&lt;/h1&gt;
&lt;p&gt;Just in case you missed it, of course. You can say the last release closed the loop in terms of data handling for our phone control packages and this List control is truly a feat &amp;ndash; built for the ground up specifically for Windows Phone. I dare say it&amp;rsquo;s everything you&amp;rsquo;d expect &amp;ndash; stylish, heavy on data and light on the app as it is virtualized. The latter doesn&amp;rsquo;t really stop it from maintaining an awesome flick experience either. But that&amp;rsquo;s not really the functionality I&amp;rsquo;d like to talk about, those are things expected of a good control and this particular one offers so much more. I&amp;rsquo;m afraid it will be too much to cover in one blog, but hey &amp;ndash; here&amp;rsquo;s a list:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Complete control on looks &amp;ndash; you can define templates for anything and everything. &lt;/li&gt;
&lt;li&gt;Comes complete with a few ready-to-use templates for very quick set up. &lt;/li&gt;
&lt;li&gt;Built-in support for hierarchy (drill-down) &amp;ndash; That&amp;rsquo;s right! No need for details page, the XamList can do that for you. There&amp;rsquo;s more &amp;ndash; it&amp;rsquo;s not just details page &amp;ndash; frankly, I&amp;rsquo;m not sure the level of hierarchy supported even has a limit. And you can template every sub-view and you can drill down to different collections of items as well! &lt;/li&gt;
&lt;li&gt;Fully featured search with the ability to control the scope of fields to be evaluated. &lt;/li&gt;
&lt;li&gt;Filtering &amp;ndash; again complete with the ability to define presets with just a few properties. Presets are defined in groups (sets) with special interaction to let the user activate more than one filter. &lt;/li&gt;
&lt;li&gt;Sorting with presets for sorts based on different properties. &lt;/li&gt;
&lt;li&gt;Grouping items with the greatest ease and support for alphabetic grouping, by property value or by date with awesome interactions designed for each type. &lt;/li&gt;
&lt;li&gt;Custom everything &amp;ndash; when all the defaults won&amp;rsquo;t fit you scenario, create custom sorts with your own comparer, filtering with your filter logic, group items with custom provider. &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;The XamList truly comes packed with features (probably even missed some) and flexibility. On a side note &amp;ndash; while you can style nicely, I probably won&amp;rsquo;t do such a good job, so I&amp;rsquo;ll rely on the minimalistic defaults and tease you with looks from the &lt;a title="Infragistics Controls for Windows Phone - Samples" href="http://www.appsfuze.com/applications/windowsphone.tools/infragistics-mobile-controls,12695" target="_blank"&gt;Samples Browser&lt;/a&gt; (It&amp;rsquo;s on the market and it&amp;rsquo;s free!):&lt;/p&gt;
&lt;p&gt;&lt;img src="http://media.infragistics.com/community/Release/12.1/XAML/WP_XamList/samplesBrowser1.png" title="Infragistics Windows Phone Samples Browser - List quick template with thumbnail, title and description." alt="Infragistics Windows Phone Samples Browser - List quick template with thumbnail, title and description." /&gt;&lt;img src="http://media.infragistics.com/community/Release/12.1/XAML/WP_XamList/samplesBrowser2.png" title="Infragistics Windows Phone Samples Browser - List type-based template" alt="Infragistics Windows Phone Samples Browser - List type-based template." /&gt;&lt;/p&gt;
&lt;h1&gt;A Quick Setup&lt;/h1&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;Model - &lt;/em&gt;&lt;/strong&gt;&lt;em&gt;I chose to use a very nice OData Service provided by &lt;a title="INETA Live Home Page" href="http://live.ineta.org/" target="_blank"&gt;INETA Live&lt;/a&gt; that offers a fairly long list of authors/speakers to fit in a list. To use it, of course, in my demo I have a reference to service, which is at &lt;a href="http://live.ineta.org/InetaLiveService.svc/"&gt;http://live.ineta.org/InetaLiveService.svc/&lt;/a&gt; and the following model for the Authors:&lt;/em&gt;&lt;/p&gt;
&lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:95e8b54b-d613-46fd-9458-77d53825c722" class="wlWriterEditableSmartContent"&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:300px;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="color:#0000ff;"&gt;namespace&lt;/span&gt; XamListApp&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;{&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;class&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;MainViewModel&lt;/span&gt; : &lt;span style="color:#2b91af;"&gt;INotifyPropertyChanged&lt;/span&gt;&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; MainViewModel()&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;.Authors = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;DataServiceCollection&lt;/span&gt;&amp;lt;&lt;span style="color:#2b91af;"&gt;LiveAuthor&lt;/span&gt;&amp;gt;();&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#2b91af;"&gt;INETALivePublic&lt;/span&gt; context;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#0000ff;"&gt;private&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;DataServiceCollection&lt;/span&gt;&amp;lt;&lt;span style="color:#2b91af;"&gt;LiveAuthor&lt;/span&gt;&amp;gt; authors;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;DataServiceCollection&lt;/span&gt;&amp;lt;&lt;span style="color:#2b91af;"&gt;LiveAuthor&lt;/span&gt;&amp;gt; Authors&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#0000ff;"&gt;get&lt;/span&gt; { &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; authors; }&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#0000ff;"&gt;set&lt;/span&gt;&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;authors = &lt;span style="color:#0000ff;"&gt;value&lt;/span&gt;;&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;authors.LoadCompleted += &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;EventHandler&lt;/span&gt;&amp;lt;&lt;span style="color:#2b91af;"&gt;LoadCompletedEventArgs&lt;/span&gt;&amp;gt;(authors_LoadCompleted);&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;NotifyPropertyChanged(&lt;span style="color:#a31515;"&gt;&amp;quot;Authors&amp;quot;&lt;/span&gt;);&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;bool&lt;/span&gt; IsDataLoaded { &lt;span style="color:#0000ff;"&gt;get&lt;/span&gt;; &lt;span style="color:#0000ff;"&gt;private&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;set&lt;/span&gt;; }&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#808080;"&gt;///&lt;/span&gt;&lt;span style="color:#008000;"&gt; &lt;/span&gt;&lt;span style="color:#808080;"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#808080;"&gt;///&lt;/span&gt;&lt;span style="color:#008000;"&gt; Load data.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#808080;"&gt;///&lt;/span&gt;&lt;span style="color:#008000;"&gt; &lt;/span&gt;&lt;span style="color:#808080;"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;void&lt;/span&gt; LoadData()&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;context = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;INETALivePublic&lt;/span&gt;(&lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;Uri&lt;/span&gt;(&lt;span style="color:#a31515;"&gt;&amp;quot;http://live.ineta.org/InetaLiveService.svc/&amp;quot;&lt;/span&gt;));&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Authors = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;DataServiceCollection&lt;/span&gt;&amp;lt;&lt;span style="color:#2b91af;"&gt;LiveAuthor&lt;/span&gt;&amp;gt;(context);&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; query = &lt;span style="color:#0000ff;"&gt;from&lt;/span&gt; auths &lt;span style="color:#0000ff;"&gt;in&lt;/span&gt; context.LiveAuthors.Expand(&lt;span style="color:#a31515;"&gt;&amp;quot;LivePresentations&amp;quot;&lt;/span&gt;) &lt;span style="color:#0000ff;"&gt;select&lt;/span&gt; auths;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Authors.LoadAsync(query);&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#0000ff;"&gt;void&lt;/span&gt; authors_LoadCompleted(&lt;span style="color:#0000ff;"&gt;object&lt;/span&gt; sender, &lt;span style="color:#2b91af;"&gt;LoadCompletedEventArgs&lt;/span&gt; e)&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (Authors.Continuation != &lt;span style="color:#0000ff;"&gt;null&lt;/span&gt;)&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Authors.LoadNextPartialSetAsync();&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;IsDataLoaded = &lt;span style="color:#0000ff;"&gt;true&lt;/span&gt;;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;event&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;PropertyChangedEventHandler&lt;/span&gt; PropertyChanged;&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#0000ff;"&gt;private&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;void&lt;/span&gt; NotifyPropertyChanged(&lt;span style="color:#2b91af;"&gt;String&lt;/span&gt; propertyName)&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#2b91af;"&gt;PropertyChangedEventHandler&lt;/span&gt; handler = PropertyChanged;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (&lt;span style="color:#0000ff;"&gt;null&lt;/span&gt; != handler)&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;handler(&lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;, &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;PropertyChangedEventArgs&lt;/span&gt;(propertyName));&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/li&gt;
&lt;li&gt;}&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&lt;span style="color:#0000ff;"&gt;namespace&lt;/span&gt; XamListApp.INETAService&lt;/li&gt;
&lt;li&gt;{&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;partial&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;class&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;LiveAuthor&lt;/span&gt; : &lt;span style="color:#0000ff;"&gt;global&lt;/span&gt;::System.ComponentModel.&lt;span style="color:#2b91af;"&gt;INotifyPropertyChanged&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#808080;"&gt;///&lt;/span&gt;&lt;span style="color:#008000;"&gt; &lt;/span&gt;&lt;span style="color:#808080;"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#808080;"&gt;///&lt;/span&gt;&lt;span style="color:#008000;"&gt; Added Image property&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#808080;"&gt;///&lt;/span&gt;&lt;span style="color:#008000;"&gt; &lt;/span&gt;&lt;span style="color:#808080;"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[System.CodeDom.Compiler.&lt;span style="color:#2b91af;"&gt;GeneratedCodeAttribute&lt;/span&gt;(&lt;span style="color:#a31515;"&gt;&amp;quot;System.Data.Services.Design&amp;quot;&lt;/span&gt;, &lt;span style="color:#a31515;"&gt;&amp;quot;1.0.0&amp;quot;&lt;/span&gt;)]&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; Image&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#0000ff;"&gt;get&lt;/span&gt;&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; &lt;span style="color:#a31515;"&gt;&amp;quot;/XamListApp;component/speaker.png&amp;quot;&lt;/span&gt;;&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/li&gt;
&lt;li&gt;}&lt;/li&gt;
&lt;/ol&gt; &lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;em&gt;There is a second (identical in structure) model for the Live Groups feed. &lt;/em&gt;&lt;/p&gt;
&lt;p&gt;As mentioned the list offers a set of standard templates you can use to jump start an app. But you can go even simpler than that &amp;ndash; by default the XamList will display the result of the ToString() method for each record and if you data is suitable for this all you need to do is bind the ItemsSource property to it:&lt;/p&gt;
&lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:93569eb7-1a41-41f7-a79e-bee48a181ca8" class="wlWriterEditableSmartContent"&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:#fff;max-height:300px;overflow:auto;"&gt; &lt;ol style="background:#ffffff;margin:0;padding:0 0 0 5px;white-space:nowrap;"&gt;
&lt;li&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ig&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;XamList&lt;/span&gt;&lt;span style="color:#ff0000;"&gt; x&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;:&lt;/span&gt;&lt;span style="color:#ff0000;"&gt;Name&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;xamListQuick&amp;quot;&lt;/span&gt;&lt;span style="color:#ff0000;"&gt; ItemsSource&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;{&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Binding&lt;/span&gt;&lt;span style="color:#ff0000;"&gt; Authors}&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;quot;/&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt; &lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Or in our case where the data object is a bit more complex and doesn&amp;rsquo;t have a proper ToString method, you can easily pick one property to show using the DisplayMemberPath:&lt;/p&gt;
&lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:c97e65b3-f024-4359-af82-2c5d02a14b0a" class="wlWriterEditableSmartContent"&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:300px;overflow:auto;"&gt; &lt;ol style="background:#ffffff;margin:0 0 0 2em;padding:0 0 0 5px;white-space:nowrap;"&gt;
&lt;li&gt;&lt;span style="color:#a31515;"&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ig&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;XamList&lt;/span&gt;&lt;span style="color:#ff0000;"&gt; x&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;:&lt;/span&gt;&lt;span style="color:#ff0000;"&gt;Name&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;xamListQuick&amp;quot;&lt;/span&gt;&lt;span style="color:#ff0000;"&gt; ItemsSource&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;{&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Binding&lt;/span&gt;&lt;span style="color:#ff0000;"&gt; Authors}&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;quot;&lt;/span&gt;&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#ff0000;"&gt; DisplayMemberPath&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;FirstName&amp;quot;/&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt; &lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;Quick Templates&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Then again so far we got a single name and that doesn&amp;rsquo;t really tell much. The default templates offer more &amp;ndash; a Title Only (the one we have so far), with added Thumbnail and with both thumbnail and description. Notice in the model above I&amp;rsquo;ve added an additional Image property to the Authors (line 58 and on) so I can demonstrate this:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:1a08a7ff-72a2-4f54-b158-cd9aa897f40a" class="wlWriterEditableSmartContent"&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:300px;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="color:#a31515;"&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ig&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;XamList&lt;/span&gt;&lt;span style="color:#ff0000;"&gt; x&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;:&lt;/span&gt;&lt;span style="color:#ff0000;"&gt;Name&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;xamListQuick&amp;quot;&lt;/span&gt; &lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#ff0000;"&gt; ItemsSource&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;{&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Binding&lt;/span&gt;&lt;span style="color:#ff0000;"&gt; Authors}&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;quot;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#ff0000;"&gt; ItemLayout&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;ThumbnailTitleAndDescription&amp;quot;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#a31515;"&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ig&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;XamList.ItemLayoutBindings&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#a31515;"&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ig&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ItemLayoutBinding&lt;/span&gt;&lt;span style="color:#ff0000;"&gt; ItemLayoutProperty&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;ThumbnailSource&amp;quot;&lt;/span&gt;&lt;span style="color:#ff0000;"&gt; Path&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;Image&amp;quot;/&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#a31515;"&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ig&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ItemLayoutBinding&lt;/span&gt;&lt;span style="color:#ff0000;"&gt; ItemLayoutProperty&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;Title&amp;quot;&lt;/span&gt;&lt;span style="color:#ff0000;"&gt; Path&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;FirstName&amp;quot;/&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#a31515;"&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ig&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ItemLayoutBinding&lt;/span&gt;&lt;span style="color:#ff0000;"&gt; ItemLayoutProperty&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;Description&amp;quot;&lt;/span&gt;&lt;span style="color:#ff0000;"&gt; Path&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;LastName&amp;quot;/&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#a31515;"&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ig&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;XamList.ItemLayoutBindings&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="color:#a31515;"&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ig&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;XamList&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt; &lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;And then you can simply activate some of the features like Group speakers by first letter (alphabetic) and allow for them to be sorted with a few extra lines (these go inside the list definition from above):&lt;/p&gt;
&lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:ff1bdbb9-2fa7-4167-a52e-9c5148a4852f" class="wlWriterEditableSmartContent"&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:300px;overflow:auto;"&gt; &lt;ol style="background:#ffffff;margin:0 0 0 2em;padding:0 0 0 5px;white-space:nowrap;"&gt;
&lt;li&gt;&lt;span style="color:#a31515;"&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ig&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;XamList.Grouping&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#a31515;"&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ig&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;AlphabeticGrouping&lt;/span&gt;&lt;span style="color:#ff0000;"&gt; GroupByMemberPath&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;FirstName&amp;quot; /&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="color:#a31515;"&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ig&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;XamList.Grouping&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&lt;span style="color:#a31515;"&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ig&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;XamList.SortPresets&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#a31515;"&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ig&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;SortPreset&lt;/span&gt;&lt;span style="color:#ff0000;"&gt; DisplayText&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;First Name&amp;quot;&lt;/span&gt;&lt;span style="color:#ff0000;"&gt; Field&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;FirstName&amp;quot;/&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&lt;span style="color:#a31515;"&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ig&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;XamList.SortPresets&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt; &lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;And the end result is both good looking and functional:&lt;/p&gt;
&lt;p&gt;&lt;img src="http://media.infragistics.com/community/Release/12.1/XAML/WP_XamList/quick_setup_grouping_sorting.png" title="Infragistics Windows Phone List quick template with grouping and sorting." alt="Infragistics Windows Phone List template with grouping and sorting." /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;Another way&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;If those defaults don&amp;rsquo;t quite fit your tastes you can easily do a super quick template &amp;ndash; in my case with authors the image really wasn&amp;rsquo;t available and not necessary. Then again I have first and last name and I would like to have them in a single row as the title and the Bio as description text:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:ac618582-6c74-4362-bb8a-7a8d3837f11f" class="wlWriterEditableSmartContent"&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:300px;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="color:#a31515;"&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ig&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;XamList.ItemsTemplate&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#a31515;"&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;DataTemplate&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#a31515;"&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;StackPanel&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#a31515;"&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;StackPanel&lt;/span&gt;&lt;span style="color:#ff0000;"&gt; Orientation&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;Horizontal&amp;quot;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#a31515;"&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;TextBlock&lt;/span&gt;&lt;span style="color:#ff0000;"&gt; Text&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;{&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Binding&lt;/span&gt;&lt;span style="color:#ff0000;"&gt; FirstName}&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;quot;/&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#a31515;"&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;TextBlock&lt;/span&gt;&lt;span style="color:#ff0000;"&gt; Text&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;{&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Binding&lt;/span&gt;&lt;span style="color:#ff0000;"&gt; LastName}&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#ff0000;"&gt; Margin&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;8,0,0,0&amp;quot;/&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#a31515;"&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;StackPanel&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#a31515;"&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;TextBlock&lt;/span&gt;&lt;span style="color:#ff0000;"&gt; Text&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;{&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Binding&lt;/span&gt;&lt;span style="color:#ff0000;"&gt; Bio}&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;quot;/&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#a31515;"&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;StackPanel&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#a31515;"&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;DataTemplate&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="color:#a31515;"&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ig&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;XamList.ItemsTemplate&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt; &lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Some styling required, but this is the general way you can build the List UI just the way you like it.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;A slight issue&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Now that you have an app running you may want to try the built-in search (taping the icon expands a textbox to enter criteria) and get this by accident:&lt;/p&gt;
&lt;p&gt;&lt;img src="http://media.infragistics.com/community/Release/12.1/XAML/WP_XamList/quick_setup_search.png" title="Infragistics Windows Phone  List search without defined scope evaluates all item properties." alt="Infragistics Windows Phone List search without defined scope evaluates all item properties." /&gt;&lt;/p&gt;
&lt;p&gt;And I don&amp;rsquo;t mean the result (Oh look! It&amp;rsquo;s our very own Jason Beres!). Take a look at the search criteria &amp;ndash; 44?! The things is the search by default will attempt to really find everything you need by searching every property of the list items and as it turns out each LiveAuthor has an ID and Jason&amp;rsquo;s for example is 44. Assuming you end up in the situation with more properties than it is reasonable to display in the list, you might want to restrict the set of properties to be searched by adding the following to the other settings above:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:f1655c7c-4d03-43f4-a880-6fbe74ea0d90" class="wlWriterEditableSmartContent"&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:300px;overflow:auto;"&gt; &lt;ol style="background:#ffffff;margin:0 0 0 2em;padding:0 0 0 5px;white-space:nowrap;"&gt;
&lt;li&gt;&lt;span style="color:#a31515;"&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ig&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;XamList.ScopePresets&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#a31515;"&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ig&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ScopePreset&lt;/span&gt;&lt;span style="color:#ff0000;"&gt; DisplayText&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;First Name&amp;quot;&lt;/span&gt;&lt;span style="color:#ff0000;"&gt; Field&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;FirstName&amp;quot;/&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#a31515;"&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ig&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ScopePreset&lt;/span&gt;&lt;span style="color:#ff0000;"&gt; DisplayText&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;Last Name&amp;quot;&lt;/span&gt;&lt;span style="color:#ff0000;"&gt; Field&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;LastName&amp;quot;/&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&lt;span style="color:#a31515;"&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ig&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;XamList.ScopePresets&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt; &lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;Hierarchy&lt;/h1&gt;
&lt;p&gt;I find the automatic drill-down feature to be one of the most outstanding features of this control. And it&amp;rsquo;s not so hard too. And as I said &amp;ndash; there are templates for a almost everything. Above were showed the built-in ones and the general Items template. Now those wouldn&amp;rsquo;t be very appropriate to use when you have hierarchy for the sole reason you&amp;rsquo;d want to display different items when drilling down. If you haven&amp;rsquo;t already guessed, yes &amp;ndash; there are more templates you can set instead. Actually it&amp;rsquo;s more of a &lt;strong&gt;&lt;em&gt;Type Defined&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;templating that anything else. The trick about this type of template definitions is that you can use them for other purposes as well (like defining different layouts for different types of items in your data source &amp;ndash; see the sample with books and movies screenshot above). The List has a Global ItemLayouts collection where you can define yours and set a target type for each. In the code below you can see templates for the &amp;lsquo;LiveAuthor&amp;rsquo;(line 2) and &amp;lsquo;LivePresentation&amp;rsquo; (line 53) and they are actually part of one list and keep in mind the presentations are collection too:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:93f3b3d9-37e7-4ad0-a239-529b641c5011" class="wlWriterEditableSmartContent"&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:300px;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="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ig&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;XamList.GlobalListItemLayouts&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#a31515;"&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#a31515;"&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ig&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ListItemLayout&lt;/span&gt;&lt;span style="color:#ff0000;"&gt; TargetTypeName&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;LiveAuthor&amp;quot;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#a31515;"&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ig&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ListItemLayout.ListItemTemplate&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#a31515;"&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ig&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ListItemTemplate&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#a31515;"&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ig&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ListItemTemplate.PortraitItemTemplate&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#a31515;"&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;DataTemplate&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#a31515;"&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;StackPanel&lt;/span&gt;&lt;span style="color:#ff0000;"&gt; Orientation&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;Horizontal&amp;quot;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#a31515;"&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;TextBlock&lt;/span&gt;&lt;span style="color:#ff0000;"&gt; Text&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;{&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Binding&lt;/span&gt;&lt;span style="color:#ff0000;"&gt; PresentationCount&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;,&lt;/span&gt;&lt;span style="color:#ff0000;"&gt; Converter&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;={&lt;/span&gt;&lt;span style="color:#a31515;"&gt;StaticResource&lt;/span&gt;&lt;span style="color:#ff0000;"&gt; countConverter}}&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#ff0000;"&gt; FontSize&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;22&amp;quot;&lt;/span&gt;&lt;span style="color:#ff0000;"&gt; FontWeight&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;Bold&amp;quot;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;TextBlock&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#a31515;"&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;TextBlock&lt;/span&gt;&lt;span style="color:#ff0000;"&gt; Text&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;{&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Binding&lt;/span&gt;&lt;span style="color:#ff0000;"&gt; FirstName}&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;quot;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;TextBlock&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#a31515;"&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;TextBlock&lt;/span&gt;&lt;span style="color:#ff0000;"&gt; Text&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;{&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Binding&lt;/span&gt;&lt;span style="color:#ff0000;"&gt; LastName}&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#ff0000;"&gt; Margin&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;8,0,0,0&amp;quot;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;TextBlock&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#a31515;"&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;StackPanel&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#a31515;"&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;DataTemplate&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#a31515;"&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ig&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ListItemTemplate.PortraitItemTemplate&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#a31515;"&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ig&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ListItemTemplate&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#a31515;"&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ig&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ListItemLayout.ListItemTemplate&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#a31515;"&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#a31515;"&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ig&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ListItemLayout.DetailItemTemplate&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#a31515;"&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ig&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;DetailItemTemplate&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#a31515;"&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ig&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;DetailItemTemplate.DrillDownSettings&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#a31515;"&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ig&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;DrillDownSettings&lt;/span&gt;&lt;span style="color:#ff0000;"&gt; DrillDownTargetPath&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;LivePresentations&amp;quot;&lt;/span&gt;&lt;span style="color:#ff0000;"&gt; AutomaticDrillDown&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;False&amp;quot;/&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#a31515;"&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ig&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;DetailItemTemplate.DrillDownSettings&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#a31515;"&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ig&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;DetailItemTemplate.PortraitItemTemplate&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#a31515;"&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;DataTemplate&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#a31515;"&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ScrollViewer&lt;/span&gt;&lt;span style="color:#ff0000;"&gt; Height&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;Auto&amp;quot;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#a31515;"&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;StackPanel&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#a31515;"&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Image&lt;/span&gt;&lt;span style="color:#ff0000;"&gt; Height&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;48&amp;quot;&lt;/span&gt;&lt;span style="color:#ff0000;"&gt; Width&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;48&amp;quot;&lt;/span&gt;&lt;span style="color:#ff0000;"&gt; Margin&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;5&amp;quot;&lt;/span&gt;&lt;span style="color:#ff0000;"&gt; HorizontalAlignment&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;Left&amp;quot;&lt;/span&gt;&lt;span style="color:#ff0000;"&gt; Source&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;appbar.back.rest.png&amp;quot;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#a31515;"&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;igBase&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Commanding.Command&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#a31515;"&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ig&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;XamListCommandSource&lt;/span&gt;&lt;span style="color:#ff0000;"&gt; CommandType&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;GoBack&amp;quot;&lt;/span&gt;&lt;span style="color:#ff0000;"&gt; EventName&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;Tap&amp;quot;&lt;/span&gt;&lt;span style="color:#ff0000;"&gt; TargetName&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;xamList&amp;quot;/&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#a31515;"&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;igBase&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Commanding.Command&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#a31515;"&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Image&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#a31515;"&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;StackPanel&lt;/span&gt;&lt;span style="color:#ff0000;"&gt; Orientation&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;Horizontal&amp;quot;&lt;/span&gt;&lt;span style="color:#ff0000;"&gt; Margin&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;0,0,0,5&amp;quot;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#a31515;"&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;TextBlock&lt;/span&gt;&lt;span style="color:#ff0000;"&gt; Text&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;{&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Binding&lt;/span&gt;&lt;span style="color:#ff0000;"&gt; FirstName}&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#ff0000;"&gt; FontFamily&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;Segoe WP Semibold&amp;quot;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;TextBlock&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#a31515;"&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;TextBlock&lt;/span&gt;&lt;span style="color:#ff0000;"&gt; Text&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;{&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Binding&lt;/span&gt;&lt;span style="color:#ff0000;"&gt; LastName}&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#ff0000;"&gt; Margin&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;8,0,0,0&amp;quot;&lt;/span&gt;&lt;span style="color:#ff0000;"&gt; FontFamily&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;Segoe WP Semibold&amp;quot;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;TextBlock&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#a31515;"&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;StackPanel&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#a31515;"&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;TextBlock&lt;/span&gt;&lt;span style="color:#ff0000;"&gt; Text&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;{&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Binding&lt;/span&gt;&lt;span style="color:#ff0000;"&gt; Bio}&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#ff0000;"&gt; TextWrapping&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;Wrap&amp;quot;&lt;/span&gt;&lt;span style="color:#ff0000;"&gt; TextTrimming&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;WordEllipsis&amp;quot;&lt;/span&gt;&lt;span style="color:#ff0000;"&gt; MaxHeight&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;350&amp;quot;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;TextBlock&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#a31515;"&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;StackPanel&lt;/span&gt;&lt;span style="color:#ff0000;"&gt; Height&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;48&amp;quot;&lt;/span&gt;&lt;span style="color:#ff0000;"&gt; Orientation&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;Horizontal&amp;quot;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#a31515;"&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;igBase&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Commanding.Command&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#a31515;"&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ig&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ListItemControlCommandSource&lt;/span&gt;&lt;span style="color:#ff0000;"&gt; CommandType&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;DrillDown&amp;quot;&lt;/span&gt;&lt;span style="color:#ff0000;"&gt; EventName&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;Tap&amp;quot;/&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#a31515;"&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;igBase&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Commanding.Command&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&lt;span style="color:#a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;TextBlock&lt;/span&gt;&lt;span style="color:#ff0000;"&gt; VerticalAlignment&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;Center&amp;quot;&amp;gt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt; Presentations &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;TextBlock&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#a31515;"&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Image&lt;/span&gt;&lt;span style="color:#ff0000;"&gt; Height&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;48&amp;quot;&lt;/span&gt;&lt;span style="color:#ff0000;"&gt; Width&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;48&amp;quot;&lt;/span&gt;&lt;span style="color:#ff0000;"&gt; Source&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;appbar.next.rest.png&amp;quot;/&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#a31515;"&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;StackPanel&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#a31515;"&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;TextBlock&lt;/span&gt;&lt;span style="color:#ff0000;"&gt; Text&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;{&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Binding&lt;/span&gt;&lt;span style="color:#ff0000;"&gt; URL}&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#ff0000;"&gt; TextWrapping&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;Wrap&amp;quot;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;TextBlock&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#a31515;"&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;StackPanel&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#a31515;"&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ScrollViewer&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#a31515;"&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;DataTemplate&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#a31515;"&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ig&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;DetailItemTemplate.PortraitItemTemplate&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#a31515;"&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ig&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;DetailItemTemplate&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#a31515;"&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ig&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ListItemLayout.DetailItemTemplate&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#a31515;"&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ig&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ListItemLayout&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#a31515;"&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#a31515;"&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ig&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ListItemLayout&lt;/span&gt;&lt;span style="color:#ff0000;"&gt; TargetTypeName&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;LivePresentation&amp;quot;&lt;/span&gt;&lt;span style="color:#ff0000;"&gt; AutomaticDrillDown&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;False&amp;quot;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#a31515;"&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ig&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ListItemLayout.ListItemTemplate&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#a31515;"&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ig&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ListItemTemplate&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#a31515;"&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ig&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ListItemTemplate.PortraitItemTemplate&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#a31515;"&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;DataTemplate&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#a31515;"&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;StackPanel&lt;/span&gt;&lt;span style="color:#ff0000;"&gt; Margin&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;0,0,0,20&amp;quot;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#a31515;"&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;TextBlock&lt;/span&gt;&lt;span style="color:#ff0000;"&gt; Text&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;{&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Binding&lt;/span&gt;&lt;span style="color:#ff0000;"&gt; Title}&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;quot;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;TextBlock&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#a31515;"&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Line&lt;/span&gt;&lt;span style="color:#ff0000;"&gt; Margin&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Line&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#a31515;"&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;TextBlock&lt;/span&gt;&lt;span style="color:#ff0000;"&gt; Text&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;{&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Binding&lt;/span&gt;&lt;span style="color:#ff0000;"&gt; Abstract}&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#ff0000;"&gt; TextTrimming&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;WordEllipsis&amp;quot;&lt;/span&gt;&lt;span style="color:#ff0000;"&gt; Height&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;60&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt; TextWrapping&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;Wrap&amp;quot;&lt;/span&gt;&lt;span style="color:#ff0000;"&gt; Style&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;{&lt;/span&gt;&lt;span style="color:#a31515;"&gt;StaticResource&lt;/span&gt;&lt;span style="color:#ff0000;"&gt; PhoneTextNormalStyle}&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;quot;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;TextBlock&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#a31515;"&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;StackPanel&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#a31515;"&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;DataTemplate&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#a31515;"&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ig&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ListItemTemplate.PortraitItemTemplate&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#a31515;"&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ig&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ListItemTemplate&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#a31515;"&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ig&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ListItemLayout.ListItemTemplate&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#a31515;"&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ig&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ListItemLayout&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ig&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;XamList.GlobalListItemLayouts&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt; &lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Each ListItemLayout in the Global collection has both list (item) and details templates and notice they each have Portrait template defined&amp;hellip;that&amp;rsquo;s because you can specify a different one for the Landscape orientation! Also they have Automatic drill down property (default is true, so you can skip it).&lt;/p&gt;
&lt;p&gt;The &lt;strong&gt;absolute best&lt;/strong&gt; part is that I have defined two types of collections and yet only one list and I can drill down to the Presentations collection from within each author item thanks to the Drill down Path property. And here&amp;rsquo;s a small hierarchy flow of what this will do:&lt;/p&gt;
&lt;p&gt;&lt;img src="http://media.infragistics.com/community/Release/12.1/XAML/WP_XamList/list_hierarchy_drilldown.png" title="Infragistics Windows Phone List&amp;#39;s hierarchical support - drill down path." alt="Infragistics Windows Phone List&amp;#39;s hierarchical support - drill down path" /&gt;&lt;/p&gt;
&lt;h1&gt;Commands&lt;/h1&gt;
&lt;p&gt;Guess I missed that one in the listing at the start &amp;ndash; simply put the List comes with two default command sources &amp;ndash; the List itself which you can see in the above code (lines 27-31) where it is used to create a back button from an Image. This source also provides a set of the most common functionalities for you to use, such as applying a filter, toggling filter and search states and jumping to groups.&lt;/p&gt;
&lt;p&gt;And then you have the List Item which provides a single, yet critical command &amp;ndash; drill down! This is useful if you don&amp;rsquo;t want or can&amp;rsquo;t use the automatic drill-down feature and you can use this to add a button that does that inside the list item itself. You can see that in action in the &lt;a title="Infragistics Controls for Windows Phone - Samples" href="http://www.appsfuze.com/applications/windowsphone.tools/infragistics-mobile-controls,12695" target="_blank"&gt;Samples Browser&lt;/a&gt; (It&amp;rsquo;s the &amp;ldquo;Non Automatic Drilldown&amp;rdquo;).&lt;/p&gt;
&lt;h1&gt;Custom Grouping&lt;/h1&gt;
&lt;p&gt;So far I&amp;rsquo;ve showed you an alphabetic grouping in the first example and now if you look at the second it is also grouped. But those are user group names that are not included in the &amp;lsquo;LiveAuthor&amp;lsquo; or their &amp;lsquo;LivePresentations&amp;rsquo;? This is where all the customization really shines, as I have defined my very own Grouping Provider that makes the connection between Author ID and Groups. However, since authors may have presented in more than one, they will be grouped in the one they have the most or the first if all are equal:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:099c470a-0b0a-4cf9-8597-25a7998a3c7c" class="wlWriterEditableSmartContent"&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="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;class&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;GroupingProvider&lt;/span&gt; : &lt;span style="color:#2b91af;"&gt;IGroupingProvider&lt;/span&gt;&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;{&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; System.Collections.Generic.&lt;span style="color:#2b91af;"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color:#0000ff;"&gt;string&lt;/span&gt;&amp;gt; GetAllGroupNames()&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; titles = (&lt;span style="color:#0000ff;"&gt;from&lt;/span&gt; grp &lt;span style="color:#0000ff;"&gt;in&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;App&lt;/span&gt;.GroupModel.Groups&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#0000ff;"&gt;select&lt;/span&gt; grp.Name).ToList();&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; titles;&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; GetGroupNameForItem(&lt;span style="color:#0000ff;"&gt;object&lt;/span&gt; item)&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; Id = &lt;span style="color:#2b91af;"&gt;App&lt;/span&gt;.ViewModel.Authors.Where(a =&amp;gt; a.AuthorID == (&lt;span style="color:#0000ff;"&gt;int&lt;/span&gt;)item).FirstOrDefault().LivePresentations&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.GroupBy(p =&amp;gt; p.GroupID)&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.Select(p =&amp;gt; &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; { ID = p.Key, num = p.Count() })&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.OrderByDescending(p =&amp;gt; p.num)&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.First().ID;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; name = &lt;span style="color:#2b91af;"&gt;App&lt;/span&gt;.GroupModel.Groups.Where(x =&amp;gt; x.GroupID == Id).FirstOrDefault().Name;&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; name;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;}&lt;/li&gt;
&lt;/ol&gt; &lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Note that the GetAllGroupNames method gets called when the user interacts with the group headers which opens up the Group picker (or jumper if you will) menu which is an overlay with all the groups returned by the method and the user can quickly jump to:&lt;/p&gt;
&lt;p&gt;&lt;img src="http://media.infragistics.com/community/Release/12.1/XAML/WP_XamList/list_group_menu.png" title="Infragistics Windows Phone List&amp;#39;s Grouping Jump-to picker." alt="Infragistics Windows Phone List&amp;#39;s Grouping Jump-to picker" /&gt;&lt;/p&gt;
&lt;p&gt;The grayed-out names are the ones that don&amp;rsquo;t have items and can&amp;rsquo;t be navigated to. Here&amp;rsquo;s a small trick however &amp;ndash; if you return &amp;lsquo;null&amp;rsquo; in the above method, this menu will only show the names that are actually available.&lt;/p&gt;
&lt;h1&gt;Code&lt;/h1&gt;
&lt;p&gt;Here&amp;rsquo;s the rest of that list complete with group settings and &lt;strong&gt;filter:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:ebfeb070-0967-4c5b-8360-ad45dccf47c4" class="wlWriterEditableSmartContent"&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="color:#a31515;"&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ig&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;XamList&lt;/span&gt;&lt;span style="color:#ff0000;"&gt; x&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;:&lt;/span&gt;&lt;span style="color:#ff0000;"&gt;Name&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;xamList&amp;quot;&lt;/span&gt;&lt;span style="color:#ff0000;"&gt; ItemsSource&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;{&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Binding&lt;/span&gt;&lt;span style="color:#ff0000;"&gt; Authors}&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#ff0000;"&gt; ItemClicked&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;xamList_ItemClicked&amp;quot;&lt;/span&gt;&lt;span style="color:#ff0000;"&gt; GotFocus&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;xamList_GotFocus&amp;quot;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#a31515;"&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ig&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;XamList.ScopePresets&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#a31515;"&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ig&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ScopePreset&lt;/span&gt;&lt;span style="color:#ff0000;"&gt; DisplayText&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;First Name&amp;quot;&lt;/span&gt;&lt;span style="color:#ff0000;"&gt; Field&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;FirstName&amp;quot;/&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#a31515;"&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ig&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ScopePreset&lt;/span&gt;&lt;span style="color:#ff0000;"&gt; DisplayText&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;Last Name&amp;quot;&lt;/span&gt;&lt;span style="color:#ff0000;"&gt; Field&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;LastName&amp;quot;/&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#a31515;"&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ig&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;XamList.ScopePresets&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#a31515;"&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ig&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;XamList.Grouping&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#a31515;"&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ig&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;CustomGrouping&lt;/span&gt;&lt;span style="color:#ff0000;"&gt; GroupingProvider&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;{&lt;/span&gt;&lt;span style="color:#a31515;"&gt;StaticResource&lt;/span&gt;&lt;span style="color:#ff0000;"&gt; groupingProvider}&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;quot; /&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#a31515;"&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ig&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;XamList.Grouping&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#a31515;"&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ig&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;XamList.FilterSets&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#a31515;"&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ig&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;FilterSet&lt;/span&gt;&lt;span style="color:#ff0000;"&gt; Title&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;Size&amp;quot;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#ff0000;"&gt; DefaultFilterName&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;All&amp;quot;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#a31515;"&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ig&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;FilterPreset&lt;/span&gt;&lt;span style="color:#ff0000;"&gt; Name&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;All&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt; DisplayText&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;All&amp;quot;/&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#a31515;"&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ig&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;FilterPreset&lt;/span&gt;&lt;span style="color:#ff0000;"&gt; Name&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;A&amp;quot;&lt;/span&gt;&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#ff0000;"&gt; DisplayText&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;Starst with A&amp;quot;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#ff0000;"&gt; Field&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;FirstName&amp;quot;&lt;/span&gt;&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#ff0000;"&gt; Operator&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;StartsWith&amp;quot;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#ff0000;"&gt; Value&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;A&amp;quot; /&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#a31515;"&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ig&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;FilterSet&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#a31515;"&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ig&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;XamList.FilterSets&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#a31515;"&gt;&lt;/span&gt;&lt;span style="color:#008000;"&gt;&amp;lt;!--The global list templates here--&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;span style="color:#a31515;"&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ig&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;XamList&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt; &lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;Bonus screenshot&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;I mentioned grouping has special interactions for the different types (the custom above is like a value type). Then you have the alphabetic from the first example and taping its headers brings up a very familiar styled menu:&lt;/p&gt;
&lt;p&gt;&lt;img src="http://media.infragistics.com/community/Release/12.1/XAML/WP_XamList/list_alphabetic_group_menu.png" title="Infragistics Windows Phone List&amp;#39;s Alphabetic Grouping Jump-to picker." alt="Infragistics Windows Phone List&amp;#39;s Alphabetic Grouping Jump-to picker" /&gt;&lt;/p&gt;
&lt;h1&gt;Wrapping Up&lt;/h1&gt;
&lt;p&gt;You can tell I was very serious when I said the XamList has quite the feature set &amp;ndash; I pretty much skipped some features like filtering (although you can see one filter definition in the Code section above), but remember you can customize that and sorting too? Don&amp;rsquo;t forget you get search with scope tweaking, amazing grouping with defaults for letters and dates and the best feature ever &amp;ndash; the automatic drilldown that can build entire applications with a single list!&lt;/p&gt;
&lt;p&gt;This control combines a few awesome sides &amp;ndash; it can be as simple as it gets with built-in templates and spot-on defaults for all features and then it all can be templated to your liking and customized to your needs. It&amp;rsquo;s truly a grid-type control that is ready to handle large data and various scenarios.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Download the &lt;strong&gt;&lt;a title="Windows Phone demo project with Infragistics List" href="http://media.infragistics.com/community/Release/12.1/XAML/WP_XamList/XamListDemo.zip" target="_blank"&gt;demo project&lt;/a&gt;&lt;/strong&gt; for this blog( two list samples with all of the above described), keep in mind you&amp;rsquo;ll need Windows Phone SDK and at least &lt;a title="NetAdvantage for Windows Phone" href="http://www.infragistics.com/dotnet/netadvantage/windows-phone.aspx#Overview" target="_blank"&gt;trial (it&amp;rsquo;s free) version of NetAdvantage for Windows Phone&lt;/a&gt;. &lt;em&gt;As always, you can follow us on Twitter &lt;/em&gt;&lt;a title="That would be me!" href="https://twitter.com/DamyanPetev"&gt;@DamyanPetev&lt;/a&gt;&lt;em&gt;&lt;/em&gt;&lt;em&gt; and &lt;/em&gt;&lt;a title="Infragistics on Twitter" href="https://twitter.com/infragistics" target="_blank"&gt;@Infragistics&lt;/a&gt;&lt;em&gt;&lt;/em&gt;&lt;em&gt; and stay in touch on &lt;a title="Infragistics on Facebook" href="http://www.facebook.com/infragistics" target="_blank"&gt;Facebook&lt;/a&gt;&lt;/em&gt;&lt;em&gt;&lt;/em&gt;&lt;em&gt;, &lt;a title="Infragistics on Google+" href="https://plus.google.com/110651137371189140377" target="_blank"&gt;Google+&lt;/a&gt;&lt;/em&gt;&lt;em&gt;&lt;/em&gt;&lt;em&gt; and &lt;a title="Infragistics on LinkedIn" href="http://www.linkedin.com/company/16069" target="_blank"&gt;LinkedIn&lt;/a&gt;&lt;/em&gt;&lt;em&gt;&lt;/em&gt;&lt;em&gt;!&lt;/em&gt;&lt;/em&gt;&lt;/p&gt;</description></item><item><title> jQuery Mobile Controls by Infragistics</title><link>http://community.infragistics.com/blogs/damyan_petev/archive/2012/05/18/infragistics-jquery-mobile-controls.aspx</link><pubDate>Fri, 18 May 2012 14:33:00 GMT</pubDate><guid isPermaLink="false">7a8b7c76-b7ad-48e0-9694-5b04ca132ed0:351478</guid><dc:creator>dpetev</dc:creator><description>&lt;p&gt;With the &lt;a target="_blank" href="http://www.infragistics.com/dotnet/netadvantage/jquery-controls.aspx"&gt;jQuery product&lt;/a&gt; Infragistics envisioned business intelligence and data visualization across a range of platforms, not just one &amp;ndash; more like every single one of them. Built on popular and largely supported HTML5 and jQuery UI and striving to provide a comprehensive toolset for development of performant and stylish applications that are to run on every device regardless of the OS. On top of that &amp;lsquo;mobile&amp;#39; was a subtle, yet dominant theme across our product line with the latest release. Touch support and metro themes everywhere! But there&amp;rsquo;s more to it &amp;ndash; the jQuery UI is awesome and will run on just about any modern browser, yet it was not specifically designed for mobile devices, not until recently anyway! &lt;a title="jQuery Mobile: Touch-Optimized Web Framework for Smartphones &amp;amp; Tablets" href="http://jquerymobile.com/" target="_blank"&gt;jQuery&amp;rsquo;s Mobile framework&lt;/a&gt; is-&amp;nbsp; still relatively fresh, but it is just what you might need &amp;ndash; it&amp;rsquo;s touch optimized, it&amp;rsquo;s compatible with with most smartphones and tablets and other frameworks(like PhoneGap). It is designed to be lightweight and its UI controls designed for pocket-size pages and touch, but it&amp;rsquo;s not limited to that, as mobile pages will scale to the screen so it would work and look just as good on a bigger tablet and even a desktop(check out their &lt;a title="jQuery Mobile Demos and Docs" href="http://jquerymobile.com/demos/1.1.0/" target="_blank"&gt;demos&lt;/a&gt; using nothing but the framework). As with JQuery UI, it&amp;rsquo;s a strong cross-platform solution with a different perspective but the same goal &amp;ndash; beautiful, powerful, universal solutions to your app problems. It sounds too good to miss, right? We thought so too&amp;hellip;&lt;/p&gt;
&lt;h1&gt;Enter the Infragistics jQuery Mobile controls &lt;/h1&gt;
&lt;p&gt;With this release besides all controls taking on a touch-friendly nature, our NetAdvantage for jQuery family grew with specialized mobile controls leveraging the jQuery Mobile framework &amp;ndash; the &lt;a title="jQuery Mobile List View" href="http://www.infragistics.com/Control.aspx?id=22952#Overview" target="_blank"&gt;Mobile List View&lt;/a&gt; and a mobile version of the &lt;a title="jQuery Mobile Rating" href="http://www.infragistics.com/Control.aspx?id=22954#Overview" target="_blank"&gt;Rating&lt;/a&gt;. As explained, with them the focus is on mobile-centric and gesture-friendly UI. That means optimizations for mobile devices for stuff like better content placement and some specific interactions along with touch support &amp;ndash; larger UI elements to interact with and specialized events like tap hold, swipes, etc. &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;The List view&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Sometimes for small screen devices like smartphone a full-fledged grid control would be somewhat hard to imagine and hardly optimal in terms of productivity. It&amp;rsquo;s why mobile design, while trying to fit as much functionality in a limited space as possible, must not clutter or expect to fit everything in one page. This is why the mobile framework provides AJAX based navigation between pages (and by pages I mean their mobile version and multiples can very well exist in one html file). This is also where a control such as the list comes in play &amp;ndash; think of it as the mobile version of the grid type control &amp;ndash; it fits the environment well, it&amp;rsquo;s easy to interact with, it can hold a lot of data and it can be hierarchical! The igListView is a widget that implements a hierarchical (nested) mobile list. Defining can be done in both in the well-known JavaScript/jQuery or using our ASP.NET (MVC) helpers. There&amp;rsquo;s also a third method that is also the default method for the mobile framework &amp;ndash; a pure markup definition that also has some plus sides. Settings are made via the HTML &amp;ldquo;data-*&amp;rdquo; attributes that are mostly for data storage and ignored by browsers when interpreting UI. So for a list you can simple define the standard UL and LI elements and if for some reason jQuery scripts fail to load or execute the browser would still have valid UI to render.&lt;/p&gt;
&lt;p&gt;Now that approach wouldn&amp;rsquo;t be very appropriate if you need some serious amount of data and the Infragistics Mobile ListView comes with a &lt;span style="text-decoration:underline;"&gt;major data support enhancements&lt;/span&gt;, one of which is &lt;strong&gt;templating&lt;/strong&gt;. That means not just controlling the markup of each record but also defining a single UL-LI element and point the widget to data and it will template it appropriately. The other major additions to data handling:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Search filtering with the added option of presets&lt;/li&gt;
&lt;li&gt;Using the Infragistics Data Source means the controls can bind to a variety of sources&lt;/li&gt;
&lt;li&gt;Sorting, sorting presets and groups separated with list deviders.&lt;/li&gt;
&lt;li&gt;Load on Demand capabilities&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img title="Infragistics jQuery Mobile List View with grouping and iOS theme in the default c swatch." alt="Infragistics jQuery Mobile List View with grouping and iOS theme in the default c swatch." src="http://media.infragistics.com/community/Release/12.1/jQuery/Mobile_Controls/igListView_grouping_ios_default-c-swatch.png" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;The Rating&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The mobile version of the rating control designed for touch means accuracy levels are restricted to whole numbers (or alternatively rounded to halves when the control is in read-only mode). The widget offers settings to control its layout along with getting and setting value, vote count and a changed value event along with the framework&amp;rsquo;s touch-oriented ones. And as expected you can always tweak the items the rating is using to some other shape or color.&lt;/p&gt;
&lt;p&gt;&lt;img title="Infragistics jQuery Mobile Rating with iOS theme in a swatch." alt="Infragistics jQuery Mobile Rating with iOS theme in a swatch." src="http://media.infragistics.com/community/Release/12.1/jQuery/Mobile_Controls/igRating_ios.png" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;Style&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;As you can tell by the screenshots above we&amp;rsquo;ve designed a beautiful iOS style theme for our mobile controls. And for any of you familiar with jQuery UI you&amp;rsquo;d expect a common and powerful themeing framework to be in play for mobile as well &amp;ndash; and there is! Our theme will style all default &lt;a href="http://www.infragistics.com"&gt;UI components&lt;/a&gt; as well and it can be replaced with one of your own. And yes, there&amp;rsquo;s a &lt;a title="ThemeRoller for jQuery Mobile" href="http://jquerymobile.com/themeroller/" target="_blank"&gt;ThemeRoller for jQuery Mobile&lt;/a&gt;! It&amp;rsquo;s very easy to use &amp;ndash; all mobile themes have 3 swatches that are usually used for default layouts and actions. Just like that our iOS theme has 3 swatches &amp;ndash; a light C (default) swatch seen above with the list, darker B and the A swatch (the one with the exquisite fabric background above). I&amp;rsquo;ve made a theme myself for what was like 10 min in a metro-style attempt and I&amp;rsquo;ve included it in the demo just in case someone likes it:&lt;/p&gt;
&lt;p&gt;&lt;img title="Infragistics jQuery Mobile List View with grouping and ThemeRoller built metro style theme." alt="Infragistics jQuery Mobile List View with grouping and ThemeRoller built metro style theme." src="http://media.infragistics.com/community/Release/12.1/jQuery/Mobile_Controls/igListView_grouping_metro.png" /&gt;&lt;/p&gt;
&lt;h1&gt;A Mobile App&lt;/h1&gt;
&lt;p&gt;Let&amp;rsquo;s see how easy it can be to create a mobile app that is functional and stylish. We&amp;rsquo;ll stay on the wave of new technology for the demo and create this app using the new mobile template in ASP.NET MVC 4! What would that do is it would lay all the basic layout of the app for you &amp;ndash; referencing all jQuery scripts (mobile included) and styles, bundling and minifying them. It would also render your Views in the mobile version of a page by marking the content DIV with &lt;em&gt;data-role=&amp;quot;page&amp;quot;.&lt;/em&gt;&amp;nbsp; So all left to do is add the Infragistics Mobile Loader ask for the control you need and define it. For this demo I&amp;rsquo;ll use Northwind again with two actions in the controller returning JSON serialized parts of it for an somewhat odd-styled manual load on demand scenario for the details of each list item (again this is different from the load on demand feature the igListView has which allows the end-user to request another portion of data to be loaded for his current list). Here&amp;rsquo;s the snippet for the list:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:bb1f488b-e2f2-4a8f-903d-4fb953931604" class="wlWriterEditableSmartContent"&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:300px;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="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;script&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$.ig.loader({&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;scriptPath: &lt;span style="color:#800000;"&gt;&amp;quot;../../Scripts/Infragistics-mobile/js/&amp;quot;&lt;/span&gt;,&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cssPath: &lt;span style="color:#800000;"&gt;&amp;quot;../../Content/Infragistics-mobile/css/&amp;quot;&lt;/span&gt;,&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;resources: &lt;span style="color:#800000;"&gt;&amp;quot;igmList.Filtering.Sorting&amp;quot;&lt;/span&gt;,&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;theme: &lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background:#ffff00;color:#800000;"&gt;@&lt;/span&gt;ViewBag.Theme&lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;});&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;script&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;ul&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;id&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;actionFedList&amp;quot;&lt;/span&gt;&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#ff0000;"&gt;data-role&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;iglistview&amp;quot;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#ff0000;"&gt;data-auto-generate-layouts&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;false&amp;quot;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#ff0000;"&gt;data-data-source&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;/Home/Customers&amp;quot;&lt;/span&gt;&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#ff0000;"&gt;data-bindings-header-key&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;ContactName&amp;quot;&lt;/span&gt; &lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#ff0000;"&gt;data-bindings-primary-key&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;CustomerID&amp;quot;&lt;/span&gt; &lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#ff0000;"&gt;data-bindings-text-key&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;Country&amp;quot;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#ff0000;"&gt;data-auto-generate-layouts&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;false&amp;quot;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#ff0000;"&gt;data-initial-data-bind-depth&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;0&amp;quot;&lt;/span&gt;&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#ff0000;"&gt;data-bindings-details-title-key&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;CustomerID&amp;quot;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#ff0000;"&gt;data-sorting&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;true&amp;quot;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#ff0000;"&gt;data-sorting-type&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;local&amp;quot;&lt;/span&gt;&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#ff0000;"&gt;data-sorting-auto-generate-sort-presets&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;false&amp;quot;&lt;/span&gt; &lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#ff0000;"&gt;data-sorting-presets&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;#39;[ {&amp;quot;text&amp;quot;:&amp;quot;Customer ID&amp;quot;,&amp;quot;sortedFields&amp;quot;:[ {&amp;quot;fieldName&amp;quot;:&amp;quot;CustomerID&amp;quot;,&amp;quot;direction&amp;quot;:&amp;quot;asc&amp;quot;} ]}, {&amp;quot;text&amp;quot;:&amp;quot;Contact Name&amp;quot;,&amp;quot;sortedFields&amp;quot;:[ {&amp;quot;fieldName&amp;quot;:&amp;quot;ContactName&amp;quot;,&amp;quot;direction&amp;quot;:&amp;quot;asc&amp;quot;} ]}, {&amp;quot;text&amp;quot;:&amp;quot;Country&amp;quot;,&amp;quot;showGrouping&amp;quot;:&amp;quot;true&amp;quot;,&amp;quot;sortedFields&amp;quot;:[ {&amp;quot;fieldName&amp;quot;:&amp;quot;Country&amp;quot;,&amp;quot;direction&amp;quot;:&amp;quot;asc&amp;quot;} ]} ]&amp;#39;&lt;/span&gt;&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#ff0000;"&gt;data-filtering&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;true&amp;quot;&lt;/span&gt;&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#ff0000;"&gt;data-filtering-type&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;local&amp;quot;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#ff0000;"&gt;data-filtering-search-bar-field-name&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;ContactName,Country&amp;quot;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;li&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;ul&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;data-role&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;childLayout&amp;quot;&lt;/span&gt;&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#ff0000;"&gt;data-auto-generate-layouts&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;false&amp;quot;&lt;/span&gt;&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#ff0000;"&gt;data-data-source&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;/Home/Orders&amp;quot;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#ff0000;"&gt;data-bindings&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;#39;{&amp;quot;customerId&amp;quot;:&amp;quot;CustomerID&amp;quot;}&amp;#39;&lt;/span&gt;&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#ff0000;"&gt;data-inset&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;true&amp;quot;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#ff0000;"&gt;data-generate-compact-jsonresponse&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;false&amp;quot;&lt;/span&gt;&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#ff0000;"&gt;data-bindings-count-key&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;Freight&amp;quot;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#ff0000;"&gt;data-key&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;CustomerID&amp;quot;&lt;/span&gt;&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#ff0000;"&gt;data-bindings-header-key&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;OrderID&amp;quot;&lt;/span&gt; &lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#ff0000;"&gt;data-bindings-text-key&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;ShipName&amp;quot;&lt;/span&gt;&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;ul&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;li&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;ul&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Note i have my theme set using the MVC dynamic ViewBag and I choose (and let users choose) a theme and call the controller action with that theme. Since I can&amp;rsquo;t put comments I&amp;rsquo;ve grouped code to be easier to see which part does what. The magic combo here is &lt;em&gt;data-role=&amp;quot;iglistview&amp;rdquo;. &lt;/em&gt;Also note the data source can be a link (it&amp;rsquo;s the &lt;a title="Infragistics jQuery Data Source Online Samples" href="http://samples.infragistics.com/jquery/data-source" target="_blank"&gt;igDataSource&lt;/a&gt; after all) so local JSON, actions results, services, XML, oData and so on &amp;ndash; check! Defining header and text key are the properties in your data to be displayed for each record, the initial bind depth set to 0 will let the list know we have provided just the data for the main list (otherwise the list will ignore those layouts since child data is not loaded). Sorting and filtering are truly easy to enable with just a property and you can also customize them with presets and in them setting &lt;em&gt;&amp;quot;showGrouping&amp;quot;:&amp;quot;true &lt;/em&gt;causes the list to group the sorted results just like the screeenshots above. And yes you can define custom sorting functions and group comparers if you so desire, but for our basic demo there&amp;rsquo;s no need. In the child layout we again set the source to a actiong link and the &lt;span style="text-decoration:underline;"&gt;&lt;em&gt;data-bindings=&amp;#39;{&amp;quot;customerId&amp;quot;:&amp;quot;CustomerID&amp;quot;}&amp;#39;&lt;/em&gt; &lt;span style="text-decoration:underline;"&gt;property instructs the list to include this as part of the links query so we can send the data for the right customer and the result:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;img title="Infragistics jQuery Mobile List View auto generated details sub page(default b swatch)" alt="Infragistics jQuery Mobile List View auto generated details sub page(default b swatch)" src="http://media.infragistics.com/community/Release/12.1/jQuery/Mobile_Controls/igListView_ios_details.png" /&gt;&lt;/p&gt;
&lt;p&gt;This sub-page is all auto-generated for you, navigated to using AJAX, back button and history maintained!&lt;/p&gt;
&lt;p&gt;Adding the rating is just as easy, again either through markup, helpers or initializing with script. Also as we mentioned you have the ability to now develop against specialized touch events so you can provide that little extra interaction to mobile users &amp;ndash; we would use the long tap gesture to reset the rating and also handle the changed event:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:b161fe58-6efc-4cae-b907-b662c7f13fe7" class="wlWriterEditableSmartContent"&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:300px;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:#ffff00;"&gt;@&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;using&lt;/span&gt; Infragistics.Web.Mvc&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;script&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#006400;"&gt;//load the resources:&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$.ig.loader({&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;scriptPath: &lt;span style="color:#800000;"&gt;&amp;quot;../../Scripts/Infragistics-mobile/js/&amp;quot;&lt;/span&gt;,&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cssPath: &lt;span style="color:#800000;"&gt;&amp;quot;../../Content/Infragistics-mobile/css/&amp;quot;&lt;/span&gt;,&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;resources: &lt;span style="color:#800000;"&gt;&amp;quot;igmRating&amp;quot;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;});&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#006400;"&gt;// show the changed value&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$(document).delegate(&lt;span style="color:#800000;"&gt;&amp;quot;#rating&amp;quot;&lt;/span&gt;, &lt;span style="color:#800000;"&gt;&amp;quot;igratingvaluechange&amp;quot;&lt;/span&gt;, &lt;span style="color:#0000ff;"&gt;function&lt;/span&gt; (evt, ui) {&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; voteCount = $(&lt;span style="color:#800000;"&gt;&amp;quot;.selector&amp;quot;&lt;/span&gt;).igRating(&lt;span style="color:#800000;"&gt;&amp;quot;option&amp;quot;&lt;/span&gt;, &lt;span style="color:#800000;"&gt;&amp;quot;voteCount&amp;quot;&lt;/span&gt;);&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$(&lt;span style="color:#800000;"&gt;&amp;quot;#ratingValue&amp;quot;&lt;/span&gt;).text(&lt;span style="color:#800000;"&gt;&amp;quot;Rated: &amp;quot;&lt;/span&gt; + ui.value + &lt;span style="color:#800000;"&gt;&amp;quot; star(s)!&amp;quot;&lt;/span&gt;);&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;});&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#006400;"&gt;// reset the rating on tap hol&lt;/span&gt;&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$(document).bind(&lt;span style="color:#800000;"&gt;&amp;quot;#rating&amp;quot;&lt;/span&gt;, &lt;span style="color:#800000;"&gt;&amp;quot;taphold&amp;quot;&lt;/span&gt;, &lt;span style="color:#0000ff;"&gt;function&lt;/span&gt; (evt, ui) {&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (!Modernizr.touch) {&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;false&lt;/span&gt;;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$(&lt;span style="color:#800000;"&gt;&amp;quot;#rating&amp;quot;&lt;/span&gt;).igRating(&lt;span style="color:#800000;"&gt;&amp;quot;value&amp;quot;&lt;/span&gt;, 0);&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}); &lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;script&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;h2&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;some rating&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;h2&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;P&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt; Tap to set value, tap and hold to reset (zero). &lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;P&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&lt;span style="color:#006400;"&gt;&amp;lt;!-- Markup defined --&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;div&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;id&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;rating&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;data-role&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;igrating&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;data-value&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;3&amp;quot;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;div&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;p&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;id&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;ratingValue&amp;quot;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;p&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;p&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt; Read-only Rating defined with the MVC helper:&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;p&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&lt;span style="background:#ffff00;"&gt;@(&lt;/span&gt;Html.InfragisticsMobile().Rating()&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.Value(4)&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.ReadOnly(&lt;span style="color:#0000ff;"&gt;true&lt;/span&gt;)&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.Render()&lt;/li&gt;
&lt;li&gt;&lt;span style="background:#ffff00;"&gt;)&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;You can get and set rating&amp;rsquo;s value and vote count at all times and the changed event offers both the new and old values along with regular references to owner and so on. Read-only mode rating converts to a smaller form (no longer need to be big enough to be touched):&lt;/p&gt;
&lt;p&gt;&lt;img title="Infragistics jQuery Mobile Rating with iOS theme in default c swatch and read-only version." alt="Infragistics jQuery Mobile Rating with iOS theme in default c swatch and read-only version." src="http://media.infragistics.com/community/Release/12.1/jQuery/Mobile_Controls/igRating_readonly_ios_default_swatch.png" /&gt;&lt;/p&gt;
&lt;p&gt;And, lastly, you can always override the default images or their locations to change the appearance of the control to match your theme. Below I&amp;rsquo;ve change the non-iOS default stars for the rating form yellow to blue to match my theme&amp;rsquo;s looks:&lt;/p&gt;
&lt;p&gt;&lt;img title="Infragistics jQuery Mobile Rating with iOS theme in ThemeRoller built metro style theme and customized items." alt="Infragistics jQuery Mobile Rating with iOS theme in ThemeRoller built metro style theme and customized items." src="http://media.infragistics.com/community/Release/12.1/jQuery/Mobile_Controls/igRating_metro.png" /&gt;&lt;/p&gt;
&lt;h1&gt;Wrapping Up&lt;/h1&gt;
&lt;p&gt;If you want to build a mobile friendly app the jQuery Mobile framework is an excellent choice and we are offering that extra functionality for you to take advantage of &amp;ndash; hierarchical list with templating, advanced filtering, sorting, grouping and impressive load on demand features and support for a wide array of data sources and a beautiful mobile rating optimized for touch interactions to truly score you those five stars! And there&amp;rsquo;s a bonus &amp;ndash; everything is optimized for mobile devices, but it looks and works perfectly good on a desktop as well!&lt;/p&gt;
&lt;p&gt;&lt;em&gt;I strongly recommend to take a closer look into jQuery Mobile and check out our&lt;span style="text-decoration:underline;"&gt; &lt;/span&gt;&lt;/em&gt;&lt;a title="NetAdvantage for jQuery Online Samples" href="http://samples.infragistics.com/jquery" target="_blank"&gt;&lt;em&gt;awesome samples&lt;/em&gt;&lt;/a&gt;&lt;em&gt; (there are codes in there for you to scan and try them on you mobile device too!). Also you can download a fully functional unlimited trial of &lt;/em&gt;&lt;a title="The best HTML5 applications call for brilliant Data Visualization and jaw-dropping performance!" href="http://www.infragistics.com/dotnet/netadvantage/jquery-controls.aspx#Overview" target="_blank"&gt;&lt;em&gt;NetAdvantage for jQuery&lt;/em&gt;&lt;/a&gt;&lt;em&gt; and the &lt;/em&gt;&lt;a title="Infragistics jQuery Mobile List view and Rating ASP.NET MVC 4 Demo app." href="http://media.infragistics.com/community/Release/12.1/jQuery/Mobile_Controls/jQueryMobile_List_Rating.zip"&gt;&lt;em&gt;Demo Project for this Blog&lt;/em&gt;&lt;/a&gt;&lt;em&gt; &amp;ndash; an APS.NET MVC 4 mobile application you&amp;rsquo;ve seen bits from above and should definitely try!&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Follow us on Twitter &lt;/em&gt;&lt;a title="That would be me" href="https://twitter.com/DamyanPetev" target="_blank"&gt;&lt;em&gt;@DamyanPetev&lt;/em&gt;&lt;/a&gt;&lt;em&gt; and &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 join the competition 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;/p&gt;</description></item><item><title>Column Templates for the jQuery Grids</title><link>http://community.infragistics.com/blogs/damyan_petev/archive/2012/04/17/column-templates-for-the-jquery-grids.aspx</link><pubDate>Tue, 17 Apr 2012 15:45:00 GMT</pubDate><guid isPermaLink="false">7a8b7c76-b7ad-48e0-9694-5b04ca132ed0:344979</guid><dc:creator>dpetev</dc:creator><description>&lt;p&gt;In my last blog I mentioned that our jQuery Grids are getting a new column template option that would also be using our new &lt;a href="http://blogs.infragistics.com/blogs/damyan_petev/archive/2012/04/09/new-high-performance-jquery-templating-engine.aspx" title="High Performance jQuery Templating Engine included in NetAdvantage for jQuery 12.1"&gt;high performance Templating engine&lt;/a&gt; and in this blog will try to expand on both templating and what can you do with it in the grids. And, yes, I keep mentioning grids because this will seamlessly work with both the flat data Grid and the Hierarchical Grid(as it would create instances of the flat grid to build its nested layouts) - you will soon be able to apply templates on every column.&lt;/p&gt;
&lt;p&gt;Now as mentioned before, the Templating Engine functionality is integrated with multiple controls,among which are the grids. That translates in a few benefits &amp;ndash; you get igTemplating scripts the moment you load the grid and the grid internally will call the templating function and provide data and so on. All you have to worry about is providing the template string. So the way templates work with the controls remains pretty much the same and you might not feel the change at all. When you do, though, you can start use the new column template functionality &amp;ndash; similar to the existing row template, but rather than making a template for all the columns in the row, you can now create a template for just that one column you are interested in! That should be a step forward in terms of flexibility and getting what you need done fast. &lt;/p&gt;
&lt;h1&gt;Just a few steps&lt;/h1&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;Adding in scripts&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Now that is yet another subject we&amp;rsquo;ve been sharing bits here and there &amp;ndash; for 12.1 we have a loader control that is there to handle scripts and styles for you (you can check out this blog post on &lt;a href="http://blogs.infragistics.com/blogs/atanas_dyulgerov/archive/2012/04/11/using-the-infragistics-loader-to-manage-resource-references.aspx" title="Using the Infragistics jQuery Loader to manage resources"&gt;using the jQuery Loader to manage resources&lt;/a&gt;). The best part is that it follows the dependencies of the control you need and loads them too. That should explain why this:&lt;/p&gt;
&lt;div class="wlWriterEditableSmartContent" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:3d905a90-068b-41be-b9e8-490d3dea54cb" style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top: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:400px;overflow:auto;"&gt;&lt;ol style="background:#ffffff;margin:0 0 0 2em;padding:0 0 0 5px;white-space:nowrap;"&gt;
&lt;li&gt;$.ig.loader({&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;scriptPath: &lt;span style="color:#800000;"&gt;&amp;quot;../../Scripts/js/&amp;quot;&lt;/span&gt;,&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cssPath: &lt;span style="color:#800000;"&gt;&amp;quot;../../Content/css/&amp;quot;&lt;/span&gt;,&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;resources: &lt;span style="color:#800000;"&gt;&amp;quot;igGrid.Paging&amp;quot;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;});&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;would result in loading those files:&lt;/p&gt;
&lt;p&gt;&lt;img src="http://media.infragistics.com/community/Release/12.1/jQuery/Grids_Column_Template/Scripts.png" alt="Infragistics jQuery Loader managing dependencies - Templating as integral part of the grids" title="Infragistics jQuery Loader managing dependencies - Templating as integral part of the grids" /&gt;&lt;/p&gt;
&lt;p&gt;Notice the templating in there? Of course the same result would be observed if you use Hierarchical Grid instead or the ASP.NET MVC wrapper:&lt;/p&gt;
&lt;div class="wlWriterEditableSmartContent" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:eb6b1c51-6246-4fa1-a4ed-82eee3da8c2d" style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top: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:400px;overflow:auto;"&gt;&lt;ol style="background:#ffffff;margin:0 0 0 2em;padding:0 0 0 5px;white-space:nowrap;"&gt;
&lt;li&gt;&lt;span style="background:#ffff00;"&gt;@(&lt;/span&gt; Html.Infragistics().Loader()&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.CssPath(&lt;span style="color:#a31515;"&gt;&amp;quot;../../Content/css/&amp;quot;&lt;/span&gt;)&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.ScriptPath(&lt;span style="color:#a31515;"&gt;&amp;quot;../../Scripts/js/&amp;quot;&lt;/span&gt;)&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.Render()&lt;span style="background:#ffff00;"&gt;)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="background:#ffff00;"&gt;@(&lt;/span&gt; Html.Infragistics()&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.Grid(Model) &lt;span style="color:#008000;"&gt;//continues...&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;Template strings&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;As mentioned above, functionality remains the same &amp;ndash; the grid will handle templating internally and you provide the sting only. For this example let&amp;rsquo;s assume you are to display Customers (and optionally Orders) from the Northwind database and you already have a controller action exposing it. That means that in your templates you can use the data fields by name (just keep in mind it is case sensitive). Templates can be provided within or separately from the grid definition if you want to keep it neat. Let&amp;rsquo;s turn the &amp;lsquo;Country&amp;rsquo; field into a flag rather than simple text:&lt;/p&gt;
&lt;div class="wlWriterEditableSmartContent" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:42458e54-7278-42cf-a2f7-4766c73ca360" style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top: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:#fff;overflow:auto;"&gt;&lt;ol style="background:#ffffff;margin:0;padding:0 0 0 5px;"&gt;
&lt;li&gt;&lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; CountryTemplate = &lt;span style="color:#800000;"&gt;&amp;quot;&amp;lt;img alt=\&amp;quot;${Country}\&amp;quot; src=\&amp;quot;http://upload.wikimedia.org/wikipedia/commons/thumb/b/ba/Flag_of_${Country}.svg/167px-Flag_of_${Country}.svg.png\&amp;quot; &amp;gt;&amp;lt;/img&amp;gt;&amp;quot;&lt;/span&gt;;&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;A simple &amp;lt;img&amp;gt; tag would do the trick and the source images are actually the thumbnails from Wikimedia&amp;rsquo;s &lt;a href="http://commons.wikimedia.org/wiki/Sovereign-state_flags" title="Sovereign-state flags page - Wikimedia Commons"&gt;Sovereign-state flags page&lt;/a&gt;. While this would work for most, there are some exceptions (like UK and USA as seen in Northwind, rather than the full name used for the images) and the results are not quite there yet:&lt;/p&gt;
&lt;p&gt;&lt;img src="http://media.infragistics.com/community/Release/12.1/jQuery/Grids_Column_Template/CountryTemplate.png" alt="Infragistics jQuery Grid with image Column Template" title="Infragistics jQuery Grid with image Column Template" /&gt;&lt;/p&gt;
&lt;p&gt;To improve on that we would use some conditional blocks to make our template flexible. The engine provides support for logic like the following:&lt;/p&gt;
&lt;p&gt;&lt;em&gt;{{if &amp;lt;condition1&amp;gt;}} &amp;lt;template1&amp;gt; {{elseif &amp;lt;condition2&amp;gt;}} &amp;lt;template2&amp;gt; {{else}} &amp;lt;default template&amp;gt; {{/if}}&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;And here&amp;rsquo;s the full template once we apply that:&lt;/p&gt;
&lt;div class="wlWriterEditableSmartContent" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:a9d9b2a3-378c-47d6-aee2-a4e1a4bebeab" style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top: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:100px;overflow:auto;"&gt;&lt;ol style="background:#ffffff;margin:0 0 0 2em;padding:0 0 0 5px;white-space:nowrap;"&gt;
&lt;li&gt;&lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; CountryTemplate = &lt;span style="color:#800000;"&gt;&amp;quot;{{if ${Country} == \&amp;#39;UK\&amp;#39;}} &amp;lt;img alt=\&amp;quot;${Country}\&amp;quot; src=\&amp;quot;http://upload.wikimedia.org/wikipedia/commons/thumb/a/ae/Flag_of_the_United_Kingdom.svg/200px-Flag_of_the_United_Kingdom.svg.png\&amp;quot;&amp;quot;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;+ &lt;span style="color:#800000;"&gt;&amp;quot;{{elseif ${Country} == \&amp;#39;USA\&amp;#39;}} &amp;lt;img alt=\&amp;quot;${Country}\&amp;quot; src=\&amp;quot;http://upload.wikimedia.org/wikipedia/commons/thumb/a/a4/Flag_of_the_United_States.svg/190px-Flag_of_the_United_States.svg.png\&amp;quot; &amp;gt;&amp;lt;/img&amp;gt;&amp;quot;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;+ &lt;span style="color:#800000;"&gt;&amp;quot;{{else}} &amp;lt;img alt=\&amp;quot;${Country}\&amp;quot; src=\&amp;quot;http://upload.wikimedia.org/wikipedia/commons/thumb/b/ba/Flag_of_${Country}.svg/167px-Flag_of_${Country}.svg.png\&amp;quot; &amp;gt;&amp;lt;/img&amp;gt; {{/if}}&amp;quot;&lt;/span&gt;;&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;And while still on the subject of conditional templates let&amp;rsquo;s do little trick for the column showing the customer ID. For the sake of the example lets have a special treatment for countries begging with &amp;lsquo;U&amp;rsquo;. How would we do that? The trick is that when you use conditional blocks, what is inside that block will be compiled as JavaScript code, unlike simple substitution that will only produce a string for a performance boost. That means you can call various functions and use JavaScript logic there:&lt;/p&gt;
&lt;div class="wlWriterEditableSmartContent" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:0c4c0821-728e-4a36-b614-472ac1f6f6b0" style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top: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:#fff;overflow:auto;"&gt;&lt;ol style="background:#ffffff;margin:0;padding:0 0 0 5px;"&gt;
&lt;li&gt;&lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; CustomerTemplate = &lt;span style="color:#800000;"&gt;&amp;#39;# Invisible comment text # {{if ${Country}.lastIndexOf(&amp;quot;U&amp;quot;, 0) === 0 }}&amp;lt;p style=\&amp;#39;color:rgb(0, 175, 235);\&amp;#39;&amp;gt;Conpany: ${CompanyName} &amp;lt;p&amp;gt; {{else}}Customer ID: ${CustomerID} {{/if}}&amp;#39;&lt;/span&gt;;&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Note the usage of &amp;lsquo;lastIndexOf&amp;rsquo; method, which would compare the index of the last discovered &amp;lsquo;U&amp;rsquo; char while checking only the first position in the country and in the same way this can be a custom function to perform more complicated checks. Results from the above improvements look like so:&lt;/p&gt;
&lt;p&gt;&lt;img src="http://media.infragistics.com/community/Release/12.1/jQuery/Grids_Column_Template/CountryTemplate_ImprovedConditional.png" alt="Infragistics jQuery Grid with conditional and multi-conditional Column Templates" title="Infragistics jQuery Grid with conditional and multi-conditional Column Templates" /&gt;&lt;/p&gt;
&lt;p&gt;Note the middle row displays the company name instead the the ID and the flag is now with proper source.&lt;/p&gt;
&lt;p&gt;Besides complicated conditional logic you can also use &amp;lsquo;each&amp;rsquo; block to produce the kind of template you need. Examples for that would be creating HTML list to be transformed into a tree control or select element. In both cases the loop would be required to go through all the internal items:&lt;/p&gt;
&lt;div class="wlWriterEditableSmartContent" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:843ed8bb-61a4-4b03-afc6-07821ab0d2e4" style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top: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:#fff;max-height:400px;overflow:auto;"&gt;&lt;ol style="background:#ffffff;margin:0;padding:0 0 0 5px;"&gt;
&lt;li&gt;&lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; OrdersTemplate = &lt;span style="color:#800000;"&gt;&amp;quot;&amp;lt;select id=\&amp;quot;IdSelect\&amp;quot;&amp;gt;{{each ${Orders} }}&amp;nbsp;&amp;nbsp;&amp;lt;option&amp;gt;${Orders.OrderID}&amp;lt;/option&amp;gt;&amp;nbsp;&amp;nbsp;{{/each}}&amp;lt;/select&amp;gt;&amp;quot;&lt;/span&gt;;&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;The default select will contain all the OrderID-s for the current record. You can drill down the hierarchy even though some of those fields might not be included in the layout(but are in the data) and you can assign various attributes to your template markup which can then be used as targets for scripts and styles. Using that technique can provide great versatility in regards to what kind of content you have in your grid (turning numbers into ratings, taking child data to create a chart, etc. ).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;Setting up the grid&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;What is left is to add a grid to your page (flat data or a hierarchical) and use the new &amp;lsquo;template&amp;rsquo; property available for column options (of course you can apply templates to the child layouts). In the definition you will see the templates defined above assigned to columns, a template applied to the child layout inline and the dataRendered event used to transform the select elements into igCombo controls:&lt;/p&gt;
&lt;div class="wlWriterEditableSmartContent" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:39cbd604-ca6d-48ab-85f2-566094627deb" style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top: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="color:#800000;"&gt;&amp;quot;#grid&amp;quot;&lt;/span&gt;).igHierarchicalGrid({&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;height: &lt;span style="color:#800000;"&gt;&amp;quot;400px&amp;quot;&lt;/span&gt;,&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;width: &lt;span style="color:#800000;"&gt;&amp;quot;650px&amp;quot;&lt;/span&gt;,&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;autoGenerateColumns: &lt;span style="color:#0000ff;"&gt;false&lt;/span&gt;,&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;autoGenerateLayouts: &lt;span style="color:#0000ff;"&gt;false&lt;/span&gt;,&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;initialDataBindDepth: 1,&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;primaryKey: &lt;span style="color:#800000;"&gt;&amp;quot;CustomerID&amp;quot;&lt;/span&gt;,&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;defaultChildrenDataProperty: &lt;span style="color:#800000;"&gt;&amp;quot;Orders&amp;quot;&lt;/span&gt;,&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;dataSource: &lt;span style="color:#800000;"&gt;&amp;quot;/Home/CustomersAndOrders&amp;quot;&lt;/span&gt;,&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;columns: [&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{ headerText: &lt;span style="color:#800000;"&gt;&amp;quot;Customer ID&amp;quot;&lt;/span&gt;, key: &lt;span style="color:#800000;"&gt;&amp;quot;CustomerID&amp;quot;&lt;/span&gt;, dataType: &lt;span style="color:#800000;"&gt;&amp;quot;string&amp;quot;}&lt;/span&gt;,&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{ headerText: &lt;span style="color:#800000;"&gt;&amp;quot;City&amp;quot;&lt;/span&gt;, key: &lt;span style="color:#800000;"&gt;&amp;quot;City&amp;quot;&lt;/span&gt;, dataType: &lt;span style="color:#800000;"&gt;&amp;quot;string&amp;quot;&lt;/span&gt; },&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{ headerText: &lt;span style="color:#800000;"&gt;&amp;quot;Country&amp;quot;&lt;/span&gt;, key: &lt;span style="color:#800000;"&gt;&amp;quot;Country&amp;quot;&lt;/span&gt;, dataType: &lt;span style="color:#800000;"&gt;&amp;quot;string&amp;quot;&lt;/span&gt;, template: CountryTemplate },&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{ headerText: &lt;span style="color:#800000;"&gt;&amp;quot;Orders&amp;quot;&lt;/span&gt;, key: &lt;span style="color:#800000;"&gt;&amp;quot;EntityState&amp;quot;&lt;/span&gt;, template: OrdersTemplate} &lt;span style="color:#006400;"&gt;//this column is just used to host the selects&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;],&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;columnLayouts: [{&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;key: &lt;span style="color:#800000;"&gt;&amp;quot;Orders&amp;quot;&lt;/span&gt;,&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;childrenDataProperty: &lt;span style="color:#800000;"&gt;&amp;quot;Orders&amp;quot;&lt;/span&gt;,&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;autoGenerateColumns: &lt;span style="color:#0000ff;"&gt;false&lt;/span&gt;,&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;autoGenerateLayouts: &lt;span style="color:#0000ff;"&gt;false&lt;/span&gt;,&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;primaryKey: &lt;span style="color:#800000;"&gt;&amp;quot;OrderID&amp;quot;&lt;/span&gt;,&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;columns: [&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{ headerText: &lt;span style="color:#800000;"&gt;&amp;quot;Order ID&amp;quot;&lt;/span&gt;, key: &lt;span style="color:#800000;"&gt;&amp;quot;OrderID&amp;quot;&lt;/span&gt;, dataType: &lt;span style="color:#800000;"&gt;&amp;quot;number&amp;quot;&lt;/span&gt; },&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{ headerText: &lt;span style="color:#800000;"&gt;&amp;quot;Freight&amp;quot;&lt;/span&gt;, key: &lt;span style="color:#800000;"&gt;&amp;quot;Freight&amp;quot;&lt;/span&gt;, dataType: &lt;span style="color:#800000;"&gt;&amp;quot;number&amp;quot;&lt;/span&gt;, template: &lt;span style="color:#800000;"&gt;&amp;quot;Freight: &amp;lt;b&amp;gt;${Freight}&amp;lt;/b&amp;gt;&amp;quot;&lt;/span&gt; },&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{ headerText: &lt;span style="color:#800000;"&gt;&amp;quot;Shipped Date&amp;quot;&lt;/span&gt;, key: &lt;span style="color:#800000;"&gt;&amp;quot;ShippedDate&amp;quot;&lt;/span&gt;, dataType: &lt;span style="color:#800000;"&gt;&amp;quot;date&amp;quot;&lt;/span&gt; }&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;],&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;features: [&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{ name: &lt;span style="color:#800000;"&gt;&amp;quot;GroupBy&amp;quot;&lt;/span&gt;,&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;tyoe: &lt;span style="color:#800000;"&gt;&amp;quot;local&amp;quot;&lt;/span&gt;&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;]&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}],&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;features: [&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{ name: &lt;span style="color:#800000;"&gt;&amp;quot;Paging&amp;quot;&lt;/span&gt;,&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;type: &lt;span style="color:#800000;"&gt;&amp;quot;local&amp;quot;&lt;/span&gt;,&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pageSize: 10,&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;showPageSizeDropDown: &lt;span style="color:#0000ff;"&gt;false&lt;/span&gt;&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;},&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{ name: &lt;span style="color:#800000;"&gt;&amp;quot;Sorting&amp;quot;&lt;/span&gt;,&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;type: &lt;span style="color:#800000;"&gt;&amp;quot;local&amp;quot;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;],&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;dataRendered: &lt;span style="color:#0000ff;"&gt;function&lt;/span&gt; (evt, ui) {&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$(&lt;span style="color:#800000;"&gt;&amp;quot;select[id~=\&amp;quot;IdSelect\&amp;quot;]&amp;quot;&lt;/span&gt;).igCombo({&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;width: &lt;span style="color:#800000;"&gt;&amp;quot;100px&amp;quot;&lt;/span&gt;,&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;selectionChanged: &lt;span style="color:#0000ff;"&gt;function&lt;/span&gt; (evt, ui) {&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ui.owner.element.parent().append(&lt;span style="color:#800000;"&gt;&amp;quot;Selected: &amp;quot;&lt;/span&gt; + ui.items[0].text);&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;});&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#006400;"&gt;//clear selections&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$(&lt;span style="color:#800000;"&gt;&amp;quot;select[id~=\&amp;quot;IdSelect\&amp;quot;]&amp;quot;&lt;/span&gt;).igCombo(&lt;span style="color:#800000;"&gt;&amp;quot;selectedIndex&amp;quot;&lt;/span&gt;, -1);&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/li&gt;
&lt;li&gt;});&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;While the logic provided to handle the selection changed on the combo is rather simplistic, it is there to mark the possibility. And the resulting grid from the definition above combined with the templates looks like this:&lt;/p&gt;
&lt;p&gt;&lt;img src="http://media.infragistics.com/community/Release/12.1/jQuery/Grids_Column_Template/Hierarchical_Grid_Templates_Combo.png" alt="Infragistics jQuery Hierarchical Grid with multi-conditional Column Templates, templated combo control and child layout column." title="Infragistics jQuery Hierarchical Grid with multi-conditional Column Templates, templated combo control and child layout column." /&gt;&lt;/p&gt;
&lt;h1&gt;Conclusion&lt;/h1&gt;
&lt;p&gt;The Templating Engine provides plenty of functionality and now with column templates you can apply that just where it&amp;rsquo;s needed with familiar experience. While the snippet above uses a hierarchical grid, it is just to show it is possible to template the child layouts and the flat data grid would be templated in very much the same manner. You&amp;rsquo;ve seen some ideas on how you can make use of such features, but really what you can do with that is down to your needs and creativity!&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Update: Download &lt;strong&gt;&lt;a href="http://media.infragistics.com/community/Release/12.1/jQuery/Grids_Column_Template/Column_Templates_Demo.zip" title="The demo project."&gt;the demo project&lt;/a&gt;&lt;/strong&gt; - an ASP.NET MVC application used as base, with two views - one where the grid is defined using the helper and one with nothing but pure script. Keep in mind you will need at least a Trial version of our&lt;a target="_blank" href="http://www.infragistics.com/dotnet/netadvantage/jquery-controls.aspx#Overview" title="jQuery Controls, brilliant Data Visualization and jaw-dropping performance - part of Infragistics&amp;#39; NetAdvantage product family."&gt; jQuery controls&lt;/a&gt; (it&amp;#39;s free!).&lt;/em&gt;&lt;/p&gt;</description></item><item><title>New High Performance jQuery Templating Engine</title><link>http://community.infragistics.com/blogs/damyan_petev/archive/2012/04/09/new-high-performance-jquery-templating-engine.aspx</link><pubDate>Mon, 09 Apr 2012 06:33:00 GMT</pubDate><guid isPermaLink="false">7a8b7c76-b7ad-48e0-9694-5b04ca132ed0:343316</guid><dc:creator>dpetev</dc:creator><description>&lt;p&gt;As an avid reader of our blogs (we are sure you are), you might have noticed some topics regarding templating our controls or parts of them. As part of that came a minor catch &amp;ndash; templating required (and as long as we are waiting for 12.1, it still does) the &lt;a href="http://api.jquery.com/category/plugins/templates/" title="jQuery Templates Plugin page"&gt;jQuery Templates Plugin&lt;/a&gt; and as a part of roadmap change it was decided that it will not be developed past its current beta status and an entirely new one is in planning. We strive to provide a well-rounded package of functionality with our jQuery product, so you wouldn&amp;rsquo;t usually need to look for additional solutions to support out controls. Along with that, we make sure to pack plenty of all the advantages new technologies provide so you get a product that goes..fast! I pointed those two ideology pillars of the product, because both of them led to the creation of our very own Template Engine &amp;ndash; we made sure our users can use such features, while being certain we would provide support and most importantly we will strive to make the most out of it &amp;ndash; we offer controls supporting very large amounts of data and now we offer the engine to template them &lt;strong&gt;&lt;em&gt;swiftly&lt;/em&gt;&lt;/strong&gt;.&lt;/p&gt;
&lt;h1&gt;Introduction&lt;/h1&gt;
&lt;p&gt;Let&amp;rsquo;s provide some basics for those unfamiliar with templating. Such technique provides a way to define a one layout(to be applied to many records) and indicate how and where each piece of your data &lt;strong&gt;&lt;em&gt;should&lt;/em&gt;&lt;/strong&gt; be via a special syntax that would be recognized by the template-providing scripts. You can then relax while the latter take your data, find it&amp;rsquo;s place, replace it and build your layout. It is in essence creating a tailored-to-your-data layout on the client side &amp;ndash; that can reduce the load on your server! Now you have that much greater control over where should UI generation put its weight. Also it needs to support the current functionality covered by jQuery Templates and for that reason differences in terms of how it functions are kept to the bare minimum as far as the developer using the controls is concerned &amp;ndash; if you are already using templating for our grid we would not ask you to learn something completely new or you might not even need to change you code.&lt;/p&gt;
&lt;p&gt;And that is, of course, not not the full story yet &amp;ndash; while it was needed for some controls, the template engine was designed to be fully functional stand-alone feature. Which means that you can use the engine to template any data anywhere into anything really. All you really need is jQuery defined and to load igTemplating which can be done like so:&lt;/p&gt;
&lt;div class="wlWriterEditableSmartContent" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:679e8009-5250-4bea-acb2-449fccb70fb3" style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top: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:400px;overflow:auto;"&gt;&lt;ol style="background:#ffffff;margin:0 0 0 2em;padding:0 0 0 5px;"&gt;
&lt;li&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;script&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;type&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$.ig.loader({&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;scriptPath: &lt;span style="color:#800000;"&gt;&amp;quot;../../Scripts/Infragistics/js/&amp;quot;&lt;/span&gt;,&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cssPath: &lt;span style="color:#800000;"&gt;&amp;quot;../../Content/Infragistics/css/&amp;quot;&lt;/span&gt;,&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;resources: &lt;span style="color:#800000;"&gt;&amp;quot;igTemplating&amp;quot;&lt;/span&gt;&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;});&lt;/li&gt;
&lt;li&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;script&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;At this point you have a tmpl method available in the infragistics namespace &amp;ndash; $.ig that you can call to &amp;lsquo;render&amp;rsquo; you template.&lt;/p&gt;
&lt;p&gt;The engine is fully integrated in out tree, combo and grid controls, which means you don&amp;rsquo;t even have to reference it(as seen above) &amp;ndash; it&amp;rsquo;s enough to load one of the above and templating will be made available as well.&lt;/p&gt;
&lt;p&gt;So to make it short &amp;ndash; you get a high-performance templating engine capable of working stand-alone as well as integrated with our controls and in a format you might be already familiar with or at least is easy to learn.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;In a snap!&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;So we are to talk performance &amp;ndash; if and until we do publish results from some official testing, you might have to trust my word for it, but as we said before it was designed with that main goal in mind. That led to separating the template producing logic into two branches &amp;ndash; one that would handle the simple property &amp;ndash;&amp;gt;actual data substitution and it is lightning fast. The second would handle more complex operations including, such as conditions and loops (will explain those below) and those operations require creating a JavaScript function to apply those &amp;lsquo;rules&amp;rsquo; and it must be executed on every pass. That means it would be somewhat slower. One Other thing that can affect performance is encoding and you are, of course, given a way to control it. &lt;/p&gt;
&lt;p&gt;Furthermore, the engine outputs a sting rather than objects (which makes for great performance) and some preliminary testing attempts showed mind-boggling speeds when you use it for simple substitution without encoding and even if encoding is required it will outperform one of available alternatives (that itself is much faster the the jQuery Templates)! &lt;/p&gt;
&lt;h1&gt;What can you do with it?&lt;/h1&gt;
&lt;p&gt;The engine will recognize a certain grammar, if you will. Along with all your data properties (tokens) in the template, the engine has denied regular expressions to help it identify comments(enclosed with &amp;lsquo;#&amp;rsquo;) and substitutions(data tokens) in the following formats:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;${prop} &amp;ndash; encoded &lt;/li&gt;
&lt;li&gt;{{html prop}} &amp;ndash; with encoding &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The difference with encoding , besides performance, is that if your data contains HTML itself the output will be different. Let&amp;rsquo;s say you have data like:&lt;/p&gt;
&lt;div class="wlWriterEditableSmartContent" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:15142a16-d469-45f4-8fdd-1e8aa57fc031" style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top: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:400px;overflow:auto;"&gt;&lt;ol style="background:#ffffff;margin:0 0 0 2em;padding:0 0 0 5px;"&gt;
&lt;li&gt;{ Name: &lt;span style="color:#800000;"&gt;&amp;quot;&amp;lt;img/&amp;gt;ASP.NET&amp;quot;&lt;/span&gt;, Color: &lt;span style="color:#800000;"&gt;&amp;quot;olivedrab2&amp;quot;&lt;/span&gt;, Color2: &lt;span style="color:#800000;"&gt;&amp;quot;#B3EE3A/#9ACD32&amp;quot;&lt;/span&gt; },&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;{ Name: &lt;span style="color:#800000;"&gt;&amp;quot;&amp;lt;a href=\&amp;quot;#\&amp;quot;&amp;gt;Windows Forms&amp;lt;a&amp;gt;&amp;quot;&lt;/span&gt;, ...&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;And depending on whether you use {{html Name}} or ${Name} in you template you will get accordingly:&lt;/p&gt;
&lt;p&gt;&lt;img src="http://media.infragistics.com//community/Release/12.1/jQuery/Templating_Engine/nonEncoded.png" alt="Data property that has not been encoded by the Templating Engine" title="Data property that has not been encoded by the Templating Engine" /&gt;&lt;/p&gt;
&lt;p&gt;or when encoded:&lt;/p&gt;
&lt;p&gt;&lt;img src="http://media.infragistics.com//community/Release/12.1/jQuery/Templating_Engine/Encoded.png" alt="Data property that has been encoded by the Templating Engine" title="Data property that has been encoded by the Templating Engine" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;A very basic substitution&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Assume you have a HTML ul element with id &amp;lsquo;productListing&amp;rsquo; and the following data and script:&lt;/p&gt;
&lt;div class="wlWriterEditableSmartContent" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:4a2facfc-63ec-464a-92af-9ab28e5036a3" style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top: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="color:#006400;"&gt;//------ Basic:------&lt;/span&gt;&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; products = [&lt;/li&gt;
&lt;li&gt;{Name: &lt;span style="color:#800000;"&gt;&amp;quot;Chai&amp;quot;&lt;/span&gt;, InStock: &lt;span style="color:#800000;"&gt;&amp;quot;33&amp;quot;&lt;/span&gt;, OnOrder: &lt;span style="color:#800000;"&gt;&amp;quot;2&amp;quot;&lt;/span&gt; },&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;{ Name: &lt;span style="color:#800000;"&gt;&amp;quot;Chang&amp;quot;&lt;/span&gt;, InStock: &lt;span style="color:#800000;"&gt;&amp;quot;17&amp;quot;&lt;/span&gt;, OnOrder: &lt;span style="color:#800000;"&gt;&amp;quot;40&amp;quot;&lt;/span&gt; },&lt;/li&gt;
&lt;li&gt;{ Name: &lt;span style="color:#800000;"&gt;&amp;quot;Aniseed Syrup&amp;quot;&lt;/span&gt;, InStock: &lt;span style="color:#800000;"&gt;&amp;quot;13&amp;quot;&lt;/span&gt;, OnOrder: &lt;span style="color:#800000;"&gt;&amp;quot;70&amp;quot;&lt;/span&gt; },&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;{ Name: &lt;span style="color:#800000;"&gt;&amp;quot;Chef Anton&amp;#39;s Cajun Seasoning&amp;quot;&lt;/span&gt;, InStock: &lt;span style="color:#800000;"&gt;&amp;quot;53&amp;quot;&lt;/span&gt;, OnOrder: &lt;span style="color:#800000;"&gt;&amp;quot;0&amp;quot;&lt;/span&gt; },&lt;/li&gt;
&lt;li&gt;{ Name: &lt;span style="color:#800000;"&gt;&amp;quot;Chef Anton&amp;#39;s Gumbo Mix&amp;quot;&lt;/span&gt;, InStock: &lt;span style="color:#800000;"&gt;&amp;quot;0&amp;quot;&lt;/span&gt;, OnOrder: &lt;span style="color:#800000;"&gt;&amp;quot;0&amp;quot;&lt;/span&gt; },&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;{ Name: &lt;span style="color:#800000;"&gt;&amp;quot;Grandma&amp;#39;s Boysenberry Spread&amp;quot;&lt;/span&gt;, InStock: &lt;span style="color:#800000;"&gt;&amp;quot;120&amp;quot;&lt;/span&gt;, OnOrder: &lt;span style="color:#800000;"&gt;&amp;quot;0&amp;quot;&lt;/span&gt; },&lt;/li&gt;
&lt;li&gt;{ Name: &lt;span style="color:#800000;"&gt;&amp;quot;Northwoods Cranberry Sauce&amp;quot;&lt;/span&gt;, InStock: &lt;span style="color:#800000;"&gt;&amp;quot;6&amp;quot;&lt;/span&gt;, OnOrder: &lt;span style="color:#800000;"&gt;&amp;quot;20&amp;quot;&lt;/span&gt; },&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;{ Name: &lt;span style="color:#800000;"&gt;&amp;quot;Mishi Kobe Niku&amp;quot;&lt;/span&gt;, InStock: &lt;span style="color:#800000;"&gt;&amp;quot;52&amp;quot;&lt;/span&gt;, OnOrder: &lt;span style="color:#800000;"&gt;&amp;quot;20&amp;quot;&lt;/span&gt; },&lt;/li&gt;
&lt;li&gt;{ Name: &lt;span style="color:#800000;"&gt;&amp;quot;Uncle Bob&amp;#39;s Organic Dried Pears&amp;quot;&lt;/span&gt;, InStock: &lt;span style="color:#800000;"&gt;&amp;quot;15&amp;quot;&lt;/span&gt;, OnOrder: &lt;span style="color:#800000;"&gt;&amp;quot;33&amp;quot;&lt;/span&gt; }&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;];&lt;/li&gt;
&lt;li&gt;&lt;span style="color:#006400;"&gt;/* THE template */&lt;/span&gt;&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; theTemplate = &lt;span style="color:#800000;"&gt;&amp;quot;&amp;lt;li&amp;gt;&amp;lt;b&amp;gt;${Name}&amp;lt;/b&amp;gt; ({{html InStock}}) [Ordered: {{html OnOrder}}]&amp;lt;/li&amp;gt;&amp;quot;&lt;/span&gt;;&lt;/li&gt;
&lt;li&gt;&lt;span style="color:#006400;"&gt;/* Render the template */&lt;/span&gt;&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; result = $.ig.tmpl(theTemplate, products);&lt;/li&gt;
&lt;li&gt;&lt;span style="color:#006400;"&gt;/* Add the ready markup to the div: */&lt;/span&gt;&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;$(result).appendTo(&lt;span style="color:#800000;"&gt;&amp;quot;#productListing&amp;quot;&lt;/span&gt;);&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;The result from this would be something like this (depending on page default styles):&lt;/p&gt;
&lt;p&gt;&lt;img src="http://media.infragistics.com//community/Release/12.1/jQuery/Templating_Engine/Basic.png" alt="A list populated with Templating Engine using simple data substitution" title="A list populated with Templating Engine using simple data substitution" /&gt;&lt;/p&gt;
&lt;p&gt;As you can see you can build html markup, mark places for data and it will be generated for each of your records. Now things get a bit more interesting if you have some &lt;strong&gt;hierarchical&lt;/strong&gt; data:&lt;/p&gt;
&lt;div class="wlWriterEditableSmartContent" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:65139a00-95cd-43d2-a5fe-256421e04292" style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top: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="color:#006400;"&gt;//------ With nested:------&lt;/span&gt;&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; productsWithHierarchy = [&lt;/li&gt;
&lt;li&gt;{ Name: &lt;span style="color:#800000;"&gt;&amp;quot;Chai&amp;quot;&lt;/span&gt;, InStock: &lt;span style="color:#800000;"&gt;&amp;quot;33&amp;quot;&lt;/span&gt;, OnOrder: &lt;span style="color:#800000;"&gt;&amp;quot;2&amp;quot;&lt;/span&gt;, Test: { Inner1: &lt;span style="color:#800000;"&gt;&amp;quot;inner text 1.1&amp;quot;&lt;/span&gt;, Inner2: &lt;span style="color:#800000;"&gt;&amp;quot;inner text 1.2&amp;quot;}&lt;/span&gt; },&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;{ Name: &lt;span style="color:#800000;"&gt;&amp;quot;Chang&amp;quot;&lt;/span&gt;, InStock: &lt;span style="color:#800000;"&gt;&amp;quot;17&amp;quot;&lt;/span&gt;, OnOrder: &lt;span style="color:#800000;"&gt;&amp;quot;40&amp;quot;&lt;/span&gt;, Test: { Inner1: &lt;span style="color:#800000;"&gt;&amp;quot;inner text 2.1&amp;quot;&lt;/span&gt;, Inner2: &lt;span style="color:#800000;"&gt;&amp;quot;inner text 2.2&amp;quot;}&lt;/span&gt; },&lt;/li&gt;
&lt;li&gt;&amp;nbsp;{ Name: &lt;span style="color:#800000;"&gt;&amp;quot;Aniseed Syrup&amp;quot;&lt;/span&gt;, InStock: &lt;span style="color:#800000;"&gt;&amp;quot;13&amp;quot;&lt;/span&gt;, OnOrder: &lt;span style="color:#800000;"&gt;&amp;quot;70&amp;quot;&lt;/span&gt;, Test: { Inner1: &lt;span style="color:#800000;"&gt;&amp;quot;inner text 3.1&amp;quot;&lt;/span&gt;, Inner2: &lt;span style="color:#800000;"&gt;&amp;quot;inner text 3.2&amp;quot;}&lt;/span&gt; },&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;];&lt;/li&gt;
&lt;li&gt;&lt;span style="color:#006400;"&gt;/* THE template */&lt;/span&gt;&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; theTemplate2 = &lt;span style="color:#800000;"&gt;&amp;quot;&amp;lt;li&amp;gt;&amp;lt;b&amp;gt;${Name}&amp;lt;/b&amp;gt; ({{html InStock}}) [Ordered: {{html OnOrder}}] &amp;lt;ul&amp;gt;&amp;lt;li&amp;gt; {{html Test.Inner1}}&amp;lt;/li&amp;gt; &amp;lt;li&amp;gt;{{html Test.Inner2}}&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt; &amp;lt;/li&amp;gt;&amp;quot;&lt;/span&gt;;&lt;/li&gt;
&lt;li&gt;&lt;span style="color:#006400;"&gt;/* Render the template */&lt;/span&gt;&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; result2 = $.ig.tmpl(theTemplate2, productsWithHierarchy);&lt;/li&gt;
&lt;li&gt;&lt;span style="color:#006400;"&gt;/* Add the ready markup to the div: */&lt;/span&gt;&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;$(result2).appendTo(&lt;span style="color:#800000;"&gt;&amp;quot;#hierListing&amp;quot;&lt;/span&gt;);&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Notice the &amp;lsquo;Test.Inner1&amp;rsquo; - navigating nested properties is very easy to do and the result from this is:&lt;/p&gt;
&lt;p&gt;&lt;img src="http://media.infragistics.com//community/Release/12.1/jQuery/Templating_Engine/BasicWithHierarchy.png" alt="A nested list demonstating the Templating Engine&amp;#39;s capability to use hierarchy" title="A nested list demonstating the Templating Engine&amp;#39;s capability to use hierarchy" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;What if&amp;hellip;&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;So, what happens when you don&amp;rsquo;t want to apply the template blindly to all records? - You build a conditional block to handle that. The engine recognizes a number of directives such as logical blocks:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;{{ if }} conditionals &lt;/li&gt;
&lt;li&gt;{{else}} conditionals &lt;/li&gt;
&lt;li&gt;{{elseif}} conditionals &lt;/li&gt;
&lt;li&gt;{{each}} loop &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;And a reserved $i identifier for the current index in a loop. All that can make up for some pretty interesting capabilities.&lt;/p&gt;
&lt;p&gt;You can go very deep with this as you can nest multiple else-if conditions inside the &amp;lsquo;if&amp;rsquo; and the &amp;lsquo;else&amp;rsquo; will be your default. All blocks &lt;strong&gt;&lt;em&gt;must&lt;/em&gt;&lt;/strong&gt; be closed to be recognized and their closing tag is the same with added slash. However, there is something very important to note &amp;ndash; due to the way blocks are recognized, it is not possible to have two consecutive &amp;lsquo;if&amp;rsquo; blocks, as in:&lt;/p&gt;
&lt;p&gt;{{if condition}} /* work 1 */ {{/if}} {{if condition2 }} /* work 2 */ {{/if}} &amp;ndash; as the very last closing will be assigned to the very first and therefore will not allow for such logic. At this point though let&amp;rsquo;s have a relatively simple example &amp;ndash; same as the first simple substitution lets have our products, this time however lets check if we have enough items in stock to cover our orders and provide some sort of visual for insufficient ones &amp;ndash; yes we can do all that in the template like so:&lt;/p&gt;
&lt;div class="wlWriterEditableSmartContent" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:c393715b-f05c-4104-994f-dfe6f759f67d" style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top: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 2em;padding:0 0 0 5px;white-space:nowrap;"&gt;
&lt;li&gt;&lt;span style="color:#006400;"&gt;//------ Conditional:------&lt;/span&gt;&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; theTemplate3 = &lt;span style="color:#800000;"&gt;&amp;quot;#This time we will be using table as output#&amp;quot;&lt;/span&gt; + &lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;span style="color:#800000;"&gt;&amp;quot;&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt;&amp;lt;b&amp;gt;${Name}&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;quot;&lt;/span&gt; +&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&lt;span style="color:#800000;"&gt;&amp;quot;# Here is the IF block #&amp;quot;&lt;/span&gt; +&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;span style="color:#800000;"&gt;&amp;quot;{{if (${InStock} - ${OnOrder}) &amp;lt; 0}} &amp;lt;td style=\&amp;#39;color:red;\&amp;#39;&amp;gt;(${InStock})&amp;lt;/td&amp;gt;&amp;#39;&lt;/span&gt; + &lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&lt;span style="color:#800000;"&gt;&amp;quot;# And the Else (default) block with the same template but without the style #&amp;quot;&lt;/span&gt; + &lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;span style="color:#800000;"&gt;&amp;quot;{{else}}&amp;lt;td&amp;gt;(${InStock})&amp;lt;/td&amp;gt; {{/if}}&amp;lt;td&amp;gt;[Ordered: ${OnOrder}]&amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&amp;quot;&lt;/span&gt;;&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Resulting in:&lt;/p&gt;
&lt;p&gt;&lt;img src="http://media.infragistics.com//community/Release/12.1/jQuery/Templating_Engine/Conditional.png" alt="A table demonstating the use of conditional blocks with the Templating Engine" title="A table demonstating the use of conditional blocks with the Templating Engine" /&gt;&lt;/p&gt;
&lt;p&gt;So we made a very simple warning system for our user. You can apply the same type of logic to check the record index (using the reserved &amp;lsquo;$i&amp;rsquo;) to apply special templates to select rows and naturally create alternative row layouts and so on.&lt;/p&gt;
&lt;p&gt;Of course, you are not limited to just local arrays &amp;ndash; the Templating engine can take data from functions and it can pass parameters if required. Along with that, you have all the freedom to produce markup of any kind and that includes placing data inside HTML elements classes, id-s.. you name it! Here&amp;rsquo;s an example, where a few styles applied to class names and the said class names are available in our data:&lt;/p&gt;
&lt;div class="wlWriterEditableSmartContent" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:71e25ecd-7825-462d-b704-0990c371447a" style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top: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="color:#006400;"&gt;//------Data function------&lt;/span&gt;&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&lt;span style="color:#0000ff;"&gt;function&lt;/span&gt; productFamily(count) {&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; NetAdvantage = [&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{ Name: &lt;span style="color:#800000;"&gt;&amp;quot;ASP.NET&amp;quot;&lt;/span&gt;, Color: &lt;span style="color:#800000;"&gt;&amp;quot;olivedrab2&amp;quot;&lt;/span&gt;, Color2: &lt;span style="color:#800000;"&gt;&amp;quot;#B3EE3A/#9ACD32&amp;quot;&lt;/span&gt; },&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{ Name: &lt;span style="color:#800000;"&gt;&amp;quot;Windows Forms&amp;quot;&lt;/span&gt;, Color: &lt;span style="color:#800000;"&gt;&amp;quot;turquoise2&amp;quot;&lt;/span&gt;, Color2: &lt;span style="color:#800000;"&gt;&amp;quot;#00E5EE&amp;quot;&lt;/span&gt; },&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{ Name: &lt;span style="color:#800000;"&gt;&amp;quot;WPF&amp;quot;&lt;/span&gt;, Color: &lt;span style="color:#800000;"&gt;&amp;quot;slateblue4&amp;quot;&lt;/span&gt;, Color2: &lt;span style="color:#800000;"&gt;&amp;quot;#473C8B&amp;quot;&lt;/span&gt; },&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{ Name: &lt;span style="color:#800000;"&gt;&amp;quot;Silverlight&amp;quot;&lt;/span&gt;, Color: &lt;span style="color:#800000;"&gt;&amp;quot;magenta4&amp;quot;&lt;/span&gt;, Color2: &lt;span style="color:#800000;"&gt;&amp;quot;#8B008B&amp;quot;&lt;/span&gt; },&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{ Name: &lt;span style="color:#800000;"&gt;&amp;quot;jQuery&amp;quot;&lt;/span&gt;, Color: &lt;span style="color:#800000;"&gt;&amp;quot;mediumaquamarine&amp;quot;&lt;/span&gt;, Color2: &lt;span style="color:#800000;"&gt;&amp;quot;#66CDAA&amp;quot;&lt;/span&gt; },&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{ Name: &lt;span style="color:#800000;"&gt;&amp;quot;SharePoint&amp;quot;&lt;/span&gt;, Color: &lt;span style="color:#800000;"&gt;&amp;quot;gold&amp;quot;&lt;/span&gt;, Color2: &lt;span style="color:#800000;"&gt;&amp;quot;gold&amp;quot;&lt;/span&gt; },&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{ Name: &lt;span style="color:#800000;"&gt;&amp;quot;iOS&amp;quot;&lt;/span&gt;, Color: &lt;span style="color:#800000;"&gt;&amp;quot;gray&amp;quot;&lt;/span&gt;, Color2: &lt;span style="color:#800000;"&gt;&amp;quot;gray&amp;quot;&lt;/span&gt; },&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{ Name: &lt;span style="color:#800000;"&gt;&amp;quot;Silverlight Data Visualization&amp;quot;&lt;/span&gt;, Color: &lt;span style="color:#800000;"&gt;&amp;quot;orange&amp;quot;&lt;/span&gt;, Color2: &lt;span style="color:#800000;"&gt;&amp;quot;orange&amp;quot;&lt;/span&gt; },&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{ Name: &lt;span style="color:#800000;"&gt;&amp;quot;WPF Data Visualization&amp;quot;&lt;/span&gt;, Color: &lt;span style="color:#800000;"&gt;&amp;quot;yellow&amp;quot;&lt;/span&gt;, Color2: &lt;span style="color:#800000;"&gt;&amp;quot;yellow&amp;quot;&lt;/span&gt; },&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{ Name: &lt;span style="color:#800000;"&gt;&amp;quot;Windows Phone&amp;quot;&lt;/span&gt;, Color: &lt;span style="color:#800000;"&gt;&amp;quot;dodgerblue&amp;quot;&lt;/span&gt;, Color2: &lt;span style="color:#800000;"&gt;&amp;quot;#1E90FF&amp;quot;&lt;/span&gt; },&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{ Name: &lt;span style="color:#800000;"&gt;&amp;quot;Visual Studio LightSwitch&amp;quot;&lt;/span&gt;, Color: &lt;span style="color:#800000;"&gt;&amp;quot;darkslateblue&amp;quot;&lt;/span&gt;, Color2: &lt;span style="color:#800000;"&gt;&amp;quot;#483D8B&amp;quot;&lt;/span&gt; },&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{ Name: &lt;span style="color:#800000;"&gt;&amp;quot;TestAdvantage&amp;quot;&lt;/span&gt;, Color: &lt;span style="color:#800000;"&gt;&amp;quot;red&amp;quot;&lt;/span&gt;, Color2: &lt;span style="color:#800000;"&gt;&amp;quot;red&amp;quot;&lt;/span&gt; },&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{ Name: &lt;span style="color:#800000;"&gt;&amp;quot;Icons&amp;quot;&lt;/span&gt;, Color: &lt;span style="color:#800000;"&gt;&amp;quot;green&amp;quot;&lt;/span&gt;, Color2: &lt;span style="color:#800000;"&gt;&amp;quot;green&amp;quot;&lt;/span&gt; }&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;];&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; result = [];&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (count &amp;gt; NetAdvantage.count()) { count = NetAdvantage.count(); }&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#0000ff;"&gt;for&lt;/span&gt; (i = 0; i &amp;lt; count; i++) {&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;result.push(NetAdvantage[i]);&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; result;&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;}&lt;/li&gt;
&lt;li&gt;&lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; theTemplate4 = &lt;span style="color:#800000;"&gt;&amp;quot;&amp;lt;div class=\&amp;quot;${Color}\&amp;quot;&amp;gt;{{html Name}}&amp;lt;/div&amp;gt;&amp;quot;&lt;/span&gt;;&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&lt;span style="color:#006400;"&gt;/* Render the template */&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; result4 = $.ig.tmpl(theTemplate4, productFamily, [7]);&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;This template will simply cause DIV-s for each product to be generated with class that contains their color (by which the CSS will be applied). Also calling the data function we provided parameter - the number of products to display. The result looks like:&lt;/p&gt;
&lt;p&gt;&lt;img src="http://media.infragistics.com//community/Release/12.1/jQuery/Templating_Engine/DataFromFunction.png" alt="Template created using data from a function and applied style using the Templating Engine to set class for each" title="Template created using data from a function and applied style using the Templating Engine to set class for each" /&gt;&lt;/p&gt;
&lt;h1&gt;Beyond&lt;/h1&gt;
&lt;p&gt;The igTemplating Engine truly gives you a lot of freedom - in terms of how to place your content, whether you would use it on it&amp;rsquo;s own or you can do some eye-catching wizardry with the tree, combo or grid and enhance them with functionality and style at the same time. Since you can easily build markup, you can take data that was not readily available and essentially format in a way that a UI control can transform &amp;ndash; yes, that means templating table to turn then in an igGrid form example, or a table in another table and.. well you get the point. You can assign classes and Ids and you can target those to turn them into completely different UI. You can also enjoy the functionality that was so far available to template our jQuery tree and grid controls and soon you will also have a column template for the grids, in addition to the current row option. &lt;/p&gt;
&lt;p&gt;The good news around customizing your data presentation are far from over and this new Templating Engine is ready to take care of it and most importantly do it extremely fast! &lt;/p&gt;
&lt;p&gt;&lt;em&gt;Expect a demo for this blog once 12.1 is made available, samples and more ways you can make the best out of such functionality. Meanwhile you can check out blogs that demonstrate templating (with jQuery Templates, though they should still give you an idea of the capabilities):&lt;/em&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;&lt;a href="http://blogs.infragistics.com/blogs/taz_abdeali/archive/2011/04/21/jquery-templating-tips-amp-tricks.aspx" title="jQuery Templating Tips &amp;amp; Tricks"&gt;jQuery Templating Tips &amp;amp; Tricks&lt;/a&gt; (demonstrated with the grid)&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;&lt;a href="http://blogs.infragistics.com/blogs/jordan_tsankov/archive/2011/12/02/setting-up-node-template-in-the-igtree-control.aspx" title="Setting up Node Template in the jQuery igTree"&gt;Setting up Node Template in the jQuery igTree&lt;/a&gt;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;&lt;a href="http://blogs.infragistics.com/blogs/atanas_dyulgerov/archive/2012/01/13/multi-column-combo-box-netadvantage-for-jquery.aspx" title="Multi-column jQuery combo box with templating"&gt;Multi-column jQuery combo box&lt;/a&gt; with templates&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;And as usual you can check out the &lt;a href="http://samples.infragistics.com/jquery" title="NetAdvantage for jQuery Online Samples"&gt;samples&lt;/a&gt; for each of those controls for more.&lt;/em&gt;&lt;/p&gt;</description></item></channel></rss>