2011-01-27 43 views
1

即时通讯尝试显示图像从jqGrid中的记录,但它不工作。jqGrid从数据库中显示图像行

我的jqGrid中的每条记录都有一个id。为了从我的数据库表中获取图像,我编写了一个ActionResult,它返回一个存储在数据库表中的文件(图像)到该ID。

因为每个记录都有一个唯一的ID,我在我的页面中有一个隐藏字段,其中jq应该存储实际记录的格式化成格式化程序的实际ID。

当我用萤火虫查看代码时,似乎隐藏字段的方式不起作用。

也许你有想法吗?

这里是我的代码:

<input type="hidden" name="cellvalue" value="" /> 
<script type="text/javascript"> 
$(function() { 
    $("#PartialIndexGrid").jqGrid({ 
     url: '/@ViewContext.RouteData.Values["Controller"].ToString()/IndexGridData', 
     datatype: 'json', 
     mtype: 'POST', 
     colNames: ['Details', 'Bearbeiten','Bild', 'Titel', 'Bearbeitungsort', 'Status'], 
     colModel: [ 
       { name: 'Details', index: "Details", edittype: 'select', align: "center", width: 45, formatter: 'showlink', formatoptions: { baseLinkUrl: '/Shared/Details/', addParam: ''} }, 
       { name: 'Bearbeiten', index: "Bearbeiten", edittype: 'select', align: "center", width: 80, formatter: 'showlink', formatoptions: { baseLinkUrl: '/Shared/Edit/', addParam: ''} }, 
       { name: 'Bild', index: 'Bild', edittype: 'image', formatter: imageFormatter }, 
       { name: 'Titel', index: 'Titel'}, 
       { name: 'Bearbeitungsort', index: 'Bearbeitungsort' }, 
       { name: 'AuftragStatus', index: 'AuftragStatus'} 
      ], 
     pager: $("#PartialIndexGridpager"), 
     rowNum: 10, 
     rowList: [5, 10, 20, 30], 
     sortname: 'Titel', 
     sortorder: "asc", 
     viewrecords: true, 
     width: 942, 
     caption: '' 
    }) 
}); 
function imageFormatter(cellvalue, options, rowObject) { 
     $("cellvalue").val(cellvalue); 
     return '<img src="@Url.Action("AuftragDBImage", "Shared", new { id = Request.Form["cellvalue"]})" />'; 
}; 

public ActionResult AuftragDBImage(Guid id) 
    { 
     try 
     { 
      var auftrag = _db.Auftrag.Where(x => x.Auftrag_GUID == id).Select(x => x).Single(); 
      return File(auftrag.Bild, "image/jpeg"); 
     } 
     catch (Exception) 
     { 

      return File(pfaddummybild, "image/jpeg"); 
     } 
    } 

问候, 浮动

+0

我没有在jqGrid中发现任何隐藏字段,但是你写道:“看起来隐藏字段的方式不起作用”。此外,自定义格式化器'imageFormatter`看起来很奇怪。为了让其他人能够验证你的代码,你应该解释`Build` coulmn的哪些值有来自服务器的JSON响应,以及自定义格式化程序应该产生什么结果。 – Oleg 2011-01-27 09:24:19

回答

1

你有没有注册的格式?我认为你需要在加载网格之前做到这一点。这里有一个例子:

 
<script type='text/javascript'> 
    $.fn.fmatter.imageFormatter = function(cellvalue, options, rowObject) { 
     return "<img src='/Shared/AuftragDBImage?id=" + cellvalue + "'/>"; 
    }; 
</script> 

请注意,你不必在一个格式化的Request.Form对象(记住你是在客户端上),所以使用常规的URL。

+0

您对的是Request.Form对象。这是问题所在。现在它进入我的控制器操作。但它没有格式化程序注册。 – float 2011-01-27 10:35:16