martes, 17 de septiembre de 2013

Personalizar o Programar el comportamiento de los botones (Editar / Eliminar) de la barra de Navegacion (Pager) del Jqgrid con una funcion.



Buenas tardes el día de hoy voy a publicar como personalizar el comportamiento de dos botones (Editar / Eliminar) de la barra de Navegacion  del Jqgrid, mediante la función processAddEdit  la cual ejecutara  algún código que necesitemos.

Bien esto es bastante sencillo:


Paso 1:
Definimos nuestro   Pager o Barra de Navegacion como ustedes lo deseen llamar:

jQuery("#grps1").jqGrid('navGrid','#pgrps1',{del:true,add:false,edit:false,search: false,refresh: false}, //options

Paso 2:
Personalizamos el boton "del"  invocando la function llamada processAddEdit

jQuery("#grps1").jqGrid('navGrid','#pgrps1',{del:true,add:false,edit:false,search: false,refresh: false}, //options{},// edit{}, //add
{ //del      
//beforeSubmit:processAddEdit, (Puedes llamar la function Antes del Submit)
afterSubmit: processAddEdit, (O Puedes llamar la function despues del Submit)
closeAfterAdd: true,
closeAfterEdit: true,
reloadAfterSubmit:false,
recreateForm:true
},{}//search);

Paso 3:
Contruimos la function con el codigo que necesitamos:

function processAddEdit(response, postdata) 
{
//(Obtenemos el valor  de las columnas de la fila que fue borrada: ) por ejemplo:

var sel_id = jQuery("#grps1").jqGrid('getGridParam', 'selrow');
 
var Unidades_solicitada=jQuery("#grps1").jqGrid('getCell', sel_id, 'Unidades_Solicitada');

var Peso_Solicitado =jQuery("#grps1").jqGrid('getCell', sel_id, 'Peso_Solicitado');

//Realizamos alguna operación:

Var total =( Unidades_solicitada* Peso_Solicitado);

Alert(total);
   
} // cierra   function processAddEdit     



Ahora si deseamos trabajar con el boton editar seria algo asi:

jQuery("#grps").jqGrid('navGrid','#pgrps',{}, //options
{
        afterSubmit:processAddEdit,
        closeAfterAdd: true,
        closeAfterEdit: true,
        reloadAfterSubmit:false,
        recreateForm:true
    },
{reloadAfterSubmit:false,closeAfterAdd:true,recreateForm:true}, // add options
{reloadAfterSubmit:false}, // del options
{multipleSearch:true,closeAfterSearch: true, closeOnEscape: true}
);
function processAddEdit(response, postdata)
{

//Observa como podemos manipular el contenido de las columnas de la fila afectada con
postdata

          
                  $.getJSON('Busca_Kilos.php',{Codigo:postdata.Articulo},Busca_Texto);
                  function Busca_Texto(datos1)
                     {
                         $.getJSON('Busca_Cantidades.php',{Codigo:postdata.Articulo},Busca_Texto);
                         function Busca_Texto(datos)
                            {
                                var z1 =(parseInt(datos1)*postdata.Cantidad*parseInt(datos));
                                $("#grps").jqGrid('setCell',postdata.id,'Peso_Total', z1);
                           
                                var z =(parseInt(datos)*postdata.Cantidad);
                                $("#grps").jqGrid('setCell',postdata.id,'Total_Unidades', z);
                            }// cierra $.getJSON('Busca_Cantidades.php'
                     
                     
                     }// cierra function Busca_Texto(datos)
                       
                  return [true,"",]; // importante devolver falso o verdadero en funcion del resultado del codigo
}// cierra function processAddEdit


 ******CODIGO COMPLETO************


$("#grps1").jqGrid({
url:'Sube_Salida.php?filtro='+<?php echo $_GET['rp'];?>,
datatype: 'json',
mtype: 'GET',
 colNames: ['Articulo','Presentacion','Medida_Item_Solicitada','Unidades_Solicitada','Peso_Solicitado','Lote','Fecha_Vencimiento'],
          colModel: [
{name: 'Articulo', index: 'Articulo', width: 80, align: 'left',editable: false,editrules:{required:true},formatter:'select',edittype:"select",editoptions:{value: darticulo},sortable: true},
{name: 'Presentacion', index: 'Presentacion', width: 80, align: 'left',editable: false,editrules:{required:true},formatter:'select',edittype:"select",editoptions:{value: dpresentacion},sortable: true},
{name: 'Medida_Item_Solicitada',  index: 'Medida_Item_Solicitada',  width: 85, align: 'left',editable: true,editrules:{number:true},formatter: 'number',edittype:"text"},
{name: 'Unidades_Solicitada', index: 'Unidades_Solicitada', width: 80, align: 'left',editable: true,editrules:{number:true},formatter: 'number',edittype:"text"},
{name: 'Peso_Solicitado',   index: 'Peso_Solicitado',   width: 80, align: 'left',editable: false,editrules:{number:true},formatter: 'number',edittype:"text"},
{name: 'Lote', index: 'Lote', width: 80, align: 'left',editable: false,editrules:{required:true},formatter:'text',edittype:"text"},
{name: 'Fecha_Vencimiento', index: 'Fecha_Vencimiento', width: 50, align: 'center', editable:false,editrules:{required:true},formatter: 'text', formatoptions: {newformat: 'd-m-Y'}, datefmt: 'd-M-Y'},
  ],

    gridview: true,
    rownumbers:true,
    pager: '#pgrps1',
    rowNum:200,
    rowList:[200],
    autowidth: true,
    viewrecords: true,
    width: "98%",
    height: "100%",
    editurl: "someurl.php",
    caption: 'ITEMS A SER DESPACHADOS',
    footerrow: true,
    cellEdit: true,
    cellurl:"otro.php",  
   
      gridComplete: function(){
              var sum = jQuery("#grps1").jqGrid('getCol', 'Medida_Item_Solicitada', false, 'sum');
              var sum1 = jQuery("#grps1").jqGrid('getCol', 'Unidades_Solicitada', false, 'sum');
              var sum2 = jQuery("#grps1").jqGrid('getCol', 'Peso_Solicitado', false, 'sum');
              $(this).jqGrid('footerData','set',{Medida_Item_Solicitada: sum, Unidades_Solicitada: sum1,Peso_Solicitado: sum2});
        },
   

  });// Aqui cierra el Jqgrid
$("#grps1")







jQuery("#grps1").jqGrid('navGrid','#pgrps1',{del:true,add:false,edit:false,search: false,refresh: false}, //options
{},// edit
{}, //add
{ //del       //beforeSubmit:processAddEdit,
        afterSubmit: processAddEdit,
        closeAfterAdd: true,
        closeAfterEdit: true,
        reloadAfterSubmit:false,
        recreateForm:true
},
{}//search
);// Aqui cierra el Pager o Barra de Navegacion

function processAddEdit(response, postdata) {
var sel_id = jQuery("#grps1").jqGrid('getGridParam', 'selrow');
var IdArticulo = jQuery("#grps1").jqGrid('getCell', sel_id, 'Articulo');
var Medida_Item =jQuery("#grps1").jqGrid('getCell', sel_id, 'Medida_Item_Solicitada');
var Unidades_solicitada=jQuery("#grps1").jqGrid('getCell', sel_id, 'Unidades_Solicitada');
var Peso_Solicitado =jQuery("#grps1").jqGrid('getCell', sel_id, 'Peso_Solicitado');
var Lote_solicitado =jQuery("#grps1").jqGrid('getCell', sel_id, 'Lote');
var Fecha =jQuery("#grps1").jqGrid('getCell', sel_id, 'Fecha_Vencimiento');

var Contador_Articulo =0;

//alert(Fecha);
var anio=Fecha.substr(6,4);
var mes =Fecha.substr(3,2);
var dia =Fecha.substr(0,2);



   var rows = jQuery("#grps1").getDataIDs();
   for(a=0;a<rows.length;a++)
     {
       row=jQuery("#grps1").getRowData(rows[a]);
       var anio_comparar =row.Fecha_Vencimiento.substr(6,4);
       var mes_comparar =row.Fecha_Vencimiento.substr(3,2);
       var dia_comparar =row.Fecha_Vencimiento.substr(0,2);
       if(row.Articulo==IdArticulo && eval(anio_comparar)>=eval(anio) && eval(mes_comparar)>=eval(mes) && eval(dia_comparar)>eval(dia))
         {
          Contador_Articulo++;
         }// cierra if
   
     }// cierra for
 
    if(Contador_Articulo==0)
       {
        var a=0;
        var rows = jQuery("#grps").getDataIDs();
        for(a=0;a<rows.length;a++)
         {
              row=jQuery("#grps").getRowData(rows[a]);
             if(row.Articulo==IdArticulo && row.Lote==Lote_solicitado && row.Vencimiento==Fecha)
               {
             $("#grps").jqGrid('setCell', rows[a], 'Existencia_Actual_Medida_Item', (eval(row.Existencia_Actual_Medida_Item)+eval(Medida_Item)));
             $("#grps").jqGrid('setCell', rows[a], 'Existencia_Unidades', (eval(row.Existencia_Unidades)+eval(Unidades_solicitada)));
             $("#grps").jqGrid('setCell', rows[a], 'Existencia_Peso', (eval(row.Existencia_Peso)+eval(Peso_Solicitado)));
             //$("#grps").jqGrid('setCell', rows[a], 'Cantidad', (eval(row.Cantidad)-eval(Medida_Item)));
               }// cierra if
   
        }// cierra for
          return [true,"",];
       }// cierra condicion Contador_Articulo==0
    if(Contador_Articulo>0){return [false,"Debe Borrar El Articulo con Fecha vencimiento mas lejana ",null];}
       
   
} // cierra   function processAddEdit  
 

No hay comentarios:

Publicar un comentario