1

这是此处回答的问题的后续问题:

jquery jtable自定义点击事件

我需要将类似于 listAction 或 DeleteAction 的操作路由回服务器,而不是仅在按下按钮时执行 alert()。

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

2 回答 2

1

我最终使用了 jquery 内置的 ajax 处理程序,然后在 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 按钮调用服务器)。

于 2013-04-04T18:00:25.567 回答
1

这已经很老了,但我有类似的任务,所以我会分享我的解决方案。一般来说,您不应该在按钮中添加“onclick”。最好给按钮属性相同的值,让我们说'name =“button1”'并将按钮id设置为记录的id,所以'id =“data.record.Id”'。您可以使用 jQuery .live 事件http://api.jquery.com/live/将处理程序附加到所有这些元素上。你应该最终得到类似的东西

    $('[name="button1"]').live('click', function() {
        var id = $(this).attr('id');
    });

拥有 row 的 ID 让您在接下来可以做什么方面有很大的自由度。

如果您需要处理当前存储在 jTable 中的数据 - 您通过 jTable POST 请求获得的数据(例如一些隐藏字段,未显示的数据等),您也可以轻松访问它。它很简单

            var row = $('#NoteTable').jtable('getRowByKey', id).data('record');

viola,当涉及到行数据时,您可以访问您可能想要的所有内容。您也可以通过向服务器发送请求来获取这些数据(因为我们得到了 ID),但这会产生不必要的流量。

于 2015-01-12T13:10:53.237 回答