2012-02-29 6 views
0

Хорошо, мне нужна помощь. Я рассмотрел несколько других ответов, относящихся к моей проблеме, но не решил их.Telerik MVC Grid ClientTemplate Issue

Я пытаюсь добавить изображение действия в строку сетки в шаблоне клиента Telerik MVC.

Проблема, с которой я сталкиваюсь, я не могу получить идентификатор из столбца, для которого предназначен шаблон клиента.

Вот моя сетка:

@(Html.Telerik().Grid<xxx.Business.Entities.EntityName>() 
    .Name("StudentSearchResults") 
    .Columns(columns => 
    { 
     columns.Bound(o => o.SchoolStudentID); 
     columns.Bound(o => o.FirstName); 
     columns.Bound(o => o.LastName); 
     columns.Bound(o => o.StudentID).ClientTemplate(
      @Html.ActionImage("SubmitDegree", new { studentID = "<#= StudentID #=>" }, "~/Content/Images/Icons/16/bullet_go.png", "Submit Degree").ToString() 
      ).Title("") 
      .Width(20); 
    }) 
    .DataBinding(databinding => databinding 
    .Ajax() 
    .OperationMode(GridOperationMode.Client) 
    .Select("AjaxBindAction", "ControllerName")) 
    .Pageable() 
    .Sortable() 

)

И я использую HtmlHelperExtension построить ActionImage:

public static MvcHtmlString ActionImage(this HtmlHelper html, string action, object routeValues, string imagePath, string alt) 
    { 
     var url = new UrlHelper(html.ViewContext.RequestContext); 

     // build the <img> tag 
     var imgBuilder = new TagBuilder("img"); 
     imgBuilder.MergeAttribute("src", url.Content(imagePath)); 
     imgBuilder.MergeAttribute("alt", alt); 
     string imgHtml = imgBuilder.ToString(TagRenderMode.SelfClosing); 

     // build the <a> tag 
     var anchorBuilder = new TagBuilder("a"); 
     anchorBuilder.MergeAttribute("href", url.Action(action, routeValues)); 
     anchorBuilder.InnerHtml = imgHtml; // include the <img> tag inside 
     string anchorHtml = anchorBuilder.ToString(TagRenderMode.Normal); 

     return MvcHtmlString.Create(anchorHtml); 
    } 

Я также попытался установить шаблон на стороне сервера, а затем сторона клиента одна .. как отправлено here

@(Html.Telerik().Grid<AIPortal.Business.Entities.EntityName>() 
    .Name("StudentSearchResults") 
    .Columns(columns => 
    { 
     columns.Bound(o => o.SchoolStudentID); 
     columns.Bound(o => o.FirstName); 
     columns.Bound(o => o.LastName); 
     columns.Bound(o => o.StudentID).Template(t => { 
        @Html.ActionImage("SubmitDegree", new { studentID = t.StudentID }, "~/Content/Images/Icons/16/bullet_go.png", "Submit Degree"); 
        }) 
        .ClientTemplate(
        @Html.ActionImage("SubmitDegree", new { studentID = "<#= EntityName.StudentID #>" }, "~/Content/Images/Icons/16/bullet_go.png", "Submit Degree").ToString()) 
      .Title("") 
      .Width(20); 
    }) 
    .DataBinding(databinding => databinding 
    .Ajax() 
    .OperationMode(GridOperationMode.Client) 
    .Select("AjaxBindAction", "DegreeCompletion")) 
    .Pageable() 
    .Sortable() 

)

думаю, что это может быть проблема с @ Html.ActionImage, запущенным на сервере в шаблоне клиента?

Я могу жестко закодировать StudentID, и все работает нормально. Единственная проблема заключается в попытке получить доступ к идентификатору StudentID, для которого предназначен шаблон клиента.

Может ли кто-нибудь указать мне в правильном направлении, чтобы получить этот идентификатор в моем шаблоне клиента?

Спасибо!

+0

Я знаю, что я опоздал на вечеринку, но я в настоящее время пытается установить редактируемые сетки. Что касается Html.ActionImage в клиенте, я экспериментирую с использованием RazorEngine для создания строки на стороне клиента с использованием синтаксиса Razor. – B2K

ответ

0

Это решение, с которым я пришел .. Не удалось использовать метод @ Html.ActionImage в шаблоне на стороне клиента.

@(Html.Telerik().Grid<xxx.Business.Entities.EntityName>() 
    .Name("StudentSearchResults") 
    .Columns(columns => 
    { 
     columns.Bound(o => o.SchoolStudentID); 
     columns.Bound(o => o.FirstName); 
     columns.Bound(o => o.LastName); 
     columns.Bound(o => o.StudentID).ClientTemplate(
        "<a href=\"/DegreeCompletion/SubmitDegree?studentID=<#= StudentID #>\"><img alt=\"Submit Degree\" src=\"/Content/Images/Icons/16/bullet_go.png\"></a>") 
      .Title("") 
      .Width(20); 
    }) 
    .DataBinding(databinding => databinding 
    .Ajax() 
    .OperationMode(GridOperationMode.Client) 
    .Select("AjaxBindMethod", "DegreeCompletion")) 
    .Pageable() 
    .Sortable() 

)

+0

Вы можете использовать 'вместо \ "в вашей шаблоне шаблона клиента - будет более читаемым. –

+0

Hah .. да, я вытащил это из примера, используя одиночные кавычки сейчас. –

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