2017-03-16 65 views
0

目前,dataTable通过服务器端填充,一切正常。但是我想添加细节|编辑|单击行时删除actionLinks。jQuery:如何将onClick事件绑定到DataTable行?

现在,我将它们显示在右侧的一列中,但我希望链接在用户单击每行时出现,但我无法制定如何实现它以显示onClick

有人可以帮助我让他们显示点击吗?谢谢。

var dt = $('#datatableServer').DataTable({ 
      "serverSide": true, 
      "ajax": 
      { 
       "type": "POST", 
       "url": "@Url.Action("DataHandler", "Department")" 
        }, 
        "rowId": 'departmentID', 
        //"fnRowCallback": function (nRow, aData, iDisplayIndex) { 
        // nRow.setAttribute('id', aData[0]); 
        //}, 
        "columns": 
        [ 
         { 
          "data": "Name", 
          "searchable": true 
         }, 
         { 
          "data": "Budget", 
          "searchable": false 
         }, 
         { 
          "data": "StartDate", 
          "searchable": false 
         }, 
         { 
          "data": "Administrator", 
          "searchable": true, 
          "orderable": false 
         }, 
     { 
// this is the Actions Column I want to show when a Datatable row is clicked, not under a "Action" column 
       mRender: function (data, type, row) { 
      var linkEdit = '@Html.ActionLink("Edit", "Edit", new {id= -1 })'; 
           linkEdit = linkEdit.replace("-1", row.DT_RowId); 

      var linkDetails = '@Html.ActionLink("Details", "Details", new {id= -1 })'; 
           linkDetails = linkDetails.replace("-1", row.DT_RowId); 

      var linkDelete = '@Html.ActionLink("Delete", "Delete", new {id= -1 })'; 
           linkDelete = linkDelete.replace("-1", row.DT_RowId); 

        return linkDetails + " | " + linkEdit + " | " + linkDelete; 
      } 
     } 
     ], 
     "order": [0, "asc"], 
     "lengthMenu": [[10, 25, 50, 100], [10, 25, 50, 100]] 
    }); 


     $('#datatableServer tbody').on('click', 'tr', function() { 

      console.log('clicked'); 
      // get the row Id 
      console.log(dt.row(this).data().DT_RowId); 
     }); 
    }); // end of document.ready tag 
+0

您是否在数据表网页中看到示例[row_details](https://datatables.net/examples/api/row_details.html)? – inye

+0

是的,我有,谢谢。过去几天我一直在努力,终于搞清楚了。 – StraightUp

回答

0

我做了我mRender功能独立的函数,然后把它称为在DataTable中体click事件功能。

function format (data, type, row) { 
       var linkEdit = '@Html.ActionLink("Edit", "Edit", new {id= -1 })'; 
            linkEdit = linkEdit.replace("-1", row.DT_RowId); 



      var linkDelete = '@Html.ActionLink("Delete", "Delete", new {id= -1 })'; 
           linkDelete = linkDelete.replace("-1", row.DT_RowId); 

        return linkEdit + " | " + linkDelete; 
      } 

$('#dtServer tbody').on('click', 'td', function() { 

      var tr = $(this).closest('tr'); 
      var row = dt.row(tr); 

      if (row.child.isShown()) { 
       // This row is already open - close it 
       row.child.hide(); 
       tr.removeClass('shown'); 
      } 
      else { 
       // Open this row 
       row.child(format(row.data())).show(); 
       tr.addClass('shown'); 
      } 
     }); 
相关问题