Допустим, у меня есть 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;