2015-05-12 3 views
1

Я пытаюсь отобразить изображения, сохраненные в базе данных в моей сетке Кендо.Отображение двоичного изображения в сетке Кендо

@(Html.Kendo().Grid<DevelopmentNotesProject.Models.NoteForm>() 
.Name("grid") 
.Columns(columns => 
{ 
    columns.Bound(c => c.Title).Width(420).ClientTemplate(string.Format("{0}...", "#= formatter(Title) #")); 
    columns.Bound(c => c.Text).Width(900).ClientTemplate(string.Format("{0}...", "#= formatter(Text) #")); 
    columns.ForeignKey(p => p.languageId, (System.Collections.IEnumerable)ViewData["lang"], "Id", "Name").Title("Language").Width(140).EditorTemplateName("LangDropDown"); 
    columns.Bound(c => c.img); <-- THIS returns object [object] 
    columns.Command(command => { command.Edit(); command.Destroy(); }); 

}) 

PS: Тип столбца в моей таблице Varbinary (MAX)

Моя модель выглядит следующим образом:

[Table("note")] 
    public class NoteForm 
    { 
     [Required] 
     [Display(Name = "Title")] 
     public string Title { get; set; } 

     [Required] 
     [Display(Name = "Text")] 
     public string Text { get; set; } 

     [Required] 
     [Display(Name = "Language")] 
     public int languageId { get; set; } 
     [ForeignKey("languageId")] 
     [UIHint("LangDropDown")] 
     public virtual Language language { get; set; } 

     [Display(Name = "Photo")] 
     public byte[] img { get; set; } 


     [Key] 
     [System.Web.Mvc.HiddenInput(DisplayValue = false)] 
     public int id { get; set; } 

     [System.Web.Mvc.HiddenInput(DisplayValue = false)] 

     public int userId { get; set; } 


    } 

Как я могу добиться этого, пожалуйста? Заранее благодарим за помощь.

+0

Вы можете преобразовать свое изображение в Base64 и использовать 'ClientTemplate', как в [этом примере] (http://stackoverflow.com/questions/25014428/kendo-grid-image-column). –

+0

Я пробовал это: columns.Bound (c => c.img) .ClientTemplate (""); Но эта строка появляется в генерируемом HTML-коде: FieryA

+1

http://www.telerik.com/forums/render-image-byte-on-kendo-templates-from-model –

ответ

0

это работает для меня: первым добавить свойство преобразовать массив байтов в строку , как показано на приведенной выше ссылке

public string Image64{get { return Image != null ? Convert.ToBase64String(Image) : null ; }} 

второй при чтении записей установите MaxJsonLength

var people= Json(_repository.Employees, JsonRequestBehavior.AllowGet); 
    people.MaxJsonLength = int.MaxValue;   

    return people ; 

третьего у вас есть клиентская панель для вашего связанного поля

columns.Bound(employee=> employee.Image64).ClientTemplate("<img src='" + "data:image/gif;base64,#=Image64#'").Title("Photo"); 
Смежные вопросы