2011-01-27 6 views
1

메신저 jqGrid의 레코드에서 이미지를 표시하려하지만 작동하지 않습니다.jqGrid 데이터베이스에서 행의 이미지 표시

내 jqGrid의 모든 레코드에는 ID가 있습니다. 내 데이터베이스 테이블에서 이미지를 가져 오기 위해 나는 ID에 데이터베이스 테이블에 저장된 파일 (이미지)을 반환하는 ActionResult를 작성했습니다.

모든 레코드는 고유 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

답변

1

당신이 포매터를 등록 플로트 : 여기

내 코드? 그리드를로드하기 전에이 작업을 수행해야한다고 생각합니다. 당신이 포맷터에서으로 Request.Form 개체 (클라이언트에있어 기억), 그래서 일반 URL을 사용하지 않는

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

주 : 다음은 예입니다.

+0

당신은 Request.Form 개체를 사용하고 있습니다. 그것이 문제였습니다. 이제 컨트롤러가 작동합니다. 그러나 포맷터 등록없이 작동합니다. – float

+0

그리고 cellvalue가 포맷터의 변수이기 때문에 숨겨진 필드를 사용할 필요가 없습니다. – float

관련 문제