How to use custom column in Mvccontrib grid model?

I am using the Mvccontrib ASP.NET MVC 3 grid like this:

@Html.Grid(Model).Columns(column => { column.For(x => x.UserId).Named("ID"); column.For(x => x.Name); column.Custom(@<div><img src='@item.ImageUrl' alt="@item.Name"/><a href="@item.Link">@item.Name</a></div>).Named("Name"); column.For(x => x.Score).Named("Score"); }) 

But now I need to move this to a custom mesh model:

 @Html.MvcContrib().Grid(Model).WithModel(new MyGridModel()).Sort(ViewData["sort"] as GridSortOptions).Attributes(id => "grid", style => "width: 100%;") 

with the appropriate grid:

 public class MyGridModel : GridModel<MyModel> { public MyGridModel() { Column.For(x => x.UserId); Column.For(x => x.Name); Column.For(x => x.ImageUrl); RenderUsing(new HtmlTableGridRenderer<MyModel>()); } } 

But how can I make my own column in my grid model?
Column.Custom (???);

+4
source share
1 answer

Try it like this:

 public class MyGridModel : GridModel<MyModel> { public MyGridModel() { Column.For(x => x.UserId); Column.For(x => x.Name); Column.Custom(MyImage); Column.For(x => x.Score); RenderUsing(new HtmlTableGridRenderer<MyModel>()); } private static IHtmlString MyImage(MyModel model) { var div = new TagBuilder("div"); var img = new TagBuilder("img"); var a = new TagBuilder("a"); img.Attributes["src"] = model.ImageUrl; img.Attributes["alt"] = model.Name; a.Attributes["href"] = model.Link; a.SetInnerText(model.Name); div.InnerHtml = string.Format( "{0}{1}", img.ToString(TagRenderMode.SelfClosing), a.ToString() ); return MvcHtmlString.Create(div.ToString()); } } 
+4
source

All Articles