JSFiddle - React, Tailwind, and code Playground

HTML

<table cellspacing="0" border="0" id="Table1" style="text-align:center" >
    <tr>
        <th scope="col" width="80px">Column A</th><th scope="col" width="80px">Column B</th><th scope="col">&nbsp;</th>
    </tr>
    <tr>
        <td>
                <span id="GridView1_ctl02_lbl1">A</span>
            </td><td>
                <span id="GridView1_ctl02_lbl2">0</span>
            </td><td>
                <a href="#" class="up">Up</a> <a href="#" class="down">Down</a>
            </td>
    </tr><tr>
        <td>
                <span id="GridView1_ctl03_lbl1">B</span>
            </td><td>
                <span id="GridView1_ctl03_lbl2">2</span>
            </td><td>
                <a href="#" class="up">Up</a> <a href="#" class="down">Down</a>
            </td>
    </tr><tr>
        <td>
                <span id="GridView1_ctl04_lbl1">C</span>
            </td><td>
                <span id="GridView1_ctl04_lbl2">2</span>
            </td><td>
            </td>
    </tr><tr>
        <td>
                <span id="GridView1_ctl05_lbl1">D</span>
            </td><td>
                <span id="GridView1_ctl05_lbl2">2</span>
            </td><td>
            </td>
    </tr><tr>
        <td>
                <span id="GridView1_ctl06_lbl1">E</span>
            </td><td>
                <span id="GridView1_ctl06_lbl2">3</span>
            </td><td>
                <a href="#" class="up">Up</a> <a href="#" class="down">Down</a>
            </td>
    </tr>
</table>

JavaScript

$(function() {
    var column_index = 1;
    function get_value(tr) {
        return $('td', tr).eq(column_index).text().trim();
    }
    function group_by(trs, column_index) {
        var map = {};
        trs.each(function (idx) {
            var value = get_value($(this));
            if (map[value])
                map[value].push($(this));
            else
                map[value] = [$(this)];
        });
        return map;
    }
    var map = group_by($('#Table1 tr:gt(0)'), column_index);
    
    $('a.up').click(function () {
        var tr = $(this).closest('tr');
        var value = get_value(tr);
        var group = map[value];
        var prev = group[0].prev('tr');
        if (prev.length == 0 || $('th', prev).length != 0)
            return;
        var prev_value = get_value(prev);
        var prev_group = map[prev_value];
        for (var i = 0; i < group.length; i++) {
            group[i].detach();
            prev_group[0].before(group[i]);
        }
    });
    
    $('a.down').click(function () {
        var tr = $(this).closest('tr');
        var value = get_value(tr);
        var group = map[value];
        var next = group[group.length - 1].next('tr');
        if (next.length == 0)
            return;
        var next_value = get_value(next);
        var next_group = map[next_value];
        for (var i = group.length - 1; i >= 0; i--) {
            group[i].detach();
            next_group[next_group.length - 1].after(group[i]);
        }
    });
});