【问题标题】:DataTables row().remove() call not respondingDataTables row().remove() 调用没有响应
【发布时间】:2019-07-02 20:14:55
【问题描述】:

我有一个从服务器端运行的 DataTable(使用 ajax 管道)。显示器很好,按预期工作。在表格的最后一列中,有一个按钮,单击该按钮将删除相应的行。此功能失败。

https://datatables.net/examples/api/select_single_row.html 中所述,我还使用表外的单个删除按钮进行了测试,但这也不起作用。仅在这种情况下,选定的行才会被取消选择。

亮点

  • onclick 事件中的 Javascript 警报正在工作
  • tr 标签被正确获取
  • table.row().remove().draw() 不工作

示例表数据:

<tbody>
<tr role="row" class="odd">
    <td>1</td>
    <td>গীতগোবিন্দ</td>
    <td>Jaydev Goswami</td>
    <td>1100</td>
    <td><textarea class="senedtxt rdonly" onfocus="javascript: save_sentence(this, 26869, 13, false);" onblur="javascript: save_sentence(this, 26869, 13, true);">করেন যতন মোর রাখিবারে মন, তাঁহার সে খেলা কলি-কলুষ-নাশন</textarea></td>
    <td><button class="jqbtn" onclick="javascript: return delocc(this,1);">delete</button></td>
</tr>
<tr role="row" class="even">
    <td>2</td>
    <td>তিতাস একটি নদীর নাম</td>
    <td>Adwaita Mallabarman</td>
    <td>1930</td>
    <td><textarea class="senedtxt rdonly" onfocus="javascript: save_sentence(this, 11973, 7, false);" onblur="javascript: save_sentence(this, 11973, 7, true);">কোনো নৌকোয় মুর্শিদা বাউল গান হইতেছেঃ- এলাহির দরিয়ার মাঝে নিরাঞ্জনের খেলা, শিল পাথর ভাসিয়া গেল শুকনায় ডুবল ভেলা</textarea></td>
    <td><button class="jqbtn" onclick="javascript: return delocc(this, 2);">delete</button></td>
</tr>
</tbody>

Javascript:

var stable;
$crp(document).ready(function() {
    stable= $crp("#ssenttab").DataTable({
        "processing": true, "serverSide": true, "responsive": dresp, "jQueryUI": true, "searching":false, "order": [],
        "lengthMenu": [[5, 10, 15, 25, 50], [5, 10, 15, 25, 50]],
        "searchDelay": 1000,
        "columns": [
            {"data": "serial", "orderable": false},
            {"data": "title", "orderable": false},
            {"data": "authors", "orderable": false},
            {"data": "year"},
            {"data": "sentence", "orderable": false},
            {"data": "action", "orderable": false}
        ],
            "ajax": $crp.fn.dataTable.pipeline({
                "url": LexObj.auri+'panel/ajax/SpeechSentenceJSON',
                "type": "POST",
                "data": function(d){d.totalrec= snum; d.pskey=pskey;},
        }),
        "drawCallback": function(settings){
        $crp(".jqbtn").button();
        }
    });
});

function delocc(delobj, spskey)
{
    if(spskey>0)
    {
        if(confirm("Are you sure?"))
        {
            $crp.ajax({
                'url': LexObj.auri+'/panel/ajax/SpeechSentDelete',
                'data': {'dspsid': spskey},
                'type': 'POST',
                'dataType': 'jsonp',
                'success': function(result){
                    if(result.status>0)
                    {
                        var partr= $crp(delobj).parents('tr');
                        alert(partr.attr('class'); // works and ouputs either 'odd' or 'even'
                        stable.row(partr).remove().draw(false); // does not work
                        alert('ok'); //works
                    }
                }
            });
        }
    }
    return false;
}

任何人都可以抛出一些光吗?提前致谢!!

【问题讨论】:

    标签: javascript jquery datatables


    【解决方案1】:

    由于我使用的是pipelining,所以我需要在 .draw() 事件之前清除管道。

    行:

    stable.rows(partr).remove().draw(false);
    

    应该是

    stable.rows(partr).remove().clearPipeline().draw(false);
    

    这解决了问题。

    【讨论】:

      猜你喜欢
      • 2015-10-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-11
      • 2020-09-29
      • 2019-08-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多