2012-03-22 72 views
0

假設我有ViewModel,我在devexpress gridview中使用。裏面那個觀點我在GridView中DevExpress的顯示我的數據是這樣顯示圖像devexpress gridview,這是一個火箭科學?

@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列之前或之後的GridView中顯示圖像。 所以我發現這應該與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; 

回答

0

在你情況下需要定製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(); 
    }); 
});