<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.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 tags 'Infragistics', 'CDN', and 'Hierarchical'</title><link>http://blogs.infragistics.com/search/SearchResults.aspx?a=1&amp;o=DateDescending&amp;tag=Infragistics,CDN,Hierarchical&amp;orTags=0</link><description>Search results matching tags 'Infragistics', 'CDN', and 'Hierarchical'</description><dc:language>en-US</dc:language><generator>CommunityServer 2008.5 SP1 (Build: 31106.3070)</generator><item><title>How to get started with jQuery Grid Unbound Columns</title><link>http://blogs.infragistics.com/blogs/damyan_petev/archive/2012/10/16/how-to-get-started-with-jquery-grid-unbound-columns.aspx</link><pubDate>Tue, 16 Oct 2012 14:26:00 GMT</pubDate><guid isPermaLink="false">7a8b7c76-b7ad-48e0-9694-5b04ca132ed0:376250</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" alt="Ignite UI jQuery Grid&amp;#39;s Unbound Columns" align="left" src="http://media.infragistics.com/community/Release/12.2/jQuery/Unbound-Columns/jquery-grid-unbound-columns.png" /&gt;An all new functionality with the second release for this year comes to bring more flexibility to your grid and the way it handles data. The unbound column is one of the classic grid features throughout Infragistics experience with grids and now user demands are met by the all-new-yet-same &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 :)&lt;/p&gt; &lt;p&gt;The feature itself allows for columns that can be used to render separate arbitrary list of items or calculated values usually based on other columns’ values. The columns support and work with all grid features – proper sorting, filtering, etc. Also normal column enhancements like column templates, formatters and any other column property are available. It is very simple in concept and then once you get a closer look and take into account how this would interact with features it can get quite complicated, but that would be something to dive into later on.&lt;/p&gt; &lt;h1 id="why-unbound-columns" name="why-unbound-columns"&gt;Why Unbound columns?&lt;/h1&gt; &lt;p&gt;What good are they for? For one, imagine a situation I end up in quite often – I like using Entity Framework but when I reach to the part where data needs to be send to the client all hell breaks loose. Why on earth has this not been addressed is beyond me but the Entity objects are damn &lt;a title="Serializing Entity Framework object to JSON" href="http://blogs.microsoft.co.il/blogs/idof/archive/2008/09/30/serializing-entity-framework-object-to-json.aspx" target="_blank"&gt;near impossible for the default serializers and this has been around for so long&lt;/a&gt;. So what you do is either go for third party ones or use Data Transfer objects that are meant for such cases and that works good for me most of the time and it reduces traffic too. In those cases when one data model is not enough and out of you control, for when you need data from different sources and the &lt;a title="Mashup Data Source - Ignite UI jQuery Online samples" href="http://www.infragistics.com/products/jquery/sample/data-source/mashup-data-source" target="_blank"&gt;Mashup Data Source&lt;/a&gt; is too much hassle or you don’t even have some parts available when the grid is created… this is when an unbound column can totally save the day.&lt;/p&gt; &lt;p&gt;Then again that is not all – besides integrating two pieces of data, the unbound columns can be used to display completely new data. You can use the formula property to calculate values based on other values in the row. That means you can now create &lt;a title="Column Summaries Basic Options - Ignite UI jQUery Grid samples" href="http://www.infragistics.com/products/jquery/sample/grid/column-summaries-basic-options" target="_blank"&gt;Summaries&lt;/a&gt; on per row basis, rather than the out-of-the-box ones for columns!&lt;/p&gt; &lt;h1 id="quick-setup" name="quick-setup"&gt;Quick setup&lt;/h1&gt; &lt;p&gt;At first glance the unbound columns are no harder to define that any other -&amp;nbsp; as mentioned, all properties are available and features behave as expected. The single most important difference is the ‘unbound’ property that you can set to true in order for that particular column to be omitted when binding to the data source. Essentially you can get an empty column with no relation to the data model:&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:e1ebf30c-6728-4089-88ff-61739555b93f" 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;columns : [{&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;empty&amp;#39;&lt;/span&gt;,&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;        headerText : &lt;span style="color:#800000;"&gt;&amp;#39;Empty&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;],&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;p&gt;To put things in perspective, here’s the full grid 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:0ce3dce8-3318-424a-a9cc-23244cdcdd7a" 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;#grid1&amp;#39;&lt;/span&gt;).igGrid({&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;    width: &lt;span style="color:#800000;"&gt;&amp;#39;650px&amp;#39;&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;    autoGenerateLayouts : &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;#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;            key : &lt;span style="color:#800000;"&gt;&amp;#39;SickLeaveHours&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;Sick Leave Hours&amp;#39;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;        }, {&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;            key : &lt;span style="color:#800000;"&gt;&amp;#39;VacationHours&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;Vacation Hours&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;empty&amp;#39;&lt;/span&gt;,&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;            headerText : &lt;span style="color:#800000;"&gt;&amp;#39;Empty&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;    ],&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;    features : [{&lt;/li&gt; &lt;li&gt;            recordCountKey : &lt;span style="color:#800000;"&gt;&amp;#39;TotalRecordsCount&amp;#39;&lt;/span&gt;,&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;            pageIndexUrlKey : &lt;span style="color:#800000;"&gt;&amp;#39;page&amp;#39;&lt;/span&gt;,&lt;/li&gt; &lt;li&gt;            pageSizeUrlKey : &lt;span style="color:#800000;"&gt;&amp;#39;pageSize&amp;#39;&lt;/span&gt;,&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;            name : &lt;span style="color:#800000;"&gt;&amp;#39;Paging&amp;#39;&lt;/span&gt;,&lt;/li&gt; &lt;li&gt;            type : &lt;span style="color:#800000;"&gt;&amp;#39;local&amp;#39;&lt;/span&gt;&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;        }, {&lt;/li&gt; &lt;li&gt;            sortUrlKey : &lt;span style="color:#800000;"&gt;&amp;#39;sort&amp;#39;&lt;/span&gt;,&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;            sortUrlKeyAscValue : &lt;span style="color:#800000;"&gt;&amp;#39;asc&amp;#39;&lt;/span&gt;,&lt;/li&gt; &lt;li&gt;            sortUrlKeyDescValue : &lt;span style="color:#800000;"&gt;&amp;#39;desc&amp;#39;&lt;/span&gt;,&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;            name : &lt;span style="color:#800000;"&gt;&amp;#39;Sorting&amp;#39;&lt;/span&gt;,&lt;/li&gt; &lt;li&gt;            type : &lt;span style="color:#800000;"&gt;&amp;#39;local&amp;#39;&lt;/span&gt;&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;        }, {&lt;/li&gt; &lt;li&gt;            filterExprUrlKey : &lt;span style="color:#800000;"&gt;&amp;#39;filter&amp;#39;&lt;/span&gt;,&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;            filterLogicUrlKey : &lt;span style="color:#800000;"&gt;&amp;#39;filterLogic&amp;#39;&lt;/span&gt;,&lt;/li&gt; &lt;li&gt;            name : &lt;span style="color:#800000;"&gt;&amp;#39;Filtering&amp;#39;&lt;/span&gt;,&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;            type : &lt;span style="color:#800000;"&gt;&amp;#39;local&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;    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;Employees&amp;quot;&lt;/span&gt;)&lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt;,&lt;/li&gt; &lt;li&gt;    responseDataKey : &lt;span style="color:#800000;"&gt;&amp;#39;d&amp;#39;&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;And the result of this is:&lt;/p&gt; &lt;p&gt;&lt;img title="An empty Unbound column but still with appropriate filter conditions based on the defined data type." alt="An empty Unbound column but still with appropriate filter conditions based on the defined data type." src="http://media.infragistics.com/community/Release/12.2/jQuery/Unbound-Columns/jquery-grid-unbound-columns-type-filter.png" /&gt;&lt;/p&gt; &lt;p&gt;As you can see you get a column of whatever type you have defined and the filter criteria match that too. &lt;/p&gt; &lt;h3 id="asp-net-mvc" name="asp-net-mvc"&gt;ASP.NET MVC&lt;/h3&gt; &lt;p&gt;The helpers provided with the product could always be used instead to help you generate the same output with great ease. You actually have two options when using the server side assembly – chaining syntax with the HTML helper alone or combined with the grid model. Let’s see how that’s done. With just the helper in which case the model passed by the controller is the actual data:&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:a236eaf5-e4cb-4ffe-8673-597a486c1ec1" 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="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;&lt;span style="background:#ffff00;"&gt;@model &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;IQueryable&lt;/span&gt;&amp;lt;GridUnboundColumn.Models.&lt;span style="color:#2b91af;"&gt;EmployeeDTO&lt;/span&gt;&amp;gt;&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&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:d2266b1d-dc2c-41b7-b1e0-8342c9dfd116" 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;    .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;empty&amp;quot;&lt;/span&gt;).HeaderText(&lt;span style="color:#a31515;"&gt;&amp;quot;Empty&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;    .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;Or using the grind model where the latter is being passed to the view:&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:5b738a1c-d694-41cf-9b0f-87729a38577a" 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;using&lt;/span&gt; Infragistics.Web.Mvc&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&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:849e8729-cdb5-426a-a6a4-d56681ac6632" 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;public&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;ActionResult&lt;/span&gt; Demo()&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;{&lt;/li&gt; &lt;li&gt;    ViewBag.Message = &lt;span style="color:#a31515;"&gt;&amp;quot;Below the grid ....&amp;quot;&lt;/span&gt;;&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;    &lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; employees = context.Employees.ToList().ConvertAll(e =&amp;gt; e.ToDTO());&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&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.AutoGenerateColumns = &lt;span style="color:#0000ff;"&gt;false&lt;/span&gt;;&lt;/li&gt; &lt;li&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 style="background:#f3f3f3;"&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&gt;    {&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;        Key = &lt;span style="color:#a31515;"&gt;&amp;quot;empty&amp;quot;&lt;/span&gt;,&lt;/li&gt; &lt;li&gt;        HeaderText = &lt;span style="color:#a31515;"&gt;&amp;quot;Empty&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;    });&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;BusinessEntityID&amp;quot;&lt;/span&gt;,&lt;/li&gt; &lt;li&gt;        HeaderText = &lt;span style="color:#a31515;"&gt;&amp;quot;B.E. 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;    });&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;SickLeaveHours&amp;quot;&lt;/span&gt;,&lt;/li&gt; &lt;li&gt;        HeaderText = &lt;span style="color:#a31515;"&gt;&amp;quot;Sick Leave Hours&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;    });&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;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;    grid.DataSource = employees.AsQueryable();&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;    &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; View(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;And that is merely consumed in the view:&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:8bcfa838-f69f-4f1d-b5ce-af8949b06e32" 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="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;&lt;span style="background:#ffff00;"&gt;@&lt;/span&gt;Html.Infragistics().Grid(Model)&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;p&gt;Note: While the result will generally be the same, the above grid model is missing feature definitions just for this snippet. Also all snippets so far assume you are aware scripts need to be loaded in advance either manually or using the Infragistics resource loader widget. For full code refer to the demos themselves or general help with proper setup can be found in the &lt;a title="Ignite UI jQuery controls - Infragistics Online Help Docs: Deployment Guide" href="#NEW%20HELP%20LINK%20HERE" target="_blank"&gt;Deployment Guide in our online help&lt;/a&gt;.&lt;/p&gt; &lt;h1 id="unbound-data" name="unbound-data"&gt;“So now how do I get data in there?”&lt;/h1&gt; &lt;p&gt;That’s the logical question that follows. You have a column completely unrelated to your data model but it’s empty and that’s not why it’s there. Rest assured, you are quire in luck when it comes to options to supply values for those type of columns. &lt;/p&gt; &lt;h3 id="unbound-values" name="unbound-values"&gt;Unbound Values&lt;/h3&gt; &lt;p&gt;So now comes the part I mentioned with model serialization and DTOs. The simple task of displaying 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 that has no names also requires the Person table. For the sake of the example imagine you don’t have access to the model OR those are in separate databases even. So the grid is bound to the ‘Employees’ and since I only want the names from ‘People’ I provide them in a separate list.&lt;/p&gt; &lt;p&gt;&lt;em&gt;ASP.NET MVC&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:7989f6e2-ad79-4bff-9e79-7739544f0fc4" 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;public&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;ActionResult&lt;/span&gt; Mvc()&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;{&lt;/li&gt; &lt;li&gt;    ViewBag.Message = &lt;span style="color:#a31515;"&gt;&amp;quot;Below the grid ....&amp;quot;&lt;/span&gt;;&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;    &lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; employees = context.Employees.ToList().ConvertAll(e =&amp;gt; e.ToDTO());&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;    ViewBag.people = context.People.Select(p =&amp;gt; p.FirstName + &lt;span style="color:#a31515;"&gt;&amp;quot; &amp;quot;&lt;/span&gt; + p.LastName).ToList();&lt;/li&gt; &lt;li&gt;    &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; View(employees.AsQueryable());&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;Keep in mind the list can be absolutely anything, really from values from remote APIs to calculated or generated values. Next in the view we have same grid definition as above with the addition of using the ‘UnboundValues’ option:&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:2ff781d1-4d12-44bd-9c12-592cf0d9cbc7" 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;name&amp;quot;&lt;/span&gt;).UnboundValues((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()).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;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;p&gt;And using the model (you can see the :&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:99b923ef-0833-4c8d-9871-6061bf86b509" 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;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;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;    UnboundValues = context.People.OrderBy(p =&amp;gt; p.BusinessEntityID)&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;        .Select(p =&amp;gt; p.FirstName + &lt;span style="color:#a31515;"&gt;&amp;quot; &amp;quot;&lt;/span&gt; + p.LastName)&lt;/li&gt; &lt;li&gt;        .ToList().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;    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;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;p&gt;Of course, those server side properties are proxy to the client API where you can use it like so:&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:9b93f575-0370-437e-a0f1-54d6b9546c1c" 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;var&lt;/span&gt; peopleNames = &lt;span style="background:#ffff00;"&gt;@&lt;/span&gt;Html.Raw(&lt;span style="color:#2b91af;"&gt;Json&lt;/span&gt;.Encode(ViewBag.people)) ;&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&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:a3b77df4-e150-420b-84b7-f78a388eec32" 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;/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;                unboundValues : peopleNames,&lt;/li&gt; &lt;li&gt;                headerText : &lt;span style="color:#800000;"&gt;&amp;#39;Name&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;            },&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;p&gt;&lt;img title="Ignite UI jQuery Grid with Unbound column of names from a separate source." alt="Ignite UI jQuery Grid with Unbound column of names from a separate source." src="http://media.infragistics.com/community/Release/12.2/jQuery/Unbound-Columns/jquery-grid-unbound-column-values.png" /&gt;&lt;/p&gt; &lt;p&gt;Note: When using the ‘UnboundValues’ property the list of provided values is &lt;strong&gt;assigned as is – &lt;/strong&gt;meaning is the same order, which means that those *must* be ordered the same way as the data source if you want meaningful results.&lt;/p&gt; &lt;h3 id="set-unbound-values" name="set-unbound-values"&gt;Set Unbound Values&lt;/h3&gt; &lt;p&gt;The very same result can be achieved using the ‘SetUnboundValues’ grid method. With it you can provide values for any columns by specifying its key:&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:581556c4-67ce-4221-8d9d-21b176b0784c" 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;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;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;grid.SetUnboundValues(&lt;span style="color:#a31515;"&gt;&amp;quot;name&amp;quot;&lt;/span&gt;, peopleNames);&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;p&gt;The method is also available with chaining and it has two overloads – one accepting as second parameter either a value list like so far &lt;strong&gt;or&lt;/strong&gt; a dictionary with primary key and value pairs. The latter naturally &lt;strong&gt;requires your grid to have a primary key defined&lt;/strong&gt; and if that is the case it is the recommended method to use as it’s the end result of the other overload anyway (yes, by all means, read that as &lt;strong&gt;performance gain&lt;/strong&gt;). This can also spare you the hassle of having to order your sources the same way because using the Dictionary overload you can essentially assign value for each primary key. So for the above ‘peopleNames’ you can now use something like:&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:2091d932-2169-45c8-83bc-efa62323a064" 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; peopleNames = context.People.ToDictionary(x =&amp;gt; (&lt;span style="color:#0000ff;"&gt;object&lt;/span&gt;)x.BusinessEntityID, x =&amp;gt; (&lt;span style="color:#0000ff;"&gt;object&lt;/span&gt;)(x.FirstName + &lt;span style="color:#a31515;"&gt;&amp;quot; &amp;quot;&lt;/span&gt; + x.LastName));&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;NOTE:&lt;/strong&gt; While the unbound column itself may not support some remote feature (see below), other columns normally would and their results affect the entire data view and for correct results you absolutely need a proper mapping between unbound values and the grid’s primary key, therefore the above &lt;strong&gt;Dictionary overload of the ‘SetUnboundValues’ method is always the best option to be used&lt;/strong&gt;.&lt;/p&gt; &lt;p&gt;As always things in client-side script are much less constrained and also somewhat different in functionality as it’s executed after the control is initialized. You can do that either in grid events or user triggered actions. For a start the easiest way is to go for a button click:&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:282505ac-ea06-4bf7-aa38-4830a16f129e" 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;&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;#Grid1&amp;#39;).igGrid(&amp;#39;setUnboundValues&amp;#39;, [ &amp;#39;John Doe(1)&amp;#39; , &amp;#39;John Doe(2)&amp;#39; , &amp;#39;Jane Doe(1)&amp;#39;, &amp;#39;John Doe(3)&amp;#39;], &amp;#39;name&amp;#39;)&amp;quot;&amp;gt;&lt;/span&gt; Set Unbound values &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;Note: The client version of the method as you can see takes values first and then the key and can be called after the grid is initialized regardless of the unbound column state – be it still empty or already initialized with values, so this can be combined with the previous resulting in a prefilled on the server column and just the first few values replaced by the method:&lt;/p&gt; &lt;p&gt;&lt;img title="The client side method to set unbound column values in the Ignite Ui grid." alt="The client side method to set unbound column values in the Ignite Ui grid." src="http://media.infragistics.com/community/Release/12.2/jQuery/Unbound-Columns/jquery-grid-set-unbound-values.png" /&gt;&lt;/p&gt; &lt;h3 id="formula" name="formula"&gt;Formula&lt;/h3&gt; &lt;p&gt;The probably most exciting part. It’s not really even a formula per se. It’s a JavaScript function that is called with the rest of the row data and reference to the grid so it can calculate and return a value for the unbound column. However, since it’s just a client function you can return pretty much anything and obtain it in any way. That is powerful. Here’s the most basic usage I mentioned making some kind of row summary if you will. Inside the grid column definitions:&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:a6ac63e4-9baf-4749-b828-15babff7db12" 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;/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;total&amp;#39;&lt;/span&gt;,&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;                headerText : &lt;span style="color:#800000;"&gt;&amp;#39;Total&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;                formula : calcTotal&lt;/li&gt; &lt;li&gt;            }&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&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:84c77c08-336b-4e67-83da-b0fa8ada2c05" 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;Note that the row is pretty much the current data record even with the ‘name’ unbound value we already have. Also the formula property can be set with string, which I’m sure you will see when using the identical MVC property:&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:b9621316-cbe9-4902-bf73-d7b058069409" 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;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;total&amp;quot;&lt;/span&gt;,&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;    HeaderText = &lt;span style="color:#a31515;"&gt;&amp;quot;Total&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;    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;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;p&gt;The result of this is the heading screenshot of course. &lt;/p&gt; &lt;h3 id="gotcha" name="gotcha"&gt;Gotcha-s&lt;/h3&gt; &lt;p name="gotcha"&gt;As I explained it’s a deceptively simple feature and once you look into it it’s quite something. That warrants a few limitations. While it does work just fine on the client with every feature, the server side compatibility is lacking – in fact, remote Filtering, Sorting and GroupBy are not supported for unbound columns. You could potentially perform updating but as you can imagine the rows (grid records) no longer match the server model the grid was bound to so custom deserialization would be required.&lt;/p&gt; &lt;p name="gotcha"&gt;There’s also the matter of how the additional data is to be handled and that is dictated by the ‘mergeUnboundColumns’ property. There are some performance implications to this that we’ll leave for some other time (read: the second blog, find directs links to skip to that below).&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="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 this &lt;a title="jQuery Grid Unbound Columns JSFiddle" href="http://jsfiddle.net/damyanpetev/P7Fgp/" target="_blank"&gt;JSFiddle demonstrating different ways to set unbound values&lt;/a&gt;.&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 &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;We’ve looked into the benefits and different applications of the all new Unbound Columns feature in the Ignite UI jQuery Grid. We’ve went through adding such a column to the grid and the different ways to provide it with data in both client-side scripts and using the ASP.NET MVC server-side helper/wrapper. We noted some cases to in mind and in a following blog we’ll go into greater detail about the ‘mergeUnboundColumns’ property and also methods to get values from unbound columns.&lt;/p&gt;</description></item><item><title> jQuery Mobile Controls by Infragistics</title><link>http://blogs.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>jQuery Hierarchical Grid - Load On Demand</title><link>http://blogs.infragistics.com/blogs/damyan_petev/archive/2012/02/15/jquery-hierarchical-grid-load-on-demand.aspx</link><pubDate>Wed, 15 Feb 2012 13:00:00 GMT</pubDate><guid isPermaLink="false">7a8b7c76-b7ad-48e0-9694-5b04ca132ed0:332605</guid><dc:creator>dpetev</dc:creator><description>&lt;p&gt;The Hierarchical Grid (a fairly recent addition to our NetAdvatage for jQuery) is a client-side control that can display hierarchical ( or nested data if you will, the kind of stuff you would use an Org chart or a tree of some sorts to visualize). Now while in some cases other controls just may do, when presented with large amount of information and it requires a table-like representation then the igHierarchicalGrid should definitely be your go-to control. Using a hierarchical grid representation is a amazing reduction in terms of space required per data unit as it allows for not only child layouts to be collapsed and expanded but also provides paging and all the things you&amp;rsquo;d expect from a grid. And while this is all great, it kind of makes you wonder where else you can save up some. There is, in fact, a very obvious route to take &amp;ndash; collapsing and expanding layouts sounds like a great target &amp;ndash; why have them while they are not visible? That is indeed the right question. You can say we have thought about that as such way of thinking is in the very design of the control &amp;ndash; the hierarchical grid is relying on the flat igGrid control to display child layouts and it creates an instance &lt;strong&gt;&lt;em&gt;only&lt;/em&gt;&lt;/strong&gt; when a row is actually expanded. What this means is that all the markup (HTML elements) that might represent a 50 rows worth of child entries would not be created and sit around until and if the user decides to expand their parent row. This reduces the total resources required and at the end of the day it equals performance boost. &amp;ldquo;Good!&amp;rdquo;, you might say, yet there is .. more! The Hierarchical Grid is already taking care of its child UI elements for you, but what about the data? Of course that essential side has not been forgotten and the igHierarchicalGrid comes with a &amp;lsquo;Load On Demand&amp;rsquo; support. What this brings is the ability to load data only when it is required making that control that much more lightweight and while enabling it, you also lay the foundations for some other nifty features such a remote paging, filtering and sorting. You are, however, required to give it a little push, so keep reading to see how to do just that!&lt;/p&gt;
&lt;p&gt;Also here&amp;rsquo;s and inspirational screenshot of that all-time favourite spinning indicator users would and should see when they must be informed something in the background is happening and that is pretty much the only indication something like Load On Demand is active. Keep in mind this took several attempts to nail the split-second the indicator is visible, so bear with me on its aesthetics :)&lt;/p&gt;
&lt;p&gt;&lt;img src="http://media.infragistics.com/community/Release/11.2/JQUERY/Hierarchical_Grid-Load_On_Demand/jQuery-Hierarchical-Grid_Load-on-Demand.png" title="jQuery Hierarchical Grid Loading on Demand" alt="jQuery Hierarchical Grid Loading on Demand" /&gt;&lt;/p&gt;
&lt;h1&gt;Load on Demand with jQuery &lt;/h1&gt;
&lt;p&gt;Now if you&amp;rsquo;ve been examining the jQuery API of the Hierarchical Grid you might be wondering where is that &amp;lsquo;loadOnDemand&amp;rsquo; property? Simply put, the jQuery widget doesn&amp;rsquo;t really have one. To be completely thorough&amp;hellip; the ASP.NET MVC helper does have one (as it sets up some behind-the-scenes server magic) but more on that later on. The widget doesn&amp;rsquo;t need that as it is a client control completely independent from server technology and as such in no way does it implement loading data on demand, but rather it should be made aware of such opportunity and if the proper setting are in place the grid will take advantage of it. With that said, the control can consume &lt;a title="Open Data Protocol (OData) homepage." href="http://www.odata.org/" target="_blank"&gt;OData (Open Data Protocol)&lt;/a&gt; and with the very nature of the protocol that spells querying data (including paging, ordering and filtering) what follows seems completely natural &amp;ndash; when presented with OData the grid will use it to request data only when needed &amp;ndash; yes, loading it demand. That means that if you have your information exposed with OData protocol you are almost ready! All that is left to do to get the feature is three properties:&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:0cf15aef-f333-4962-a631-96ec22a40bbb" 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;"&gt;
&lt;li&gt;$(&lt;span style="color:#800000;"&gt;&amp;quot;#hierarchicalGrid&amp;quot;&lt;/span&gt;).igHierarchicalGrid({&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;&lt;span style="color:#006400;"&gt;//--Set up for Load on demand follows:&lt;/span&gt;&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;odata: &lt;span style="color:#0000ff;"&gt;true&lt;/span&gt;,&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;initialDataBindDepth: 0,&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;dataSource: oDataInJson,&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;responseDataKey: &lt;span style="color:#800000;"&gt;&amp;#39;d&amp;#39;&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;//--end--&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;autoGenerateColumns: &lt;span style="color:#0000ff;"&gt;true&lt;/span&gt;,&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;primaryKey: &lt;span style="color:#800000;"&gt;&amp;quot;ID&amp;quot;&lt;/span&gt;,&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;{&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;name: &lt;span style="color:#800000;"&gt;&amp;quot;Products&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;responseDataKey: &lt;span style="color:#800000;"&gt;&amp;#39;d&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;childrenDataProperty: &lt;span style="color:#800000;"&gt;&amp;quot;Products&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;autoGenerateColumns: &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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;primaryKey: &lt;span style="color:#800000;"&gt;&amp;quot;ID&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;],&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;width: &lt;span style="color:#800000;"&gt;&amp;quot;700px&amp;quot;&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;As seen in lines 4 through 7 there isn&amp;rsquo;t all too much complication about it &amp;ndash; make the grid aware OData will be used (setting the respective property to &amp;lsquo;true&amp;rsquo;) and provide a source. &lt;/p&gt;
&lt;p&gt;The initial data bind depth is obligatory and it tells the grid just how much in the nested data structure should it dig right from the start and while usually that means setting it to as many levels your data has or even &amp;ndash;1 for the &amp;ldquo;I don&amp;rsquo;t know! Can&amp;rsquo;t you just figure it out and load everything?&amp;rdquo; case, when the goal is loading on demand you want that to be zero &amp;ndash; as in just the first(parent) tier of entries will be loaded.&lt;/p&gt;
&lt;p&gt;The response key is telling the grid how to look at your data and is specific to it as well. It is only needed when that data is wrapped and it points to where the array of records is. Let&amp;rsquo;s have a more descriptive example &amp;ndash; as seen above is is set to &amp;lsquo;d&amp;rsquo; and that is because in that demo the sample OData service response looks like.. &lt;/p&gt;
&lt;div style="text-align:left;line-height:12pt;background-color:#f4f4f4;margin:20px 0px 10px;width:97.5%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;max-height:200px;font-size:8pt;overflow:auto;cursor:text;border:silver 1px solid;padding:4px;" id="codeSnippetWrapper"&gt;
&lt;div style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;" id="codeSnippet"&gt;
&lt;pre style="text-align:left;line-height:12pt;background-color:white;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span style="color:#606060;" id="lnum1"&gt;   1:&lt;/span&gt; ?({&lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span style="color:#606060;" id="lnum2"&gt;   2:&lt;/span&gt; &lt;span style="color:#006080;"&gt;&amp;quot;d&amp;quot;&lt;/span&gt; : [&lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:white;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span style="color:#606060;" id="lnum3"&gt;   3:&lt;/span&gt; {&lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span style="color:#606060;" id="lnum4"&gt;   4:&lt;/span&gt; &lt;span style="color:#006080;"&gt;&amp;quot;__metadata&amp;quot;&lt;/span&gt;: {&lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:white;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span style="color:#606060;" id="lnum5"&gt;   5:&lt;/span&gt; &lt;span style="color:#006080;"&gt;&amp;quot;uri&amp;quot;&lt;/span&gt;: &lt;span style="color:#006080;"&gt;&amp;quot;http://services.odata.org/OData/OData.svc/Categories(0)&amp;quot;&lt;/span&gt;, &lt;span style="color:#006080;"&gt;&amp;quot;type&amp;quot;&lt;/span&gt;: &lt;span style="color:#006080;"&gt;&amp;quot;ODataDemo.Category&amp;quot;&lt;/span&gt;&lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span style="color:#606060;" id="lnum6"&gt;   6:&lt;/span&gt; }, &lt;span style="color:#006080;"&gt;&amp;quot;ID&amp;quot;&lt;/span&gt;: 0, &lt;span style="color:#006080;"&gt;&amp;quot;Name&amp;quot;&lt;/span&gt;: &lt;span style="color:#006080;"&gt;&amp;quot;Food&amp;quot;&lt;/span&gt;, &lt;span style="color:#006080;"&gt;&amp;quot;Products&amp;quot;&lt;/span&gt;: {&lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:white;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span style="color:#606060;" id="lnum7"&gt;   7:&lt;/span&gt; &lt;span style="color:#008000;"&gt;//rest is omitted&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Now take the NorthWind sample service for example:&lt;/p&gt;
&lt;div style="text-align:left;line-height:12pt;background-color:#f4f4f4;margin:20px 0px 10px;width:97.5%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;max-height:200px;font-size:8pt;overflow:auto;cursor:text;border:silver 1px solid;padding:4px;" id="codeSnippetWrapper"&gt;
&lt;div style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;" id="codeSnippet"&gt;
&lt;pre style="text-align:left;line-height:12pt;background-color:white;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span style="color:#606060;" id="lnum1"&gt;   1:&lt;/span&gt; ?({&lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span style="color:#606060;" id="lnum2"&gt;   2:&lt;/span&gt; &lt;span style="color:#006080;"&gt;&amp;quot;d&amp;quot;&lt;/span&gt; : {&lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:white;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span style="color:#606060;" id="lnum3"&gt;   3:&lt;/span&gt; &lt;span style="color:#006080;"&gt;&amp;quot;results&amp;quot;&lt;/span&gt;: [&lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span style="color:#606060;" id="lnum4"&gt;   4:&lt;/span&gt; {&lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:white;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span style="color:#606060;" id="lnum5"&gt;   5:&lt;/span&gt; &lt;span style="color:#006080;"&gt;&amp;quot;__metadata&amp;quot;&lt;/span&gt;: {&lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span style="color:#606060;" id="lnum6"&gt;   6:&lt;/span&gt; &lt;span style="color:#006080;"&gt;&amp;quot;uri&amp;quot;&lt;/span&gt;: &lt;span style="color:#006080;"&gt;&amp;quot;http://services.odata.org/Northwind/Northwind.svc/Customers(&amp;#39;ALFKI&amp;#39;)&amp;quot;&lt;/span&gt;, &lt;span style="color:#006080;"&gt;&amp;quot;type&amp;quot;&lt;/span&gt;: &lt;span style="color:#006080;"&gt;&amp;quot;NorthwindModel.Customer&amp;quot;&lt;/span&gt;&lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:white;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span style="color:#606060;" id="lnum7"&gt;   7:&lt;/span&gt; }, &lt;span style="color:#006080;"&gt;&amp;quot;CustomerID&amp;quot;&lt;/span&gt;: &lt;span style="color:#006080;"&gt;&amp;quot;ALFKI&amp;quot;&lt;/span&gt;, &lt;span style="color:#006080;"&gt;&amp;quot;CompanyName&amp;quot;&lt;/span&gt;: &lt;span style="color:#006080;"&gt;&amp;quot;Alfreds Futterkiste&amp;quot;&lt;/span&gt;, &lt;span style="color:#006080;"&gt;&amp;quot;ContactName&amp;quot;&lt;/span&gt;: &lt;span style="color:#006080;"&gt;&amp;quot;Maria Anders&amp;quot;&lt;/span&gt;, &lt;span style="color:#006080;"&gt;&amp;quot;ContactTitle&amp;quot;&lt;/span&gt;: &lt;span style="color:#006080;"&gt;&amp;quot;Sales Representative&amp;quot;&lt;/span&gt;, &lt;span style="color:#006080;"&gt;&amp;quot;Address&amp;quot;&lt;/span&gt;: &lt;span style="color:#006080;"&gt;&amp;quot;Obere Str. 57&amp;quot;&lt;/span&gt;, &lt;span style="color:#006080;"&gt;&amp;quot;City&amp;quot;&lt;/span&gt;: &lt;span style="color:#006080;"&gt;&amp;quot;Berlin&amp;quot;&lt;/span&gt;, &lt;span style="color:#006080;"&gt;&amp;quot;Region&amp;quot;&lt;/span&gt;: &lt;span style="color:#0000ff;"&gt;null&lt;/span&gt;, &lt;span style="color:#006080;"&gt;&amp;quot;PostalCode&amp;quot;&lt;/span&gt;: &lt;span style="color:#006080;"&gt;&amp;quot;12209&amp;quot;&lt;/span&gt;, &lt;span style="color:#006080;"&gt;&amp;quot;Country&amp;quot;&lt;/span&gt;: &lt;span style="color:#006080;"&gt;&amp;quot;Germany&amp;quot;&lt;/span&gt;, &lt;span style="color:#006080;"&gt;&amp;quot;Phone&amp;quot;&lt;/span&gt;: &lt;span style="color:#006080;"&gt;&amp;quot;030-0074321&amp;quot;&lt;/span&gt;, &lt;span style="color:#006080;"&gt;&amp;quot;Fax&amp;quot;&lt;/span&gt;: &lt;span style="color:#006080;"&gt;&amp;quot;030-0076545&amp;quot;&lt;/span&gt;, &lt;span style="color:#006080;"&gt;&amp;quot;Orders&amp;quot;&lt;/span&gt;: {&lt;/pre&gt;

&lt;pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span style="color:#606060;" id="lnum8"&gt;   8:&lt;/span&gt; &lt;span style="color:#008000;"&gt;//rest is omitted&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;In this case the response key would be &amp;ldquo;d.results&amp;rdquo;. Simple enough and again specific to how you present your data.&lt;/p&gt;
&lt;p&gt;In the light of all this you can check out Taz&amp;rsquo;s blog on &lt;a title="A blog on using OData with jQuery Hierarchical Grid by Taz Abdeali" href="http://blogs.infragistics.com/blogs/taz_abdeali/archive/2012/01/24/using-odata-with-jquery-hierarchical-grid.aspx" target="_blank"&gt;Using OData with jQuery Hierarchical Grid&lt;/a&gt; where you can find not only a full guide but also a link to a live demo!&lt;/p&gt;
&lt;p&gt;If you take a look at the example in that blog you might notice the datasource is set to the service URL. This is because the grid itself will use a igDataSource control to bind to data and as such it is available for you as well. If you want to tweak some of its setting you can define your data source like so:&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:c1740a1d-78a2-46b0-9430-51129a30e5d9" 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: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;var&lt;/span&gt; oDataInJson = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; $.ig.JSONPDataSource(&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{ dataSource: &lt;span style="color:#800000;"&gt;&amp;#39;http://services.odata.org/OData/OData.svc/Categories?$format=json&amp;amp;$callback=?&amp;#39;&lt;/span&gt;, &lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;responseDataKey: &lt;span style="color:#800000;"&gt;&amp;quot;d&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;/ol&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;You can read more about this control in our&amp;nbsp; &lt;a title="Help topics on the Infragistics jQuery-based data source control." href="http://help.infragistics.com/NetAdvantage/jQuery/Current/CLR4.0?page=igDataSource_igDataSource.html" target="_blank"&gt;Help Topics&lt;/a&gt;.&lt;/p&gt;
&lt;h1&gt;Load On Demand with ASP.NET MVC&lt;/h1&gt;
&lt;p&gt;Unlike the majority of our jQuery products where the helpers mostly mirror the widget&amp;rsquo;s settings and add some comforts for those used to writing in a managed environment, this time it&amp;rsquo;s different. As said above the igHierarchicalGrid MVC wrapper does have a Load On Demand property. When that is set to true the wrapper provides utility to send&amp;nbsp; responses to the client in JSON format. To be more specific it is the grid&amp;rsquo;s model that provides the support for that. There&amp;rsquo;s a catch though &amp;ndash; the responses use the model&amp;rsquo;s GetData() method and&amp;nbsp; that means the model is needed wherever those responses are created, which makes setting up the grid in the View with chaining syntax something you might want to avoid. The model of the grid along with all the properties should be then defined in either the Controller of the Model. There is also one more thing to note &amp;ndash; the model creating is best done in a separate method and here&amp;rsquo;s the full code for one:&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:aa8444fb-4d1f-4564-9850-ad11fe0c4383" 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: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;using&lt;/span&gt; Infragistics.Web.Mvc;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&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:20a6b3cc-192b-43ea-8e13-89c364ed1a6f" 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;"&gt;
&lt;li&gt;&lt;span style="color:#0000ff;"&gt;private&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;GridModel&lt;/span&gt; CreateGridModel()&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:#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;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#008000;"&gt;// Set up properties and columns:&lt;/span&gt;&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;grid.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;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 style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;grid.Columns.Add(&lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;GridColumn&lt;/span&gt;(&lt;span style="color:#a31515;"&gt;&amp;quot;Customer&amp;quot;&lt;/span&gt;, &lt;span style="color:#a31515;"&gt;&amp;quot;CustomerID&amp;quot;&lt;/span&gt;, &lt;span style="color:#a31515;"&gt;&amp;quot;string&amp;quot;&lt;/span&gt;, &lt;span style="color:#a31515;"&gt;&amp;quot;300px&amp;quot;&lt;/span&gt;));&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;grid.Columns.Add(&lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;GridColumn&lt;/span&gt;(&lt;span style="color:#a31515;"&gt;&amp;quot;Company Name&amp;quot;&lt;/span&gt;, &lt;span style="color:#a31515;"&gt;&amp;quot;CompanyName&amp;quot;&lt;/span&gt;, &lt;span style="color:#a31515;"&gt;&amp;quot;string&amp;quot;&lt;/span&gt;, &lt;span style="color:#a31515;"&gt;&amp;quot;150px&amp;quot;&lt;/span&gt;));&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;grid.Columns.Add(&lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;GridColumn&lt;/span&gt;(&lt;span style="color:#a31515;"&gt;&amp;quot;Country&amp;quot;&lt;/span&gt;, &lt;span style="color:#a31515;"&gt;&amp;quot;Country&amp;quot;&lt;/span&gt;, &lt;span style="color:#a31515;"&gt;&amp;quot;string&amp;quot;&lt;/span&gt;, &lt;span style="color:#a31515;"&gt;&amp;quot;150px&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;grid.PrimaryKey = &lt;span style="color:#a31515;"&gt;&amp;quot;CustomerID&amp;quot;&lt;/span&gt;;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;grid.AutoGenerateLayouts = &lt;span style="color:#0000ff;"&gt;false&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;&lt;span style="color:#008000;"&gt;// Create child layout&lt;/span&gt;&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#2b91af;"&gt;GridColumnLayoutModel&lt;/span&gt; layout = &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;&amp;nbsp;&amp;nbsp;&amp;nbsp;layout.Key = &lt;span style="color:#a31515;"&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;layout.ForeignKey = &lt;span style="color:#a31515;"&gt;&amp;quot;CustomerID&amp;quot;&lt;/span&gt;;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;layout.PrimaryKey = &lt;span style="color:#a31515;"&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;layout.AutoGenerateColumns = &lt;span style="color:#0000ff;"&gt;false&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;layout.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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;layout.Columns.Add(&lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;GridColumn&lt;/span&gt;(&lt;span style="color:#a31515;"&gt;&amp;quot;Order ID&amp;quot;&lt;/span&gt;, &lt;span style="color:#a31515;"&gt;&amp;quot;OrderID&amp;quot;&lt;/span&gt;, &lt;span style="color:#a31515;"&gt;&amp;quot;number&amp;quot;&lt;/span&gt;, &lt;span style="color:#a31515;"&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;layout.Columns.Add(&lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;GridColumn&lt;/span&gt;(&lt;span style="color:#a31515;"&gt;&amp;quot;Customer&amp;quot;&lt;/span&gt;, &lt;span style="color:#a31515;"&gt;&amp;quot;CustomerID&amp;quot;&lt;/span&gt;, &lt;span style="color:#a31515;"&gt;&amp;quot;string&amp;quot;&lt;/span&gt;, &lt;span style="color:#a31515;"&gt;&amp;quot;100px&amp;quot;&lt;/span&gt;));&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;layout.Columns.Add(&lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;GridColumn&lt;/span&gt;(&lt;span style="color:#a31515;"&gt;&amp;quot;Order Date&amp;quot;&lt;/span&gt;, &lt;span style="color:#a31515;"&gt;&amp;quot;OrderDate&amp;quot;&lt;/span&gt;, &lt;span style="color:#a31515;"&gt;&amp;quot;date&amp;quot;&lt;/span&gt;, &lt;span style="color:#a31515;"&gt;&amp;quot;150px&amp;quot;&lt;/span&gt;));&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;layout.Columns.Add(&lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;GridColumn&lt;/span&gt;(&lt;span style="color:#a31515;"&gt;&amp;quot;Shipped Date&amp;quot;&lt;/span&gt;, &lt;span style="color:#a31515;"&gt;&amp;quot;ShippedDate&amp;quot;&lt;/span&gt;, &lt;span style="color:#a31515;"&gt;&amp;quot;date&amp;quot;&lt;/span&gt;, &lt;span style="color:#a31515;"&gt;&amp;quot;150px&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:#008000;"&gt;// Add paging to child layouts (different from the parent&amp;#39;s)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#2b91af;"&gt;GridPaging&lt;/span&gt; layoutPaging = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;GridPaging&lt;/span&gt;();&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;layoutPaging.VisiblePageCount = 2;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;layoutPaging.PageSize = 5;&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;layoutPaging.Type = &lt;span style="color:#2b91af;"&gt;OpType&lt;/span&gt;.Remote;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;layout.Features.Add(layoutPaging);&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;&lt;span style="color:#008000;"&gt;//add that layout to the grid&lt;/span&gt;&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;grid.ColumnLayouts.Add(layout);&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:#008000;"&gt;//most importantly turn Load On demand on and define response Urls:&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;grid.LoadOnDemand = &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;grid.DataSourceUrl = &lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;.Url.Action(&lt;span style="color:#a31515;"&gt;&amp;quot;BindParent&amp;quot;&lt;/span&gt;);&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;grid.ColumnLayouts[0].DataSourceUrl = &lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;.Url.Action(&lt;span style="color:#a31515;"&gt;&amp;quot;BindChild&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;&lt;span style="color:#008000;"&gt;//Also add paging to the parent layout&lt;/span&gt;&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#2b91af;"&gt;GridPaging&lt;/span&gt; paging = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;GridPaging&lt;/span&gt;();&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;paging.VisiblePageCount = 2;&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;paging.PageSize = 10;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;paging.Type = &lt;span style="color:#2b91af;"&gt;OpType&lt;/span&gt;.Remote;&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;grid.Features.Add(paging);&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:#008000;"&gt;// Return the finished model&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; grid;&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;You will have to scroll down a bit to get to the part we are interested in &amp;ndash; starting at line 39 where the LoadOnDemand property is set to true. The layouts had to be created before that so data source URL-s can now be assigned to them. &lt;/p&gt;
&lt;p&gt;Now back to the subject of JSON responses as seen above we have defined a grid model with two levels of hierarchy &amp;ndash; a parent entries with child entries. Therefore we have the &amp;ldquo;BindParent&amp;rdquo; and &amp;ldquo;BindChild&amp;rdquo; as seen above. A very important note to take is that such a response is required for each layout, so one method returning requested data for each level in your data. As mentioned those methods would use the model&amp;rsquo;s GetData(), this is why we moved its creation to a separate method, because it is used to pass the model to the view and in all of those methods as well. Their return type should be JsonResult as that is what the grid would expect, but you don&amp;rsquo;t have to worry about converting data yourself. This is how those look:&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:71011fc1-3437-4085-be32-69f58d1a35f7" 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:400px;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="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;JsonResult&lt;/span&gt; BindParent()&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:#008000;"&gt;//create a model&lt;/span&gt;&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#2b91af;"&gt;GridModel&lt;/span&gt; grid = CreateGridModel();&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#008000;"&gt;//set its datasource&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;var&lt;/span&gt; dataContext = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;NorthwindDataContext&lt;/span&gt;();&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; dataSource = dataContext.Customers;&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;grid.DataSource = dataSource.Take(30);&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#008000;"&gt;//and use the GetData() method to return the results&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;return&lt;/span&gt; grid.GetData();&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 then you have the one for the child 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:89bb0e5f-24d0-4a62-8886-c3d82d96dde8" 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:400px;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="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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#008000;"&gt;//create a model&lt;/span&gt;&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#2b91af;"&gt;GridModel&lt;/span&gt; grid = CreateGridModel();&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#008000;"&gt;//set its datasource&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;var&lt;/span&gt; dataContext = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;NorthwindDataContext&lt;/span&gt;();&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; dataSource = dataContext.Orders;&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;grid.DataSource = dataSource;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#008000;"&gt;//and use the GetData() method to return the results&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;return&lt;/span&gt; grid.GetData(path, layout);&lt;/li&gt;
&lt;li&gt;}&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Notice we never defined data source in the model creation method and also notice the response methods set that to the proper table for each layout. Notice as well that the parent requires no parameters &amp;ndash; this is based on the way the grid performs internal requests. Parameters guide the method on which layout should the data be set and also its path in the hierarchy. The general path format would describe the sequence in which rows were expanded like so:&lt;/p&gt;
&lt;p&gt;PrimaryKeyID/ChildPrimaryKeyID/AnotherChildKey[layout name]. &lt;/p&gt;
&lt;p&gt;Based on how your grid/data is set up any of the expanded rows&amp;rsquo; keys in the path can go with a layout name if it is specific to it. In the case above that would mean the PrimaryKeyID would be the guide for the children under that specific row in the parent, then from them the children of the ChildPrimaryKeyID row and then the specific child layout under AnotherChildKey from the latter. This might seem somewhat confusing but take it like this &amp;ndash; it is true to its name &amp;ndash; you start from the root (notice it is not mentioned in the path) move down the keys following the hierarchy to get to required data. Now the path above is for 4 levels of hierarchy and since the example so far is just two we only get the first part in the path &amp;ndash; the PrimaryKeyID which would be the id of the expanded parent row and look like:&lt;/p&gt;
&lt;p&gt;&lt;img src="http://media.infragistics.com/community/Release/11.2/JQUERY/Hierarchical_Grid-Load_On_Demand/jQuery-Hierarchical-Grid_Load-on-Demand-path.png" title="jQuery Hierarchical Grid Load on demand request path." alt="jQuery Hierarchical Grid Load on demand request path." /&gt;&lt;/p&gt;
&lt;p&gt;And as you may have already guessed an request with empty path would mean the parent level, thus the BindParent takes zero arguments. &lt;/p&gt;
&lt;h1&gt;Events&lt;/h1&gt;
&lt;p&gt;The jQuery Hierarchical Grid offers two events related to Load On Demand. You can start by reading a blog written by Jordan Tsankov on just that &amp;ndash; &lt;a title="A blog on Handling Events in the jQuery Hierarchical Grid" href="http://blogs.infragistics.com/blogs/jordan_tsankov/archive/2012/01/30/jquery-hierarchical-grid-handling-events.aspx" target="_blank"&gt;Handling Events in the igHierarchicalGrid&lt;/a&gt;. The basic principals on using the LoadOnDemand events is just the same as using rowExpanding or rowCollapsed you can see in that blog. The widget will fire two events consequently upon loading requested data &amp;ndash; first &amp;lsquo;childrenPopulating&amp;rsquo; and then the standard &amp;lsquo;childrenPopulat&lt;strong&gt;ed&lt;/strong&gt;&amp;rsquo;. As always the &amp;lsquo;-ing&amp;rsquo; even fires as child layout is just about to be populated with data and is cancellable, while the other event is fired after the population is complete and is not cancellable. Following the convention you can hook up an event handler by just using the name of the control plus the name of the event without further complications like so:&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:12f8d570-444e-42e2-9745-103efb929672" 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: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:#800000;"&gt;&amp;quot;#hierarchicalGrid&amp;quot;&lt;/span&gt;).live(&lt;span style="color:#800000;"&gt;&amp;quot;ighierarchicalgridchildrenpopulating&amp;quot;&lt;/span&gt;, &lt;span style="color:#0000ff;"&gt;function&lt;/span&gt; (evt, args) {&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#006400;"&gt;//you can decline loading data for certain rows, like some that may not even have child items&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#006400;"&gt;//calcel out if calling row with key ID of 0&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;if&lt;/span&gt; (args.id == &lt;span style="color:#800000;"&gt;&amp;quot;ID: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;return&lt;/span&gt; &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;&lt;span style="color:#006400;"&gt;//define you own logic to hanle the event&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 you can find in our &lt;a title="Hierarchical jQuery Grid control API" href="http://help.infragistics.com/jQuery/2011.2/ui.ighierarchicalgrid" target="_blank"&gt;API&lt;/a&gt; and in Jordan&amp;rsquo;s blog above you have access to plenty of information about the event and the participants and for the sake of keeping it simple the example above just uses the special ID formed by the row&amp;rsquo;s primary key and its value to check if the event has been fired while activating load on demand from the very first row. The demo for this project includes event logging for both MVC and OData implementations, so you can check that one out.&lt;/p&gt;
&lt;h1&gt;The Added benefits&lt;/h1&gt;
&lt;p&gt;If you remember from the introduction enabling load on demand would also lay foundations for other remote functionalities. You probably have figured it out the moment OData was mentioned &amp;ndash; the protocol providers support those features and the grid will make the appropriate requests when remote paging, filtering, sorting and even summaries!&lt;/p&gt;
&lt;p&gt;Then there is even more! The MVC wrapper being witty and all will not only parse and execute hierarchical data requests. It is also capable of querying data based on other options it recognizes in the grid&amp;rsquo;s request &amp;ndash; which means that you simply instruct the grid to perform remote those actions and it will create the appropriate requests and the getData() method will return the correct rows. It really is that simple, you define options, set them to remote and don&amp;rsquo;t even bother setting up URL key(s) for filtering or sorting like you are normally required to. Here&amp;rsquo;s what you can &lt;strong&gt;&lt;em&gt;simply add&lt;/em&gt;&lt;/strong&gt; to the CreateModel method 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:f2b10d2f-9448-47ca-8dd1-9dc3a3e284ca" 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:400px;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="color:#008000;"&gt;//Add features:&lt;/span&gt;&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&lt;span style="color:#2b91af;"&gt;GridSorting&lt;/span&gt; sorting = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;GridSorting&lt;/span&gt;();&lt;/li&gt;
&lt;li&gt;&amp;nbsp;sorting.Type = &lt;span style="color:#2b91af;"&gt;OpType&lt;/span&gt;.Remote;&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;grid.Features.Add(sorting);&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;span style="color:#2b91af;"&gt;GridPaging&lt;/span&gt; paging = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;GridPaging&lt;/span&gt;();&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;paging.PageSize = 10;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;paging.Type = &lt;span style="color:#2b91af;"&gt;OpType&lt;/span&gt;.Remote;&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;grid.Features.Add(paging);&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;span style="color:#2b91af;"&gt;GridFiltering&lt;/span&gt; filtering = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;GridFiltering&lt;/span&gt;();&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;filtering.Type = &lt;span style="color:#2b91af;"&gt;OpType&lt;/span&gt;.Remote;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;filtering.Mode = &lt;span style="color:#2b91af;"&gt;FilterMode&lt;/span&gt;.Simple;&lt;/li&gt;
&lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;grid.Features.Add(filtering);&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h1&gt;Conclusion&lt;/h1&gt;
&lt;p&gt;The Load on Demand functionality of the NetAdvantage for jQuery Hierarchical Grid will keep it simple and reward with great results. Should you choose to expose your data via the Open Data Protocol (OData), your client-side implementation of the control will readily take advantage of all it can offer and handle the requests for you with little to no extra effort. And if you prefer different approach the wrapper will assist you greatly in enabling such functionality on your server-side as well as once more managing requests and generating proper responses. And while doing that Load On Demand would also become available for a number of features that can be performed remotely such as paging, summaries, sorting and filtering.&lt;/p&gt;
&lt;p&gt;A read you might find interesting in our help topics would be the &lt;a title="Getting started with igGrid, oData and WCF Data Services guide" href="http://help.infragistics.com/NetAdvantage/jQuery/Current/CLR4.0?page=igGrid_Getting_Started_With_igGrid_oData_and_WCF_Data_Services.html" target="_blank"&gt;Getting started with igGrid, oData and WCF Data Services&lt;/a&gt; guide in our Help Topics which is another way you can consume OData with your grid.&lt;/p&gt;
&lt;p&gt;Also head over to our &lt;a title="jQuery Hierarchical Grid Sample" href="http://samples.infragistics.com/jquery/hierarchical-grid/hierarchical-grid-load-on-demand" target="_blank"&gt;Samples&lt;/a&gt; to try it out and you can also download the &lt;a title="Hierarchical Grid Load on demand Demo project." href="http://media.infragistics.com/community/Release/11.2/JQUERY/Hierarchical_Grid-Load_On_Demand/load-on-demand_Demo.zip" target="_blank"&gt;Demo project&lt;/a&gt; accompanying this blog in which you will find implemented ASP.NET MVC using the wrapper and a pure jQuery / JavaScript implementation consuming OData.&lt;/p&gt;</description></item></channel></rss>