Добавление столбца «Правка» в сетку Telerik с использованием ASP.Net MVC 2 и Telerik MVC (2010 Q1) - PullRequest
6 голосов
/ 21 февраля 2010

Мне удалось создать сетку Telerik для отображения списка продуктов, однако я столкнулся с некоторыми трудностями при добавлении столбца, чтобы пользователь мог редактировать (я даже не пытаюсь редактировать в сетке - я просто хотите ссылку на представление редактирования)

Когда я добавляю пользовательский столбец, я получаю следующие строки на экране ошибок при отладке (строка 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");

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

Вот мой код просмотра:

<%= 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();
    %>

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

Ответы [ 5 ]

6 голосов
/ 21 февраля 2010

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

columns.Template(o =>
              { 
                  Response.Write(Html.ActionLink("Edit", "Edit", 
                  new { id = o.ProductID })); 
              }).Title("Edit");
5 голосов
/ 04 марта 2010

Если вы хотите сохранить свои «теги 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();
    %>
5 голосов
/ 22 февраля 2010

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

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

Также Связано - это новое Добавление в выпуске Q1 2010 года

4 голосов
/ 22 июня 2010

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

столбцы. Добавить (c => c.CustomerID) .Format ( Html.ActionLink ("Изменить", "Домой", новый {id = "{0}"}}) ) .Encoded (ложь) .title ( "Edit");

1 голос
/ 26 июня 2011

Это очень поздний ответ, но может оказаться полезным для других. Вы не можете использовать только столбцы шаблонов сервера в режиме 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")

Это будет правильно отображаться, и любые данные, которые вы хотите получить по ссылке, будут также обработаны.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...