JqGrid нужна гиперссылка – нужно захватить ценность через JQuery

В моем коде есть следующее:

{ name: 'ID', index: 'ID', width: 40 , formatter: 'showlink', search: false, formatoptions: { baseLinkUrl: '/Program/EditMicro'} }, 

Когда я нажимаю на PNum, происходит то, что он переходит к следующему действию: мой controller:

  /Program/EditMicro 

Вместо этого я хотел бы захватить эту информацию через Jquery на том, что было выбрано (какой идентификатор был выбран), поскольку я хочу сделать json до того, как он будет отправлен на следующий ActionResult

  /Program/EditMicro 

Итак, чтобы повторить, есть ли все равно, чтобы зафиксировать, на что нажимается гиперссылка, а затем я могу захватить это в JQuery.

заранее спасибо

В большинстве случаев достаточно использовать что-то вроде

 formatter: "showlink", formatoptions: { baseLinkUrl: "/Program/", showAction: "EditMicro", idName: "myId" } 

В случае, если ссылки будут сгенерированы как

 text from the cell 

Если в действии есть идентификатор строки, вы можете получить любую другую дополнительную информацию, которая вам нужна непосредственно из базы данных.

В качестве альтернативы вы можете использовать простой трюк, описанный в ответе . Вы определяете class CSS

 .myLink { text-decoration: underline; cursor: pointer; } 

Затем вы можете использовать пользовательский форматтер, как показано ниже.

 formatter: function (cellValue, options, rowObject) { return "" + cellValue + ""; }, cellattr: function () { return " title=\"Click here to go to EditMicro\""; } 

В способе вы создадите который ищет пользователя как ссылку. Вы можете поймать событие click на ячейке, используя onCellSelect вызов beforeSelectRow или onCellSelect . Например

 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; } } 

При необходимости вы можете использовать getCol или getRowData для получения любых других данных из getRowData строки и добавления информации к целевому URL.

Вы можете добавить следующее в ваше объявление jqGrid, чтобы предотвратить запуск по умолчанию действия click click.

 .click(function (event) { event.preventDefault(); }) 

Затем вы можете сделать что-то вроде своего собственного обработчика событий click

 $('a').click(function () { //ToDo: Extra actions before submitting to controller }); 

Вы также можете создать собственный пользовательский форматтер, чтобы добавить дополнительную информацию к гиперссылке, которую вы собираетесь отображать, чтобы делать эту работу по мере создания сетки.

Изменить: рабочий пример, когда я отключил функцию щелчка по умолчанию и привязал свой собственный, чтобы отобразить предупреждение (в качестве примера, чтобы показать, где вы будете кодировать свою собственную функцию для выполнения дополнительной работы, которую вы хотите сделать). http://jsfiddle.net/QEzhr/33/

  • Затухание в фоновом изображении
  • AJAX обещает использовать массив
  • изменение location.hash с вкладками jquery ui
  • jQuery прокручивает до ID с другой страницы
  • Может ли jQuery добавлять запятые, когда пользователь вводит цифры?
  • JQuery - Как сделать $ .post () использовать contentType = application / json?
  • Добавление атрибута данных в DOM
  • jquery / js - Как выбрать родительскую форму, на основе которой нажата кнопка отправки?
  • jQuery ajax upload с индикатором выполнения - без вспышки
  • Проверка FileExtension с помощью выборочной проверки создает дубликаты и недопустимые атрибуты data- *
  • jQuery выбирает атрибут с использованием операторов AND и OR
  • Interesting Posts
    Давайте будем гением компьютера.