2010-02-21 3 views
6

Мне удалось создать сетку Telerik для отображения списка продуктов, однако я с некоторым трудом добавляю (я даже не пытаюсь редактировать внутри сетки), я просто хочу ссылку на представление редактирования)Добавление столбца Edit в сетку telerik с использованием ASP.Net MVC 2 и Telerik MVC (2010 Q1)

Когда я добавляю пользовательский столбец, я получаю следующие строки на экране ошибки когда я отладка (строка 24 в красном цвете):

Line 22:       columns.Add(o => o.ProductIsActive); 
Line 23:       columns.Template(o => 
Line 24:       { 
Line 25:        
Line 26:        %><%=Html.ActionLink("Edit", "Edit", new { id = o.ProductID })%><% }).Title("Edit"); 

Моего компилятор Сообщение об ошибке является Compiler Error Message: CS1525: термин Недопустимого выражения ')'

Вот мой View Code:

<%= Html.Telerik().Grid<NationalPetVax.Models.Product>() 
      .Ajax(ajax => ajax.Action("_Index", "Products")) 
      .DataKeys(dataKeys => dataKeys.Add(c => c.ProductID)) 
      .DataBinding(dataBinding => dataBinding.Ajax().Update("Update", "Home")) 

      .Name("Grid") 
       .Columns(columns => 
       { 
        columns.Add(o => o.ProductName).Width(81); 
        columns.Add(o => o.ProductPrice).Width(200); 
        columns.Add(o => o.ProductType.ProductTypeName); 
        columns.Add(o => o.Specy.SpeciesName); 
        columns.Add(o => o.ProductIsActive); 
        columns.Template(o => 
        { 

         %><%=Html.ActionLink("Edit", "Edit", new { id = o.ProductID })%><% }).Title("Edit"); 

        }) 
      .Sortable() 
      .Scrollable() 
      .Pageable(); 
    %> 

Кто-нибудь когда-нибудь видел этот вопрос? Я снова и снова следил за учебниками и собираюсь полностью отказаться от сетки telerik, хотя мне они очень нравятся, и я хочу включить их в свой проект.

ответ

6

Я не знаю о Telerik. Но похоже, что проблема заключается в закрытии/открытии тегов внутри выражения. Попробуйте следующее:

columns.Template(o => 
       { 
        Response.Write(Html.ActionLink("Edit", "Edit", 
        new { id = o.ProductID })); 
       }).Title("Edit"); 
+0

Лучший ответ - проблема с тем, что кажется правильным решением: columnss.Bound (o => o.Id) .Format (Html.ActionLink («Edit», «Edit», new {id = {0} "}). ToHtmlString()); - он отображает html как строку. – Merritt

+0

@Merritt - Чтобы использовать это решение, вам нужно отключить кодировку html, Format (Html.ActionLink («Изменить», «Изменить», новый {id = "{0}"}). ToHtmlString()).); – Daniel

5

Следующий код решит вашу проблему и сделает код немного опрятным.

columns.Bound(o => o.ProductId).Format(
      Html.ActionLink("Edit", "Edit", new {Id = "{0}"}).ToString()); 

Также Bound это новый Добавить в 2010 Q1 выпуска

5

Если вы хотите сохранить ваши "Gator метки" в вашем коде как

columns.Template(o => 
        { 

         %><%=Html.ActionLink("Edit", "Edit", new { id = o.ProductID })%><% }).Title("Edit"); 

        }) 

Вам просто нужно измените, как вы это называете. На вершине вы делаете

<%= 

Изменить что

<% 

И просто позвоните

.Render() 

в конце вашей декларации сетки. Это предотвратит ошибку «недопустимый выражение». Весь ваш новый код должен выглядеть так:

<% Html.Telerik().Grid<NationalPetVax.Models.Product>() 
      .Ajax(ajax => ajax.Action("_Index", "Products")) 
      .DataKeys(dataKeys => dataKeys.Add(c => c.ProductID)) 
      .DataBinding(dataBinding => dataBinding.Ajax().Update("Update", "Home")) 

      .Name("Grid") 
       .Columns(columns => 
       { 
        columns.Add(o => o.ProductName).Width(81); 
        columns.Add(o => o.ProductPrice).Width(200); 
        columns.Add(o => o.ProductType.ProductTypeName); 
        columns.Add(o => o.Specy.SpeciesName); 
        columns.Add(o => o.ProductIsActive); 
        columns.Template(o => 
        { 

         %><%=Html.ActionLink("Edit", "Edit", new { id = o.ProductID })%><% }).Title("Edit"); 

        }) 
      .Sortable() 
      .Scrollable() 
      .Pageable() 
      .Render(); 
    %> 
4

Я хочу добавить отзыв о коде. попробовать это, это работа

columns.Add (с => c.CustomerID) .Format ( Html.ActionLink ("Edit", "Начало", новый {ID = "{0}"}}) ) .Encoded (ложь) .title ("Edit");

1

Его очень поздний ответ, но может оказаться полезным для других. Вы не можете использовать только столбцы шаблонов сервера в режиме Ajax для сетки Telerik. Если вы просто хотите, чтобы добавить дополнительный столбец в сетке, которая не связана ни к чему (при сохранении режима Ajax) попробовать что-то вроде этого

columns.Template(o=>{}).ClientTemplate(
    Html.ActionLink("<Link text here>", "<action name>", "<controller name>", 
     new { id = "<#= ID #>" }, new { @class = "Edit" }).ToString() 
).Title("Edit Column") 

Это будет оказывать правильно и любые данные, которые вы хотите со ссылкой будет позаботьтесь об этом.

+0

ваш поздний ответ спас меня сегодня, спасибо – Rafay

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