jTable根据数据所有者有条件地显示\隐藏编辑和删除按钮 [英] jTable Conditional show\hide edit and delete buttons based on owner of data

查看:118
本文介绍了jTable根据数据所有者有条件地显示\隐藏编辑和删除按钮的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用jTable显示CD信息,并使用子表显示该CD的评论.我希望只能在登录用户的行上显示"edit \ delete"按钮.我一直在尝试遵循以下建议:

Im using jTable to display CDs info and a child table to show reviews of that CD. I want to be able to only show the edit\delete buttons on the rows for the user that is logged in. I have been trying to follow the suggestions made on: https://github.com/hikalkan/jtable/issues/113

https://github.com/hikalkan/jtable/issues/893

https://github.com/hikalkan/jtable/issues/620

可以诚实地说,我对这些示例都不太满意.我们被告知要在我们的分配中包含一些jquery,因此我选择将其用于表数据.我希望现在的ID可以做一些非常基本的事情!

Can honestly say im not having much luck with any of these examples. We had been told to include some jquery in our assignment so I chose to go with using it for my table data. Im wishing now id just done something very basic!

在没有条件的情况下运行jTable:

Working jTable without condition:

display: function (reviewData) {
                    //Create an image that will be used to open child table
                    var $img = $('<img class="child-opener-image" src="/Content/images/Misc/list_metro.png" title="List Reviews" />');
                    //Open child table when user clicks the image
                    $img.click(function () {
                        $('#ReviewTableContainer').jtable('openChildTable',
                                $img.closest('tr'),
                                {
                                    title: "Your reviews on this album",
                                    actions: {
                      listAction: 'childReviewActions.php?action=list&ID=' + reviewData.record.CDID,
                                          deleteAction: 'childReviewActions.php?action=delete&ID=' + reviewData.record.CDID,
                                          updateAction: 'childReviewActions.php?action=update&ID=' + reviewData.record.CDID
                                    },  

                                    fields: {
                                        userID: {
                                        key: true,
                                        create: false,  
                                        edit: false,
                                        list: false
                                        },
                                        userName: {
                                            title: 'User',
                                            edit: false,
                                            width: '20%'
                                        },
                                        reviewDate: {
                                            title: 'Review date',
                                            width: '20%',
                                            type: 'date',
                                            edit: false,
                                            displayFormat: 'dd-mm-yy'
                                        },
                                        reviewText: {
                                            title: 'Review',
                                            type: 'textarea',
                                            width: '40%'
                                        }
                                    },

问题620尝试:

actions: {
    listAction: 'childReviewActions.php?action=list&ID=' + reviewData.record.CDID,
    @if (reviewData.record.userID == <?php echo mysql_real_escape_string($_SESSION['ID']);?>)
    {
        deleteAction: 'childReviewActions.php?action=delete&ID=' + reviewData.record.CDID,
        updateAction: 'childReviewActions.php?action=update&ID=' + reviewData.record.CDID
    }
},

这种方式给我编译错误:IF语句上的无效属性ID. 如果我在if语句中删除@,则会得到:属性ID后缺少:.

This way gives me compile error: invalid property id on the IF statement. If I take out the @ in the if statement I get: missing : after property id.

问题113和893次尝试:

Issue 113 & 893 attempt:

actions: {
    listAction: {
        url:'http://localhost/childReviewActions.php?action=list&ID=' + reviewData.record.CDID
//updateAction: {
        //url:'childReviewActions.php?action=update&ID=' + reviewData.record.CDID,
    //enabled: function (data) {
            //return data.record.userID = <?php echo mysql_real_escape_string($_SESSION['ID']);?>;
        //}
    //}
},                                      

在这一点上,我什至无法列出子表的内容.它不断返回404 not found错误:在此服务器上找不到请求的url/[object object].有谁知道如何使这些示例正常工作吗,还有其他示例如何使表格启用\启用编辑,更新按钮吗?这对我来说是新事物,所以我向您道歉

On this I couldnt even get it to list the contents of the child table. It keeps coming back with 404 not found error: The requested url /[object object] was not found on this server. Has anyone any ideas how to get these examples working on have a different example of how to get the table to enable\enable the edit, update buttons? This is all new to me so I apologise now

推荐答案

rowInserted: function (event, data) { 
                                        //After child row loads. Check if the review belongs to the member logged in. If not remove the edit/delete buttons
                                        if (data.record.userID != $user) { 
                                            data.row.find('.jtable-edit-command-button').hide(); 
                                            data.row.find('.jtable-delete-command-button').hide();
                                        }
                                        else{
                                            //If a review record does belong to the user set variable to true so the add new review link can be hidden after all records have been loaded
                                            $memberReviewExists = true;
                                            //Also needed here for when a new record is inserted
                                            $(".jtable-add-record").hide();
                                        }
                                    },
                                    recordsLoaded: function (event, data) {
                                        if (typeof $memberReviewExists != 'undefined' && $memberReviewExists == true){
                                            $(".jtable-add-record").hide();
                                            $memberReviewExists = null;
                                        }
                                        else {

    //No review currently exists for this user so show the Add review link                                      $(".jtable-add-record").show();
                                        }
                                    },
                                    recordDeleted: function (event, data) {

                                        //User has deleted their review. Re-show the add new review link
                                        $(".jtable-add-record").show();

                                    }

这篇关于jTable根据数据所有者有条件地显示\隐藏编辑和删除按钮的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆