Получить значения из элемента в gridview в MVC С#, пока он генерируется

Добрый день:

Я получил этот код для создания сетки в MVC 4;

@{SATXmlReports.Models.User spp = new SATXmlReports.Models.User();
           var grid = new WebGrid(ViewData["GridUserData"] as IEnumerable<SATXmlReports.Models.User>, canPage: true, canSort: true, rowsPerPage: 10, selectionFieldName: "selectedRow", ajaxUpdateContainerId: "gridContent");
          }
          <div id="gridContent" >
          @grid.GetHtml(
                        tableStyle: "table table-hover",
                        columns: grid.Columns(
                        grid.Column("Name", format: (item) => item.GetSelectLink(item.Name.ToString())),
                        grid.Column("Rol","Rol"),
                                 grid.Column("User Sites", "UserSites", format: item => Html.DropDownList("Sites", SATXmlReports.Models.User.GetUserSites(item.Name.ToString()).Select(u => new SelectListItem { Text = u.Description, Value = u.Number }))
                                 )))

Но я получаю эту ошибку:

Ошибка 11 Лучший перегруженный метод, соответствующий «System.Web.Helpers.WebGrid.Column(string, string, System.Func, string, bool)» имеет недопустимые аргументы c:\Users\fernando.martinez\Desktop\SATXmlReports\SATXmlReports \Views\Configuracion\UserSettings.cshtml 109 38 SATXmlReports

А также:

Ошибка 12. Аргумент 3: невозможно преобразовать «лямбда-выражение» в «System.Func» c:\Users\fernando.martinez\Desktop\SATXmlReports\SATXmlReports\Views\Configuracion\UserSettings.cshtml 109 83 SATXmlReports

Я пробовал все, чтобы получить свойства элемента, но у меня ничего не получилось. Этот способ работает, но жестко запрограммирован:

grid.Column("User Sites", "UserSites", format: item => Html.DropDownList("Sites", SATXmlReports.Models.User.GetUserSites("John.Burdon").Select(u => new SelectListItem { Text = u.Description, Value = u.Number }))

Какие-либо предложения?


person Fher Devs    schedule 21.05.2015    source источник


Ответы (1)


Вы должны остерегаться использования методов расширения с динамикой (элемент).

Попробуй это:

grid.Column("User Sites", "UserSites", format: item => Html.DropDownList("Sites", SATXmlReports.Models.User.GetUserSites((string)item.Name).Select(u => new SelectListItem { Text = u.Description, Value = u.Number }))
person Valerio Gentile    schedule 28.05.2015