【问题标题】:Jquery datatable get row id from button clickJquery数据表从按钮单击获取行ID
【发布时间】:2017-06-27 02:28:03
【问题描述】:

我的数据表中的每一行都呈现了两个按钮,即编辑和删除。是否可以在单击“删除”或“编辑”按钮时获取员工 ID 或行 ID,并将该 ID 值传递到我拥有的网络方法中,该方法接受 ID 参数以从数据库中删除记录?

到目前为止我的 jquery 代码:

 $(document).ready(function () {
        $.support.cors = true;
        $.ajax({
            url: '<%=ResolveUrl("GetEmployee.aspx") %>',
            type: 'POST',
            contentType: 'application/json; charset=utf-8',
            dataType: 'json',
            success: function (data) {
              var table = $('#datatable').dataTable({
                    data: data,
                    columns: [
                        { 'data': 'Id' },
                        { 'data': 'image' },
                        { 'data': 'lastName' },
                        { 'data': 'firstName' },
                        { 'data': 'jobTitle' },
                        {
                            'data': 'StartDate',
                            'render': function (jsonDate) {
                                var date = new Date(parseInt(jsonDate.substr(6)));
                                var month = date.getMonth() + 1;
                                return date.getDate() + "/" + month + "/" + date.getFullYear();
                            }
                        },
                        {
                            'data': 'EndDate',
                            'render': function (jsonDate) {
                                var date = new Date(parseInt(jsonDate.substr(6)));
                                var month = date.getMonth() + 1;
                                return date.getDate() + "/" + month + "/" + date.getFullYear();
                            }
                        },
                        {
                            'data': null,
                            'render': function (data, type, row) {
                                return '<button id="' + row.id +'" onclick="editClick()">Edit</button>'
                            }
                        },
                        {
                            'data': null,
                            'render': function (data, type, row) {
                                return '<button id="' + row.id + '" class="dodo" onclick="deleteClick()">Delete</button>'
                            }
                        }
                    ]
                });
            }
        });

        $('#datatable').on('click', 'button', function () {
            var id = $(this).data();
            //var id = table.row($(this)).data();
            alert(JSON.stringify(id));
        });
    });

现在,当我尝试获取 id 时,它返回我的 undefined。

我的网络方法:

  [WebMethod]
    public static void DeleteRecord(string id)
    {
        var query = "DELETE FROM employee WHERE ID=?";
        OdbcConnection myConn = new OdbcConnection(myConnection);
        OdbcTransaction transaction = null;
        myConn.Open();

        transaction = myConn.BeginTransaction();
        OdbcCommand command = new OdbcCommand(query, myConn, transaction);
        command.Parameters.Add("ID", OdbcType.Int).Value = id;
        command.ExecuteNonQuery();

        transaction.Commit();

        myConn.Close();
    }

谢谢!

【问题讨论】:

    标签: javascript c# jquery asp.net datatables


    【解决方案1】:

    是的,您可以在单击按钮时同时获取员工 ID 或行 ID。为此,您需要在定义编辑和删除按钮时进行一些小改动。

    {
         'data': null,
         'render': function (data, type, row) {
                       return '<button id="' + row.id +'" onclick="editClick(this)">Edit</button>'
                   }
    },
    {
         'data': null,
         'render': function (data, type, row) {
                           return '<button id="' + row.id + '" class="dodo" onclick="deleteClick(this)">Delete</button>'
                   }
    }
    

    Javascript / jQuery

    function editClick (obj) {
          var rowID = $(obj).attr('id');
          var employeeID = $(obj).closest('tr').find('td:first').html());
    }
    
    function deleteClick (obj) {
          var rowID = $(obj).attr('id');
          var employeeID = $(obj).closest('tr').find('td:first').html());
    }
    

    【讨论】:

    • 您可以使用jquery 更轻松地做到这一点。
    • 感谢您的回复,是的,可以做到,但在这里 OP 只想要一个解决方案来传递员工 ID 或行 ID。因此,这是获得它的一种方式。休息由 OP 选择合适的答案。
    • @SuprabhatBiswal 嘿,谢谢,效果很好。我会接受这个作为答案,因为我尝试了其他答案,但它对我不起作用。感谢其他所有人的贡献。欣赏它。
    • @SuprabhatBiswal 出于好奇,我将如何在 jquery 中执行此操作?
    • @SC.Cee,请看我的回答。
    【解决方案2】:

    可能我知道三种方法。

    1 个不好的方法:例如为后端获取数据 缺点是做空和搜索...功能已禁用。额外的回应。

    <a data-id="<?=yourQueryResult["id"]?>" onclick="javascript:foo()"></a>
    function foo (){ var id = $(this)attr("data-id")}
    

    <a onclick="javascript:foo(<?=yourQueryResult["id"]?>)"></a>
    function foo(id){ /*deleting*/}
    

    2关于render function go javascript方法参数row id 例子

    render': function (data, type, row) {
                       return '<a onclick="javascript:foo('+ row.id +')"></a>'
                   }
    

    3 我最喜欢的 direck 事件监听器来获取行数据 优点:干净的 html,没有内联函数调用,所有函数都调用同一个文件。

    var table = $('#datatable').dataTable({...})
    
    $('#datatable tbody').on('click', 'a.delete', function () {
                var tr = $(this).closest('tr');
                var row = table.row(tr);
                var id = row.data().yourColumnName;
            });
    $('#datatable tbody').on('click', 'a.edit', function () {
                    var tr = $(this).closest('tr');
                    var row = table.row(tr);
                    var rowData = row.data();
                });
    

    【讨论】:

      【解决方案3】:

      您应该使用.attr() 方法来找出id 属性。

      $('#datatable').on('click', 'button.deleteButton', function () {
              var id = $(this).attr('id');
      });
      $('#datatable').on('click', 'button.editButton', function () {
              var id = $(this).attr('id');
      });
      

      数据表

       {
             'data': null,
              'render': function (data, type, row) {
                     return '<button id="' + row.id +'" class="editButton">Edit</button>'
              }
       },
       {
             'data': null,
             'render': function (data, type, row) {
                 return '<button id="' + row.id + '" class="deleteButton" >Delete</button>'
              }
      }
      

      【讨论】:

      • 嗨,是的,我尝试过这种方式,但当我发出警报时,它给了我未定义的信息。
      • 另外,您是否删除了deleteClick()editClick()
      • 啊,我没有。你必须删除那些?编辑:删除 onclicks 仍然不起作用?
      • 嗯,即使现在它仍然给我未定义。我的代码的另一部分是这样做的吗?我只是想提醒一下我得到了什么值,即使使用这个更新的代码,它也给了我未定义的值。
      【解决方案4】:

      您应该像这样将 data-id 添加到按钮:

      '<button data-id="' + row.id + '" id="' + row.id + '" class="dodo" onclick="deleteClick()">Delete</button>'
      

      其他按钮相同,然后单击:

      var id = $(this).data('id');
      

      这会带来你的身份

      【讨论】:

        【解决方案5】:
        Just Get Row and its first parameter is your id and pass it into your deleteclick function
        
         {
                'data': null,
                    'render': function (data, type, row) 
                     {
                        var id = row.id;
                        return '<button id="' + row.id + '" class="dodo" onclick="deleteClick("' + id + '")">Delete</button>'
                     }
         }
        
        function deleteClick(var id)
        {
              alert(id);  
        }
        

        【讨论】:

          猜你喜欢
          • 2023-03-06
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-06-02
          • 2017-03-24
          • 1970-01-01
          • 1970-01-01
          • 2021-08-13
          相关资源
          最近更新 更多