Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    text
    copied!<p>Not at all that familair with webgrid, but would the following be a solution for you? I made the following simple model:</p> <pre><code>public class Foo { public string Name { get; set; } public Lookup Lookup { get; set; } } public class Lookup { public string Name { get; set; } public Description Description { get; set; } } public class Description { public string English { get; set; } public string French { get; set; } } </code></pre> <p>controller action (i don't have a db, so I mocked some data):</p> <pre><code>public ViewResult Index() { //var foos = db.Foos; var foos = new List&lt;Foo&gt;(); foos.Add(new Foo { Name = "Foo1" }); foos.Add(new Foo { Name = "Foo2", Lookup = new Lookup { Name = "Lookup2", Description = new Description { English = "englishFoo2", French = "frenchFoo2" } } }); foos.Add(new Foo { Name = "Foo3", Lookup = new Lookup { Name = "Lookup3", Description = new Description { //English = "englishFoo3", French = "frenchFoo3" } } }); foos.Add(new Foo { Name = "Foo4" }); foos.Add(new Foo { Name = "Foo5", Lookup = new Lookup { Description = new Description { English = "englishFoo5", French = "frenchFoo5" } } }); foos.Add(new Foo { Name = "Foo6", Lookup = new Lookup { Name = "Lookup6" } }); return View(foos); } </code></pre> <p>So, I now have Foos with or without Lookups (with or without Description).</p> <p>The view is as follows:</p> <pre><code>@model IEnumerable&lt;Foo&gt; @{ var grid = new WebGrid(Model, defaultSort: "sortMe", rowsPerPage: 10); grid.GetHtml(htmlAttributes: new { id = "DataTable" }); } @grid.GetHtml( columns: grid.Columns( grid.Column( columnName: "Name", header: "Foo" ), grid.Column( columnName: "Lookup.Name", header: "Lookup", format: @&lt;span&gt;@if (item.Lookup != null) { @item.Lookup.Name } &lt;/span&gt; ), grid.Column( columnName: "Lookup.Description.English", header: "Description.English", format: @&lt;span&gt;@if (item.Lookup != null &amp;&amp; item.Lookup.Description != null) { @item.Lookup.Description.English } &lt;/span&gt; ), grid.Column( columnName: "Lookup.Description.French", header: "Description.French", format: @&lt;span&gt;@if (item.Lookup != null &amp;&amp; item.Lookup.Description != null) { @item.Lookup.Description.French } &lt;/span&gt; ) ) ) </code></pre> <p>which works just fine for me (Asp.Net MVC 3), it procudes the following html:<br/> [snip]</p> <pre><code>&lt;tr&gt; &lt;td&gt;Foo4&lt;/td&gt; &lt;td&gt;&lt;span&gt;&lt;/span&gt;&lt;/td&gt; &lt;td&gt;&lt;span&gt;&lt;/span&gt;&lt;/td&gt; &lt;td&gt;&lt;span&gt;&lt;/span&gt;&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;Foo5&lt;/td&gt; &lt;td&gt;&lt;span&gt;&lt;/span&gt;&lt;/td&gt; &lt;td&gt;&lt;span&gt;englishFoo5 &lt;/span&gt;&lt;/td&gt; &lt;td&gt;&lt;span&gt;frenchFoo5 &lt;/span&gt;&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;Foo6&lt;/td&gt; &lt;td&gt;&lt;span&gt;Lookup6&lt;/span&gt;&lt;/td&gt; &lt;td&gt;&lt;span&gt;&lt;/span&gt;&lt;/td&gt; &lt;td&gt;&lt;span&gt;&lt;/span&gt;&lt;/td&gt; &lt;/tr&gt; </code></pre> <p>[/snip]</p>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload