Jquery Datatable은 항상 처음에 선택한 값만 표시하거나 선택 취소합니다.

Nov 15 2020

아래 질문과 비슷한 경우가 있습니다.

Datatable은 Excel에서 업데이트 된 확인란 값을 0 또는 1로 내보낼 수 없으며 항상 처음에 확인 된 값만 표시합니다.

jQuery 데이터 테이블이 있고 서버 측 바인딩에서 데이터 표시까지 모든 것이 잘 진행되고 있지만 면도기 페이지에서 다른 컨트롤러로 데이터 테이블을 제출해야합니다. 따라서 확인 된 행과 확인되지 않은 행이 ID와 함께 필요하므로 컨트롤러에 제출하면 확인란 값이 업데이트되지 않는 경우를 제외하고 데이터 테이블의 모든 데이터가 잘 제출됩니다. 그들은 초기 값으로 전송되었습니다. 나는 그것들을 체크하거나 체크 해제했고, 첫 번째 바인드에서 서버에서 얻은 초기 값만 얻었습니다.

@section scripts {
    <script>
        var obj = @Html.Raw(Json.Serialize(Model));

        var storeId = document.getElementById('idStore').value;
        
        var tableParam;
        $(document).ready(function () { $('#myTable').DataTable({
            "proccessing": true,
            "serverSide": true,
            "ajax": {
                url: "/item/loaddata",
                type: 'POST',
                headers: { 'RequestVerificationToken': $('@Html.AntiForgeryToken()').val() }, data: { "StoreId": storeId } }, "columnDefs": [ { "targets": 0, "checkboxes": { "selectRow": true }, } ], "select": { "style": "multi" }, "columns": [ { "data": "selected", "searchable": false, "render": function (data, type, row) { return '<input type="checkbox" class="chk"' + (data ? ' checked' : '') + '/>'; } }, {"name":"SNumber", "data": "tname"}, { "name": "MName", "data": "lname" }, { "name": "SGuid", "data": "itemguid", "visible": false, "searchable": false }, ], "order": [[0, "desc"]] }); }); </script> <script type="text/javascript"> $(document).on("click", "#btnSave", function (e) {
              var table = $('#myTable').DataTable(); var datac = table.rows(function (idx, data, node) { return $(node);
            }).data().toArray();

             
                 
             
            $.ajax({
                url: "/inventory/saveselecteditems",
                type: 'post'
               , data: { "testmodel": datac }

            });



        });

       
    </script>



}

답변

1 mj1313 Nov 16 2020 at 07:42

Datatable에는 선택한 행을 가져 오는 기본 제공 함수가 있습니다.

table.rows({ selected: true }).data().toArray();

아래와 같이 변경하십시오.

$(document).on("click", "#btnSave", function (e) { var table = $('#myTable').DataTable();
        var datac = table.rows({ selected: true }).data().toArray();  
        $.ajax({
            url: "/inventory/saveselecteditems",
            type: 'post', 
            data: { "testmodel": datac }
        });
});

최신 정보:

<script type="text/javascript">
    $(document).on("click", "#btnSave", function (e) {
        var table = $('#myTable').DataTable(); var datac = table.rows(function (idx, data, node) { var chk = $(node).find("input:checkbox");
            if ($(chk).is(':checked')) { data.selected = true; } else { data.selected = false; } return $(node);
        }).data().toArray();
        $.ajax({
            url: "/inventory/saveselecteditems",
            type: 'post',
            data: { "testmodel": datac }

        });
    });
</script>