2012-01-02 3 views
1

일부 테이블을 추가 및 삭제할 수 있도록 테이블에 편집 가능한 DataTables를 추가했습니다. 추가 부분이 잘 작동하지만 행을 선택할 수 없기 때문에 삭제 부분에 문제가 있습니다.DataTables 편집 가능 삭제

.makeEditable : 나는 예에서 본 적이 무엇으로

내가 할했습니다 모든이 같은 삭제 URL, 뭔가 추가하는 것입니다 ({sDeleteURL : "/ DeleteURL을"});

하지만 그 복용량은 내 행을 선택할 수 있도록 모든 것을 삭제할 수 있습니다.

내 전체 코드는 다음과 같습니다

$(function() { 
    var oTable = $('[email protected]').dataTable(
     { 
      "oLanguage": { "sUrl": "/LanguageURL" }, 
      "bProcessing": true, 
      "bFilter": false, 
      "sPaginationType": "full_numbers", 
      "iDisplayLength": 10, 
      "bLengthChange": false, 
      "aoColumnDefs": [{ "sClass": "center-col", "aTargets": ['align-center-col'] }, 
       { "sClass": "read_only", "aTargets": ['read-only-col'] }, 
       { "sClass": "small-width-col", "aTargets": ['small-col'] }], 
      "aaSorting": [[0, "desc"]], 
      "bScrollCollapse": true, 
      "bServerSide": true, 
      "sAjaxSource": '/DataURL', 
      "fnServerData": function (sSource, aoData, fnCallback) { 
       aoData.push({ "name": "Numero", "value": $(this).find("#Numero").val() }); 
       $.ajax({ 
        "dataType": 'json', 
        "type": "POST", 
        "url": sSource, 
        "data": aoData, 
        "success": fnCallback 
       }); 
      } 
     }).makeEditable({ 
      sAddNewRowFormId: '[email protected]', 
      sAddNewRowButtonId: '[email protected]', 
      btnDeleteRow: '[email protected]', 
      sAddURL: "/AddURL", 
      sDeleteURL: "/DeleteURL" 
     }); 
}); 

답변

3

나는 개인적으로 datatables 내 프로젝트 중 하나 일 삭제 기능 받고 놀아 왔습니다.

내가 발견 한 것은 jquery-ui.js 스크립트를 문서의 머리 부분에 포함시켜야한다는 것입니다.

이와 같이 테이블 행의 형식을 지정해야한다는 것도 발견했습니다. <tr id="1"> 그래서 datatables 자동으로 선택한 행에서 올바른 id를 잡고 추가 처리를 위해 귀하의 PHP 페이지에 전달합니다.

Datatables는 DT_RowId 특수 속성을 사용하여 각 테이블 행에 id를 자동으로 추가 할 수 있습니다.

서버 측 구현을 사용하도록 데이터 테이블을 설정 한 경우 ajax 요청에 대한 응답으로 서버에서 반환 된 JSON 데이터에 DT_RowId을 포함 할 수 있습니다. 예를 JSON 형식

:

{ 
"sEcho": 1, 
"iTotalRecords": "1", 
"iTotalDisplayRecords": "1", 
"aaData": [ 
    { 
    "DT_RowId": "1", 
    "engine": "Trident", 
    "browser": "Internet Explorer 4.0", 
    "platform": "Win 95+", 
"version": "4", 
    "grade": "X" 
    } 
] 
} 

가 여기 내 예제 모형 코드입니다. 서버 측 구현은이 예제에는 포함되어 있지 않습니다. 예제 용 datatables와 함께 제공되는 예제 소스 objects.txt를 사용하고 있습니다.

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
    <head> 
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script> 
    <script src="datatables/media/js/jquery.dataTables.js"></script> 
    <script src="examples/examples_support/jquery.jeditable.js"></script> 
    <script src="http://jquery-datatables-editable.googlecode.com/svn/trunk/media/js/jquery-ui.js"></script> 
    <script src="datatables/media/js/jquery.datatables.editable.js"></script> 
    <style type="text/css"> 
     @import "datatables/media/css/demo_table.css"; 
     @import "datatables/media/css/demo_table_jui.css"; 
     @import "examples/examples_support/themes/smoothness/jquery-ui-1.8.4.custom.css"; 
    </style> 
    <script> 
     $(document).ready(function() { 
      var anOpen = []; 
      var sImageUrl = "/datatables/examples/examples_support/"; 

      var oTable = $('#example').dataTable({ 
       "sPaginationType": "full_numbers", 
       "bJQueryUI": true, 
       "bProcessing": true, 
       "sAjaxSource": "/datatables/examples/ajax/sources/objects.txt", 
       "aoColumns": 
       [ 
        { 
         "mDataProp": null, 
         "sClass": "control center", 
         "sDefaultContent": '<img src="'+sImageUrl+'details_open.png'+'">' 
        }, 
        { "mDataProp": "engine" }, 
        { "mDataProp": "browser" }, 
        { "mDataProp": "grade" } 
       ] 
      }).makeEditable({ 
       sDeleteURL: "DeleteData.php", 
       //Converts to JQuery UI button (full list of options on http://jqueryui.com/demos/button) 
       oDeleteRowButtonOptions: 
       { 
        label: "Remove", 
        icons: {primary:'ui-icon-trash'} 
       }, 
       //Additional Paramaters can be sent for processing... 
       oDeleteParameters: 
       { 
        action:"delete_dt_projects_record", 
        dtSecurity:"9999999999" 
       } 
      }); 
      //For Expandable Collapsible Rows 
      $('#example td.control').live('click', function() { 

       var nTr = this.parentNode; 
       //var projID = $(this).closest("td").next().text(); 
       //console.log(projID); 
       //console.log(anOpen); 
       //console.log(nTr); 
       var i = $.inArray(nTr, anOpen); 
       //console.log(i); 
       if (i === -1) 
       { 
        $('img', this).attr('src', sImageUrl+"details_close.png"); 
        var nDetailsRow = oTable.fnOpen(nTr, fnFormatDetails(oTable, nTr), 'details'); 
        $('div.innerDetails', nDetailsRow).slideDown(); 

        anOpen.push(nTr); 
       } 
       else 
       { 
       $('img', this).attr('src', sImageUrl+"details_open.png"); 
       $('div.innerDetails', $(nTr).next()[0]).slideUp(function() 
        { 
         oTable.fnClose(nTr); 
         anOpen.splice(i, 1); 
        }); 
       } 
      }); 
      function fnFormatDetails(oTable, nTr) 
      { 
       var oData = oTable.fnGetData(nTr); 
       var sOut = 
       '<div class="innerDetails">'+ 
        '<table cellpadding="5" cellspacing="0" border="0" style="padding-left:50px;">'+ 
        '<tr><td>Rendering engine:</td><td>'+oData.engine+'</td></tr>'+ 
        '<tr><td>Browser:</td><td>'+oData.browser+'</td></tr>'+ 
        '<tr><td>Platform:</td><td>'+oData.platform+'</td></tr>'+ 
        '<tr><td>Version:</td><td>'+oData.version+'</td></tr>'+ 
        '<tr><td>Grade:</td><td>'+oData.grade+'</td></tr>'+ 
        '</table>'+ 
       '</div>'; 
       return sOut; 
      } 
     }); 

    </script> 
    </head> 
    <body> 
    <div style="width:900px"> 
    <div class="add_delete_toolbar"> 
     <button id="btnDeleteRow">Delete</button> 
    </div> 
     <table cellpadding="0" cellspacing="0" border="0" class="display" id="example"> 
    <thead> 
     <tr> 
      <th></th> 
      <th>Rendering engine</th> 
      <th>Browser</th> 
      <th>CSS grade</th> 
     </tr> 
    </thead> 
    <tbody></tbody> 
    </table> 
    </div> 
    </body> 
</html> 

주 당신은 당신이 작업 예제를보기 위해있는 위치에 스크립트와 스타일의 URL 경로를 변경해야 할 수도 있습니다.

업데이트 : HTML 소스에이 위치를 수동으로 포함시켜야합니다.

<button id="btnDeleteRow">Delete</button>