Search code examples
jqueryasp.net-mvchiddenwebgrid

Population Asp.net mvc Webgrid from Hidden field


<input type="text" id="hiddenInp"/>

I have a hidden field with string value as "col1,col2,col3,col4". I want to split and loop that hidden string with create asp.net mvc webgrid as below with Razor. Could you please help me on that.

@grid.GetHtml(columns: grid.Columns(
        grid.Column("col1"),
        grid.Column("col2"),
        grid.Column("col3"),
        grid.Column("col4")

        ))

I am trying to have a for loop

Result String = splitted column names which are concatenated with grid.column 
@grid.GetHtml(columns: grid.Columns(
+ ResultString
+ ))

Solution

  • See below examples:

    Example 1

    View

      @{
            var str = "col1,col2,col3,col4";
            string[] columns = str.Split(',');
            var cols = new List<WebGridColumn>();
            foreach (var column in columns)
            {
                cols.Add(grid.Column(column));
            }
        }
        @grid.GetHtml(columns:cols))
    

    Example 2

    Action

    [HttpGet]
    public ActionResult WebGrid() 
    {
        var columns = new List<WebGridColumn>();
        var values = "col1,col2,col3,col4"; <- Add your hidden filed value here.
        string[] columnlist = values.Split(',');
        foreach (var column in columnlist)
        {
            columns.Add(new WebGridColumn() { ColumnName = column});
        }
        ViewBag.Columns = columns;
       return View();
    }
    

    View

    @grid.GetHtml(columns: ViewBag.Columns)
    

    Example 3

    Model

    public class MyModel
    {
        public List<Column>  ColumnList { get; set; }
    }
    

    Action

    public ActionResult MyWebGrid()
    {
        return View(new MyModel());
    }
    
    [HttpPost]
    public ActionResult MyWebGrid(string[] selectedcolumns)
    {
       var columns = new List<WebGridColumn>();
         foreach (var column in selectedcolumns)
         {
             columns.Add(new WebGridColumn() { ColumnName = column });
          }
         ViewBag.Columns = columns;
    
         return PartialView("gridPartialView");
      }
    

    View

       <script src="~/Scripts/jquery-1.10.2.js"></script>
        <script src="~/Scripts/jquery.unobtrusive-ajax.js"></script>
    
         @using (Ajax.BeginForm(new AjaxOptions { UpdateTargetId = "result" }))
        {
            @foreach (var info in Model.ColumnList )
            {
              <input type="checkbox" class="checkbox" name="selectedcolumns" value="@info.columnName" id="@info.columnName" />
              <label for="@info.columnName">@info.columnName</label>
             }
            <input type="submit" value="Submit"/>
        }
        <div id="result"></div>
    

    Parital View

    @grid.GetHtml(columns: ViewBag.Columns)