سؤال

<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
+ ))
هل كانت مفيدة؟

المحلول

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)
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top