繁体   English   中英

jQuery JTable自定义单击事件动作路由

[英]jquery jtable custom click event action routing

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

jQuery JTable自定义单击事件

我不仅需要在按下按钮时执行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>';
                        }
                    }
                }

我最终使用了内置在ajax处理程序中的jquery,然后在jtable上重新加载,如下所示:

在jtable customfield定义上,我调用了自己的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按钮向服务器发出调用)。

这已经很老了,但是我有类似的任务,所以我将分享我的解决方案。 通常,您不应该在按钮中添加“ 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');
    });

拥有行ID可让您在下一步操作上有很大的自由度。

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

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

中提琴,涉及到行数据时,您可以访问所有可能需要的东西。 您也可以通过向服务器发送请求来获取此数据(因为我们获得了ID),但这会产生不必要的流量。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM