Tengo lo siguiente en mi código:
{ name: 'ID', index: 'ID', width: 40 , formatter: 'showlink', search: false, formatoptions: { baseLinkUrl: '/Program/EditMicro'} },
Cuando hago clic en el PNum, lo que sucede es que va a la acción siguiente resultado de mi controlador:
/Program/EditMicro
Lo que me gustaría, en cambio, es capturar esa información a través de Jquery en lo que se seleccionó (qué ID se seleccionó), ya que quiero hacer algo de json antes de que se envíe a la siguiente acciónResult
/Program/EditMicro
Por lo tanto, para recapitular, ¿hay alguna manera de capturar en qué es el valor de los clics del hipervínculo y luego puedo capturar eso en Jquery?
Gracias de antemano
En la mayoría de los casos es suficiente usar algo como
formatter: "showlink", formatoptions: { baseLinkUrl: "/Program/", showAction: "EditMicro", idName: "myId" }
En el caso de que los enlaces se generarán como
text from the cell
Si tiene en la acción el ID de la fila, puede obtener cualquier otra información adicional que necesite directamente de la base de datos.
Alternativamente, puede usar el truco simple descrito en la respuesta . Usted define la clase CSS
.myLink { text-decoration: underline; cursor: pointer; }
Entonces puede usar formateador personalizado como a continuación
formatter: function (cellValue, options, rowObject) { return "" + cellValue + ""; }, cellattr: function () { return " title=\"Click here to go to EditMicro\""; }
En la forma en que generará que busca el usuario como un enlace. Puede capturar el evento click en la celda usando
beforeSelectRow
o onCellSelect
callback. Por ejemplo
beforeSelectRow: function (rowid, e) { var $td = $(e.target).closest("td"), iCol = $.jgrid.getCellIndex($td[0]); if (this.p.colModel[iCol].name === 'note') { window.location = "/Program/EditMicro/" + encodeURIComponent(rowid); return false; } }
Si es necesario, puede usar getCol
o getRowData
para obtener cualquier otro dato de la fila clicada y anexar la información a la URL objective.
Puede agregar lo siguiente a su statement jqGrid para evitar que se active la acción de clic predeterminada.
.click(function (event) { event.preventDefault(); })
A continuación, puede hacer algo como su propio controlador de eventos de clic a través de
$('a').click(function () { //ToDo: Extra actions before submitting to controller });
También puede crear su propio formateador personalizado para agregar también información adicional al hipervínculo que va a mostrar para que funcione a medida que se construye la grilla.
Editar: Ejemplo de trabajo donde deshabilité la funcionalidad de clic predeterminada y unir la mía para mostrar una alerta (como un ejemplo para mostrar dónde codificaría su propia función para hacer el trabajo adicional que desea hacer). http://jsfiddle.net/QEzhr/33/