2015-10-06 4 views
0

У меня есть динамический столбец и писать динамичный стиль, но я получаю сообщение об ошибке:Невозможно использовать лямбда-выражения

CS1977 C# Cannot use a lambda expression as an argument to a dynamically dispatched operation without first casting it to a delegate or expression tree type.

Вид:

WebGrid grid = new WebGrid(Model); 
    List<WebGridColumn> columnsL = new List<WebGridColumn>(); 

    for (int i = 0; i < Model.First().Data.Count; i++) 
    { 
     int local = i; 
     columnsL.Add(grid.Column(Model.First().Data[i].Name, Model.First().Data[i].Label,format: item => new MvcHtmlString("<text>" + item.Data[local].Value +"</text>") 
    )); 
    } 


@grid.GetHtml(tableStyle: "table table-striped table-bordered", columns: columnsL) 
+9

Почему вы так написали строку кода? Это ужасно. [«Любой дурак может написать код, который может понять компьютер. Хорошие программисты пишут код, который люди могут понять»] (http://stackoverflow.com/a/522907/542251) – Liam

+0

Поскольку я пишу для фреймворка, я должен написать динамический , – bgmm

+0

Можно писать динамический код, который можно читать. – Liam

ответ

0

Я нашел решение Если вы хотите динамический WebGrid в ASP! .NET MVC 5 , вы можете использовать этот код в View

 @{ 
      WebGrid grid = new WebGrid(Model); 
      List<WebGridColumn> columnsL = new List<WebGridColumn>(); 
    foreach (ServiceReference1.Column col in ViewBag.ColumnList) 
      { 
       WebGridColumn c = new WebGridColumn(); 
       c.ColumnName = col.columnName; 
       c.Header = col.columnCaptionValue; 
       c.Format = (item) => @Html.Raw("<div style='word-wrap:hyphenate;height:30px;min-width:" + col.columnWidth + "px'><b style='background-color:palevioletred'>" + item[col.columnName] + "</b></div>"); 

       columnsL.Add(c); 
      } 
} 
    <div class="test" style="overflow: scroll;"> 
      <div style="width:1000px"> 
     @grid.GetHtml(tableStyle: "table table-striped table-bordered", columns: columnsL, caption: ViewBag.GridHeader, headerStyle: "gvHeading") 
      </div> 
     </div> 

Моя проблема была item, но я решаю item[col.columnName]. Теперь это работает

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