Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

MVC3 WebGrid - Creating Columns Dynamically (foreach?)

I want to create a WebGrid with columns based on a collection, such as List. Something like this (which obviously doesn't work):

@grid.GetHtml(
  columns: grid.Columns(
    @foreach (var column in Model.ListOfColumns) {
       grid.Column(column.Name, column.Title);
    }
  )
)          

Any clever ideas?

like image 752
pfeds Avatar asked Jan 29 '26 06:01

pfeds


1 Answers

You could ViewBag it like below.

Controller:

        List<WebGridColumn> columns = new List<WebGridColumn>();
        columns.Add(new WebGridColumn() { ColumnName = "Id", Header = "Id" });
        columns.Add(new WebGridColumn() { ColumnName = "Name", Header = "Name" });
        columns.Add(new WebGridColumn() { ColumnName = "Location", Header = "Location" });
        columns.Add(new WebGridColumn() { Format = (item) => { return new HtmlString(string.Format("<a href= {0}>View</a>", Url.Action("Edit", "Edit", new { Id = item.Id }))); } });
        ViewBag.Columns = columns;

View:

   @grid.GetHtml(tableStyle: "ui-widget ui-widget-content",
                      headerStyle: "ui-widget-header",
                      columns: ViewBag.Columns
                     )
like image 59
Ringo Long Avatar answered Jan 30 '26 23:01

Ringo Long



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!