JQuery: datatable pagination

In the code below, html loads and will call the python group_map function. The question is that the pagination function is enabled on the system, so if the user on page 3 deletes the record, the page reloads and returns to page 1. How to make the user stay on one page after deleting the record

Used datatable used by http://www.datatables.net/

                 <html>
                 <head>
                 <link rel="stylesheet" type="text/css" href="css/datatable.css" />
                 <script type="text/javascript" src="js/jquery.dataTables.js"></script>
                 </head>
                 <script>
                 var oTable;

                 function fnFormatDetails ( nTr )
                 {
                    var iIndex = oTable.fnGetPosition( nTr ) ;
                    var aData = oTable.fnSettings().aoData[iIndex]._aData;

                    var sOut = aData[6];

                    return sOut;
                 }

                  $(document).ready(function() {
                  $.ajaxSetup({ cache: false });
                    oTable = $('#s_group_table').dataTable( {
                       "aoColumns": [
                          {"sWidth": "30%" },
                          {"sWidth": "20%" },
                          {"bSortable": false,"sWidth": "5%" },
                          {"bSortable": false,"sWidth": "5%" },
                       ],
                       "aaSorting": [[0, 'desc']],
                       "bProcessing": true,
                       "bServerSide": true,
                       "sAjaxSource": "/repo/group_set/",
                       "bJQueryUI": true,
                       "sPaginationType": "full_numbers",
                       "bFilter": false,
                       "oLanguage" : { "sZeroRecords": "No data found", "sProcessing" : "Fetching Data" }
                    });

                 });


                 function delete_set(id)
                 {
                       $.post("/repo/group_set_delete/" + id) ;
                       oTable.fnDraw(true) ;
                       location.reload();
                 }
                 </script>

                 <div id="s_group_table">
                 <table cellpadding="0" cellspacing="0" border="0"  width="100%">
                    <thead>
                       <tr>
                          <th width="30%">Name</th>
                          <th width="30%"></th>
                       </tr>
                    </thead>
                    <tbody>
                       <tr>
                          <td colspan="2" class="dataTables_empty">No data found</td>
                       </tr>
                    </tbody>
                 </table>
                 </div>





  def group_set(request):
     try:
        response_dict = {}
        offset = int(request.GET.get('iDisplayStart'))
        limit = int(request.GET.get('iDisplayLength')) + offset
        echo = request.GET.get('sEcho')

        sort_cols = int(request.GET.get('iSortingCols'))
        for i in range(0, sort_cols):
           dir = request.GET.get('iSortDir_' + str(i))
           if dir == "asc":
              dir = ""
           else:
              dir = "-"
           order_by = dir + group_map (request.GET.get('iSortCol_' + str(i))) + ","

        order_by = order_by.strip(',')


        total =  GroupSet.objects.filter(pk=request.profile.my_id).count()
        if limit > total:
           limit = total

        if order_by == "":
           groupset = GroupSet.objects.filter(pk=request.profile.my_id)[offset:limit]
        else:
           groupset = GroupSet.objects.filter(pk=request.profile.my_id).order_by(order_by)[offset:limit]

        p_array = []
        p_array_o = []
        for q in studentprofilegroup_map:
           delete_l = "<a><img title='Delete group' class=center src=\"/repo/images//del.gif\" onclick=javascript:delete_set(\"%d\")></a>&nbsp;" % (q.id)

           emp_name = q.first_name + q.last_name

           p_array_o = [emp_name , delete_l ]
           p_array.append(p_array_o)
        response_dict.update({'sEcho': echo, 'iTotalRecords': total, 'iTotalDisplayRecords': total, 'aaData': p_array}) ;

        return HttpResponse(simplejson.dumps(response_dict), mimetype='application/javascript')
     except:
        print "No records found"

Delete function as

   def group_set_delete(request,gid):
    try:
      s_gp = GroupSet.objects.filter(pk=gid)
      s_gp.delete()
    except:
      print "could not be deleted"
+3
source share
3 answers

. , 3., 1. . fnUpdate true/false, - true. , . , , . , . Ozlem.

$('#rulesTable').dataTable().fnUpdate(suburb_name, rowNo, 3, false );
0

ajax, location.reload() - , . 1.

, . , , , :

/* Add a click handler for the delete row */
$('#delete').click( function() {
    $.post("/repo/group_set_delete/", id, function() {
        /* Remove the row from the grid after server response */
        var anSelected = fnGetSelected( oTable );
        oTable.fnDeleteRow( anSelected[0] );
    });
} );
0

What does it do location.reload();? Check if it sends the request to the URL matching group_setwith the correct request parameter page(i.e. /app/group_set/?page=3). If this is not the case, you can explicitly create a URL and call it.

-1
source

Source: https://habr.com/ru/post/1761660/


All Articles