这是对这里回答的问题的后续问题:
jquery jtable custom click event
而不是在按下按钮时执行alert(),我需要将操作路由回服务器,类似于listAction或DeleteAction。
1)如何设置按钮单击以触发此自定义操作? 2)我可以传递一个类似警报示例(data.record.tableID)的值吗?
类似这样但我只是编写了一个名为jTableAjax的函数名称,我需要知道一个真正类似的jtable函数来触发一个动作ajax调用:
CustomAction: {
title: 'Refresh',
width: '1%',
sorting: false,
create: false,
edit: false,
list: true,
display: function (data) {
if (data.record) {
return '<button title="Refresh '+data.record.table+'" class="jtable-command-button jtable-edit-command-button" onclick="jTableAjax('/myurlserverpath/myaction',' + data.record.tableID + '); return false;"><span>Refresh '+data.record.table+'</span></button>';
}
}
}
答案 0 :(得分:1)
我最终使用了ajax处理程序中内置的jquery,然后在jtable上重新加载,如下所示:
在jtable自定义字段定义上我调用自己的refreshTable函数:
display: function (data) {
if (data.record) {
return '<button title="Refresh'+data.record.table+'" class="jtable-command-button jtable-edit-command-button" onclick="refreshTable(data.record.table); return false;"><span>Refresh '+data.record.table+'</span></button>';
}
然后我用jquery处理ajax请求来做一些服务器端mojo然后如果成功,重新加载jtable:
function refreshTable(table) {
$.post("/myurlpath/refreshTable", "table="+table,
function(results)
{
$('#MyTableDiv').jtable('reload');
}
, "json");
}
我在帖子中省略了ajax错误处理以获取代码可读性,但这会处理我需要的东西(从自定义jtable按钮调用服务器)。
答案 1 :(得分:1)
这已经很老了,但我有类似的任务,所以我会分享我的解决方案。 一般来说,你不应该点击&#39; onclick&#39;在你的按钮。最好给出相同值的按钮属性,让我们说&#39; name =&#34; button1&#34;&#39;并将按钮ID设置为记录的ID,以便&#39; id =&#34; data.record.Id&#34;&#39;。你可以使用jQuery .live事件http://api.jquery.com/live/,它将在所有这些元素上附加处理程序。你应该得到类似于这个
的东西 $('[name="button1"]').live('click', function() {
var id = $(this).attr('id');
});
拥有行的ID可以为您提供下一步的自由。
如果您需要处理当前存储在jTable中的数据 - 您通过jTable POST请求(如某些隐藏字段,未显示数据等),您也可以轻松访问它。它很简单
var row = $('#NoteTable').jtable('getRowByKey', id).data('record');
中提琴,当你遇到rowdata时,你可以访问你可能想要的一切。您也可以通过向服务器发送请求来获取此数据(因为我们获得了Id),但这会产生不必要的流量。