2010-06-11 26 views
6

Estaba intentando habilitar la navegación en función de una fila seleccionada. Entonces, el usuario selecciona una fila de jQgrid, y cuando presiona el programa (¿hay un botón de mostrar para la grilla, vi editar, agregar etc.), necesita ir a una nueva página basada en la url (parte de la fila))Jqgrid: navegación basada en la fila seleccionada

$(document).ready(function() { 
    function getLink() { 
//  var rowid = $("#customer_list").jqGrid('getGridParam', 'selrow'); 
     var rowid = $("#customer_list").getGridParam('selrow'); 
     var MyCellData = $("#customer_list").jqGrid('getCell', rowid, 'dataUrl'); 
     return MyCellData; 
    } 

    $("#customer_list").jqGrid({ 
     url:'mytestList', 
     editurl:'jq_edit_test', 
     datatype: "json", 
     colNames:['Call Id','Title','dataUrl'], 
     colModel:[ 
      {name:'callId', width:80, search:false}, 
      {name:'title', width:200, sortable:false}, 
      {name:'dataUrl',hidden:true} 
     ], 
     rowNum:10, 
     sortname:'lastUpdated', 
     sortorder: 'desc', 
     pager:'#customer_list_pager', 
     viewrecords: true, 
     gridview: true 
    }).navGrid('#customer_list_pager', 
     {add:true,edit:true,del:false,search:true,refresh:true}, 
     {closeAfterEdit:true, afterSubmit:afterSubmitEvent}, // edit options 
     {addCaption:'Create New something', afterSubmit:afterSubmitEvent, 
     savekey:[true,13]}, // add options 
     {afterSubmit:afterSubmitEvent} // delete options 
    ); 
    $("#customer_list").jqGrid('filterToolbar'); 
}); 

Por lo tanto, la url se pasa para cada fila como dataUrl. Intento leerlo y establecerlo en el botón. Cuando se depuró a través de Firebug, el rowid era 223 (solo había 12 filas en la grilla), y el valor de la celda está vacío. Actualmente, el botón se mantiene fuera de la cuadrícula, pero es mejor que sea parte del vavGrid

gracias.

Respuesta

15

El código como el siguiente podría resolver su problema

$("#customer_list").jqGrid ('navButtonAdd', '#customer_list_pager', 
    { caption: ""/*"Show"*/, buttonicon: "ui-icon-extlink", title: "Show Link", 
     onClickButton: function() { 
      var grid = $("#customer_list"); 
      var rowid = grid.jqGrid('getGridParam', 'selrow'); 
      window.location = grid.jqGrid('getCell', rowid, 'dataUrl'); 
     } 
    }); 
+0

funcionó muy bien .. gracias por mostrar cómo configurar el icono de jqueryui ... tuve un problema con los datos de JSON, por eso la URL no se lee correctamente al principio ... gracias de nuevo – bsr

4

Puede hacer que el botón mostrar sea parte de cada fila en la cuadrícula y usar custom formatter para convertirlo en una URL.

Basado en el ejemplo de la wiki, es probable que tengas algo en la línea de

function myformatter (cellvalue, options, rowObject) 
{ 
    return "<a href=\"" + cellvalue + "\">Show</a>"; 
} 
+0

He intentado un enfoque similar, por haciendo que una de las celdas sea un enlace (formateador: 'showlink', formatoptions: getLink()) .. Podría convertir la columna url en un enlace como sugeriste, pero puede desperdiciar algo de espacio. Todavía no estoy seguro de lo que está mal con el método getCell !! – bsr

+0

@bsreekanth: supongo que depende de qué tan ancha esté tu mesa. Una columna * Show * solo agregaría 50px más o menos al ancho. Sin embargo, permitiría que las personas abran los enlaces en una nueva ventana en lugar de en la actual (aunque no estoy seguro de cuán importante es esa funcionalidad para usted). De lo contrario, parece que la solución de Oleg funcionaría. – R0MANARMY

Cuestiones relacionadas