2013-12-21 2 views
0
<input type="text" id="hiddenInp"/> 

У меня есть скрытое поле со строковым значением как «col1, col2, col3, col4». Я хочу разбить и зациклить эту скрытую строку с созданием asp.net mvc webgrid, как показано ниже, с помощью Razor. Не могли бы вы помочь мне в этом.Population Asp.net mvc Webgrid from Скрытое поле

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

     )) 

Я пытаюсь иметь цикл

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

ответ

2

Смотрите ниже примеры:

Пример 1

Посмотреть

@{ 
     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)) 

Пример 2

Действие

[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(); 
} 

Просмотр

@grid.GetHtml(columns: ViewBag.Columns) 

Пример 3

Модель

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

Действие

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"); 
    } 

Посмотреть

<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 Посмотреть

@grid.GetHtml(columns: ViewBag.Columns) 
+0

Я пробовал это, но он выдает ошибку "выражение, ожидаемое после grid.Columns ( – Kurkula

+1

привет @ Ушам, я обновил свой ответ. – Lin

+0

выглядит действительно потрясающе, но в соответствии с моей просьбой, как я могу передать скрытое значение str. Kurkula

Смежные вопросы