показать изображение devexpress gridview, это ракетостроение? - PullRequest
0 голосов
/ 22 марта 2012

Допустим, у меня есть ViewModel, которую я использую в devexpress gridview.Внутри этого представления я отображаю свои данные в виде сетки devexpress следующим образом

@Html.DevExpress().GridView(
    settings =>
    {
        settings.Name = "myGridView";
        settings.KeyFieldName = "Id";
....
    var column = settings.Columns.Add("Id", "Id");
    column = settings.Columns.Add("Title", "MyTitle");
    ...    
    }).Bind(Model).GetHtml()

Моя модель имеет IEnumerable, и с этим кодом все в порядке.Теперь я хочу отобразить изображение внутри этого вида сетки до или после столбца Id.Итак, я обнаружил, что это должно быть сделано с Html.DevExpress().BinaryImage() Но я застрял здесь на некоторое время.Сначала опишите мою модель представления и как хранятся мои изображения.Моя модель имеет коллекцию List<Photo>.Я получаю изображения как FileContentResult.

Так что я знаю, что должен использовать это Html.DevExpress().BinaryImage(), но я не знаю.Вот пример, которому я должен следовать.

column = settings.Columns.Add("", "Photos");
        Html.DevExpress().BinaryImage(
            imageSettings =>
            {
                //imageSettings.Name = "Photo";
                imageSettings.Width = 100;
                imageSettings.Height = 100;
            })
            .Bind(((System.Data.Linq.Binary)DataBinder.Eval(Model, "Photo")).ToArray())
            .Render();

Обновление: Думаю, мне следует попробовать это решение.Проблема здесь в том, что я хочу отобразить в своей сетке первое изображение из коллекции Photos.Я попытался с кодом ниже, но без удачи.Нет ошибок.

var photoColumn = settings.Columns.Add("Photos[0].ImageData", "Foto");
        photoColumn.Visible = true;
        photoColumn.Width = 20;
        photoColumn.FieldName = "Photo.ImageData";
        photoColumn.ColumnType = MVCxGridViewColumnType.BinaryImage;
        DevExpress.Web.ASPxEditors.BinaryImageEditProperties properties = (DevExpress.Web.ASPxEditors.BinaryImageEditProperties)photoColumn.PropertiesEdit;
        properties.ImageHeight = 50;
        properties.ImageWidth = 50;

Ответы [ 2 ]

1 голос
/ 23 марта 2012

Вам не нужно напрямую использовать BinaryImage в GridView, поскольку MVCxGridViewColumnType поддерживает BinaryImage.
Связанная ссылка - GridView - Как загрузить двоичное изображение в столбце BinaryImage

Также ознакомьтесь с демонстрацией Grid View - Templates , в которой показано, как использовать BinaryImage в строках данных.

0 голосов
/ 25 марта 2012

В вашем случае необходимо настроить DataItemTemplate и настроить BinaryImage внутри него следующим образом:

settings.Columns.Add(column => {
    column.SetDataItemTemplateContent(c => {
        Html.DevExpress().BinaryImage(
            imageSettings => {
                imageSettings.Name = "Photo" + c.KeyValue;
                imageSettings.Width = 50;
                imageSettings.Height = 50;
            })
            .Bind(Here_Your_Code_To_Retrieve_Image_From_Current_DataItem)
            .Render();
    });
});
...