2012-05-21 9 views
9

I jedno modalne okno z siatką telerik wewnątrz. Ale muszę renderować obrazy w mojej siatce, więc rozumiem, że nie mogę użyć @ dwa razy. Oto blog na ten temat: LinkBloki wstawiania znaczników nie mogą być zagnieżdżone. Dozwolony jest tylko jeden poziom wbudowanych znaczników. MVC RAZOR

Czy ktoś może mi pomóc proszę.

mój kod

@{ Html.Telerik().Window() 
    .Name("images") 
    .Title("Select an Image") 
    .Content(@<text> 

@(Html.Telerik().ComboBox() 
      .Name("AjaxComboBox66") 
      .AutoFill(true) 
      .SelectedIndex(0) 
      .BindTo(new SelectList(Model.PhotoFolders, "ID", "Name")) 
      .Filterable(filtering => filtering.FilterMode(AutoCompleteFilterMode.StartsWith)) 
      .HighlightFirstMatch(true) 
      .ClientEvents(events => events 
       .OnChange("onChange") 
      ) 
    ) 

     @(Html.Telerik().Grid<AjaxImages>() 
    .Name("Grid") 
    .DataKeys(keys => keys.Add(c => c.ID)) 
    .Columns(columns => 
    { 
     columns.Template(
      @<text> 
       <img src='@item.Url' /> 
//Here is my error. I need helper function 
      </text> 

).Title("Picture"); 

    }) 

           .DataBinding(dataBinding => dataBinding.Ajax().Select("GetImages", "UserProducts")) 

         .Scrollable(scrolling => scrolling.Enabled(true)) 
         .Sortable(sorting => sorting.Enabled(true)) 
          .Pageable(paging => paging.Enabled(true).PageSize(20).Total(100).Style(GridPagerStyles.NextPreviousAndNumeric)) 
         .Filterable(filtering => filtering.Enabled(true)) 
         .Groupable(grouping => grouping.Enabled(false)) 
         .EnableCustomBinding(true) 

         .Footer(true)) 
       </text>) 
    .Width(400) 
    .Draggable(true) 
    .Modal(true) 
    .Visible(false) 


    .Render(); 
} 

Moja funkcja GetImages powrócić mnie json z "ID" i "URL".

Odpowiedz

16

W tych sytuacjach można użyć funkcji pomocnika MVC Razor. Utwórz funkcję pomocnika z definicją kontroli siatki, w tym przypadku RenderGrid().

@helper RenderGrid() 
{ 
    @(Html.Telerik().Grid<AjaxImages>() 
    .Name("Grid") 
    .DataKeys(keys => keys.Add(c => c.ID)) 
    .Columns(columns => 
    { 
     columns.Template(
     @<text> 
      <img src='@item.Url' /> 
     </text> 
     ).Title("Picture"); 
    }) 
    .DataBinding(dataBinding => dataBinding.Ajax().Select("GetImages", "UserProducts")) 
} 

Wywołanie funkcji pomocnika w definicji treści okna. Funkcje pomocnicze można w razie potrzeby wywołać wiele razy.

@{Html.Telerik().Window() 
     .Name("images") 
     .Title("Select an Image") 
     .Content(
     @<text> 
      @RenderGrid() 
     </text>) 
     .Width(400) 
     .Draggable(true) 
     .Modal(true) 
     .Visible(false) 
     .Render(); 
} 
+0

Prawie gotowe, proszę sprawdzić oba zrzuty ekranu. Nie dostaję żadnego błędu, ale obraz jest pusty. Próbowałem renderować jako tekst, mój ajax działa. Czy wiesz, dlaczego nie dostaję moich zdjęć? http://prntscr.com/9ix3a http://prntscr.com/9ix3x –

+2

Używasz wiązania ajax i dlatego musisz używać szablonu po stronie klienta, zamiast szablonu trybu powiązania serwera. Wypróbuj to: 'columns.Bound (c => c.ID) .ClientTemplate (" <#= ID #> ") Tytuł (" Picture ");' – Igorrious

+0

To właściwa odpowiedź! U rząd! –

Powiązane problemy