jquery jtable自定义单击事件动作路由

时间:2013-04-03 21:39:09

标签: jquery jquery-jtable

这是对这里回答的问题的后续问题:

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

2 个答案:

答案 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),但这会产生不必要的流量。