我在使用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*/
);
});
答案 0 :(得分:0)
每次选择行时,您都可以连接一个事件,您可以通过以下方式将信息传递到编辑按钮:
onSelectRow: function(id){
//pass id to button
然后,如果
选择了行,则可以测试何时按下编辑按钮if ($('#gridName').jqGrid('getGridParam', 'selrow')) {
...
}
else {
return false;
}
答案 1 :(得分:0)
我能够使用Mark的答案并进行一些调查来解决这个问题。首先,您需要传递一些将由按钮使用的参数,此参数将取决于您的网格逻辑。获取参数的代码如下,您需要将其放在包含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对此的帮助。