0

JQgrid で生成されたグリッドに表示されるデータがあります。選択した行を別の PHP ファイルで編集したいと考えています。必要なのは、Jqgrid の行をクリックすると、選択した行の ID を取得し、それを別の PHP ファイルにパラメーターとして送信することです。これは、グリッドの一部ではないボタンを押すことによって呼び出されます。また、ユーザーが編集ボタンを押しても JQGrid で行が選択されていない場合に警告します。誰かがこれを行う方法を知っていますか?

以下は、JQGrid 用に作成している JQgrid テーブルのコードで、他のファイルにリダイレクトするボタンがあります。

        <div>
           <h1>Manejo de alumnos</h1>
           <table id="list"></table><!--Grid table-->
           <div id="pager"></div>  <!--pagination div-->
        </div>
    <br>    

    <a href="http://localhost/ProyectoNetbeans/CodeIgniter_2.1.3/index.php/Alumnos_controller/editData" class="btn btn-primary">Editar alumno</a> 

これが私のJQgridのコードです:

$(document).ready(function (){
        jQuery("#list").jqGrid({
            url: 'http://localhost/ProyectoNetbeans/CodeIgniter_2.1.3/index.php/Alumnos_controller/loadData',
            mtype : "post",             //Ajax request type. It also could be GET
            datatype: "json",            //supported formats XML, JSON or Arrray
            colNames:['Expediente','Primer apellido','Segundo apellido', 'Nombre','Cédula'],       //Grid column headings
            colModel:[
                {name:'expediente',index:'expediente', width:300, editable:true, edittype:'text'},
                {name:'primerApellido',index:'primerApellido', width:300, editable:true, edittype:'text'},
                {name:'segundoApellido',index:'segundoApellido', width:300, editable:true, edittype:'text'},
                {name:'nombre',index:'nombre', width:300, editable:true, edittype:'text'},
                {name:'cedula',index:'cedula', width:300, editable:true, edittype:'text'}

            ],
            pager: '#pager',
            rowNum:10,
            rowList:[15,30],
            sortname: 'primerApellido',
    reloadAfterSubmit: true,
            sortorder: 'asc',
            viewrecords: true,
    postData: {expediente:"expediente"},
            caption: 'Alumnos'
        }).navGrid('#pager',{edit:false,add:false,del:true},
            {//EDITAR
                url:"http://localhost/ProyectoNetbeans/CodeIgniter_2.1.3/index.php/Alumnos_controller/deleteData"
            },
            {
                //AGREGAR
              },
              {// DELETE
                jqModal:false,
                reloadAfterSubmit:true,
                savekey: [true,13],
                drag: true,
                closeOnEscape:true,
                closeAfterAdd:true,
                url:"http://localhost/ProyectoNetbeans/CodeIgniter_2.1.3/index.php/Alumnos_controller/deleteData",
                onclickSubmit:function(params, postdata){
                    var index=$("#list").getGridParam("selrow");                            
        var rowId = jQuery('#list tr:eq('+index+')').attr('ID');
        var dataFromTheRow = jQuery('#list').jqGrid ('getRowData', rowId);
        var dataFromCellByColumnName = jQuery('#list').jqGrid ('getCell', rowId, 'expediente');
        return { expediente: dataFromCellByColumnName };

                }

    },  

            {multipleSearch : false}, // enable the advanced searching
    {closeOnEscape:true} /* allow the view dialog to be closed when user press ESC key*/

        );
    });
4

2 に答える 2

0

マークの回答を使用してこれを解決し、いくつかの調査を行うことができました。まず、ボタンで使用されるパラメーターを渡す必要があります。このパラメーターは、グリッドのロジックに依存します。パラメータを取得するコードは次のとおりです。これを ColModel を含むセクションに配置する必要があります。

                onSelectRow: function(id)
            {
                var dataFromCellByColumnName="";
                var index=$("#list").getGridParam("selrow");
                var rowId = jQuery('#list tr:eq('+index+')').attr('ID');
                var dataFromTheRow = jQuery('#list').jqGrid ('getRowData', rowId);
                dataFromCellByColumnName = jQuery('#list').jqGrid ('getCell', rowId, 'expediente');
                setExpediente(dataFromCellByColumnName);

            }

この特定のケースでは、グリッドの「expediente」フィールドを「setExpediente」関数に送信しています。setExpediente 関数は次のとおりです。

        var expediente="";
        function setExpediente(elExpediente)
        {
            expediente = elExpediente;
        }

変数 "expediente" はグローバル変数であることに注意してください。次に、グローバル変数「expediente」を使用する関数を作成する必要があります。私はこれを作りました:

function revisarSeleccion()
        {
            if (expediente=="")
            {
                alert("Seleccione una fila")
            }
            else
            {
                alert(expediente);    
            }

        }

これにより、変数「expediente」が空白かどうかがチェックされ、結果に応じて決定を下すことができます。

これについて助けてくれた Mark に感謝します。

于 2013-05-04T02:28:17.370 に答える
0

次の方法で編集ボタンに情報を渡す行が選択されるたびに、イベントをフックできます。

 onSelectRow: function(id){
   //pass id to button

行が選択されている場合、編集ボタンが押されたときにテストできます

if ($('#gridName').jqGrid('getGridParam', 'selrow')) {
...
}
else {
  return false; 
}
于 2013-05-01T11:58:19.793 に答える