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

每次选择一行时,您都可以连接一个事件,您可以通过以下方式将信息传递给您的编辑按钮:

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

然后您可以测试何时按下编辑按钮,如果选择了一行

if ($('#gridName').jqGrid('getGridParam', 'selrow')) {
...
}
else {
  return false; 
}
于 2013-05-01T11:58:19.793 回答
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 回答