0

以下のように4列のJQGridがあります

<script type="text/javascript">
        $(function(){
            jQuery("#toolbar").jqGrid({
                url:'<%=request.getContextPath()%>/TestServlet?q=1&action=fetchData',
                datatype: "xml",
                mtype: 'POST',
                height: '100%',
                width: '100%',
                colNames:['LocationImage','City','State','LocationID'],
                colModel:[
                    {name:'LocationImage',index:'LocationImage',align: 'center', formatter: imageFormatter},
                    {name:'City',index:'City', width:200,fixed:true,sortable:true,align:'center',editable:true, editoptions:{readonly:false,size:500}},
                    {name:'State',index:'State', width:200,fixed:true,sortable:true,align:'center',editable:true, editoptions:{readonly:false,size:50}},
                    {name:'LocationID',index:'LocationID',width:60,align:'center',hidden:true,editable:false, editoptions:{readonly:true,size:30}
                ],
                paging: true,
                rowNum:16,
                rowTotal:2000,
                rownumbers: true,
                rownumWidth: 25,
                rowList:[16,32,48],
                viewrecords: true,
                loadonce: true,
                gridview: true,
                pager: $("#ptoolbar"),
                sortname: 'Name',
                sortorder: "asc",
                caption: "Test Grid"
            })
            jQuery("#toolbar").jqGrid('navGrid','#ptoolbar',{del:false,add:false,edit:false});
            jQuery("#toolbar").jqGrid('filterToolbar',{stringResult: true,searchOnEnter : false});
        });
        function imageFormatter(el, cval, opts) {
    var num = '2';
            return ("<center><img src='../gd/images/" + num+".png' height='180px' width='180px' /></center>")
        }

ここでは、num を '2' としてハードコーディングしているため、最初の列、つまり LocationImage に 2.png を表示します。必要なのは、num の値が 4 番目の列、つまり LocationID からのものであることです (非表示の列であることに注意してください)。

これを行う方法を教えてください。

ありがとう、ディープナ

4

3 に答える 3

0

わかりました、私はそれについてよくわかりません。今はテストできません。しかし、ここであなたにできることがあります

options パラメータから行 ID を取得できます。ここをチェックすると、getCell または getGridParam を使用して、その行 ID で場所 ID を取得できます。この値を使用して画像を設定できます。

これがカスタム フォーマッタで機能しない場合は、JqGrid の gridComplete プロパティで setCol メソッドを使用できます。

現在、これは 1 つの ID に対してのみ機能します。すべての行に画像を設定する場合は、変数で getDataIDs メソッドを使用して行 ID を取得してから、for ループを使用して setCol を使用します。

これが役立つことを願っています

于 2012-08-23T06:04:37.247 に答える
0

imageFormatter関数を次のように変更する必要があります。

function imageFormatter(cellvalue, options, rowObject){     
  var num = $("#" + options.rowId).find("td[aria-describedby='toolbar_LocationID']").text();                
  return "<center><img src='../gd/images/" + num + ".png' height='180px' width='180px' /></center>";
}   
于 2012-08-23T00:41:36.873 に答える
0

以下の方法で問題を修正できました

  1. グリッドの最初の列をロケーション ID に変更しました
  2. フォーマッタで - 「cellvalue」と言うと、実際にはロケーション ID が返されます
  3. 次に、このロケーション ID が変数 num に設定されます (つまり、num = cellvalue)。
  4. これで、フォーマッタ コードは id 値を id.png に基づく画像に置き換えます

ありがとう、ディープナ

于 2012-08-23T13:55:43.973 に答える