2011-01-27 13 views
1

imはjqGridのレコードからイメージを表示しようとしていますが、動作していません。jqGridイメージをデータベースから表示

私のjqGridのすべてのレコードにはidがあります。私のデータベーステーブルからイメージを取得するために、私はidにデータベーステーブルに格納されているファイル(イメージ)を返すActionResultを書きました。

すべてのレコードに固有のIDがあるため、jqがフォーマッタにフォーマットされた実際のレコードの実際のIDを格納する必要がある、私のページに隠しフィールドがあります。

私はfirebugでコードを調べると、隠されたフィールドとのやり方がうまくいかないようです。

多分あなたはアイデアがありますか?

ここ

が私のコードです:

<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

もちろん、セルの値はフォーマッタ内の変数であるため、隠しフィールドを使う必要はありません。 – float

関連する問題