Can't select another row after ajax.reload

Can't select another row after ajax.reload

ILyaCycloneILyaCyclone Posts: 9Questions: 2Answers: 0

Hi.
Using datatables with serverSide.
I need to refresh current page, reading data from backend, and select specific row.

    var globalRowSelector = null;
    var testTable = $testtable.DataTable({
            serverSide : true,
            select : {style : 'single'},
            ajax: ...,
            columns: ...,
            drawCallback : function() {
                console.log("on drawCallback");

                var api = this.api();
                // select row by globalRowSelector or first row
                api.row(globalRowSelector != null ? globalRowSelector : 0).select();
            }
    });

    testTable.on("select", function() {
            console.log("on table select");
    });

    $("#testbtn1").click(function(e) {
            globalRowSelector = 2; // need to select third row after page refresh
            testTable.ajax.reload(null, false);
    })

On button click I see data on page refreshed, the third row gets selected for a moment and then "on table select" fires again and selects row number 0 again. I can't prevent this from happening.
Or if I select another row manually and hit the button, again row number 2 gets selected for a moment and then selection gets back to previously selected row.
Why does this happen? How can I programmatically select a specific row after page refresh?

"datatables.net": "^1.10.16",
"datatables.net-bs": "^2.1.1",
"datatables.net-select-bs": "^1.2.3",

This question has an accepted answers - jump to answer

Answers

  • ILyaCycloneILyaCyclone Posts: 9Questions: 2Answers: 0

    It looks like I'm hitting this functionality: https://datatables.net/extensions/select/examples/initialisation/reload.html (Retain selection on reload) but in my case it is undesirable. How do I turn in off?
    I also need those rowId's for another functonality.

  • ILyaCycloneILyaCyclone Posts: 9Questions: 2Answers: 0

    Found out that if I call
    testTable.row({selected: true}).deselect();

    before calling ajax.reload(), it seem to work...
    Is this correct solution?

  • allanallan Posts: 63,461Questions: 1Answers: 10,466 Site admin
    Answer ✓

    Yes - the row selection reselection after a reload cannot currently be turned off using an option flag.

    Allan

This discussion has been closed.