2

ASP.NET で Jquery Datatable と UpdatePanel (scriptManager) を使用しています。次の以下のエラーがあります。

DataTables 警告 (テーブル ID = 'tbVerificationApplicant'): DataTable を再初期化できません。

このテーブルの Datatables オブジェクトを取得するには、引数を渡さないか、bRetrieve と bDestroy のドキュメントを参照してください

これは、テーブルを作成するための Jquery ファイルです。

function DatatablesExec() { 
        $('#tbVerificationApplicant').dataTable({
            'bProcessing': true,
            'bServerSide': true,
            "sPaginationType": "full_numbers",
            'sAjaxSource': 'listVerificationData.ashx?ddlStatusValue=' + $("#ddlStatusClient option:selected").text(),
            "fnDrawCallback": function () {
                $('#tbVerificationApplicant tbody tr').click(function () {
                    var hRef = $("td:eq(0)", this).text();
                    document.location.href = 'frm_VerifyIdentity.aspx?ID=' + hRef;
                });
            }
    });
}

$(document).ready(function () {
    /* Initialise the DataTable */

        DatatablesExec()

});

ただし、ドロップダウンリストを変更した後にテーブルが消えるのを避けるために、Web フォームの分離コードに次のコードを追加しました。

protected void Page_Prerender(object sender, EventArgs e)
{
    {
        ScriptManager.RegisterStartupScript(this, this.GetType(), "_function_dummyname", "<script type='text/javascript'>DatatablesExec();</script>", false);
    }
}

うまく機能していますが、最初にこのエラーのポップアップが表示されます。

これは Web フォームの一部です。

<asp:UpdatePanel ID="UpdatePanel1" runat="server">
    <Triggers>
        <asp:AsyncPostBackTrigger ControlID="ddlStatusClient" EventName="SelectedIndexChanged" />
    </Triggers>
    <ContentTemplate>
        <table id="tbVerificationApplicant" class="display">
                <thead>
4

6 に答える 6

5

これも私を夢中にさせたので、自分に合った解決策を追加すると思いました。

テーブルの一部の要素で応答する Ajax リクエストを送信している場合は、テーブル構成で設定する必要があります

bRetrieve: true 

SUVASH のブログでは次のように説明されています。

別のシナリオがあります。応答が同じテンプレート内の同じテーブルにアクセスする複数の ajax 要求を送信すると、エラーも発生します。この場合、どの応答が最初に来るかわからないため、fnDestroy メソッドは正しく機能しません。その後、データテーブルの設定で bRetrieve TRUE を設定する必要があります。それだけです。

于 2014-09-24T11:34:12.503 に答える
3

ページが読み込まれると、関数DatatablesExec()が 2 回実行されます。コード ビハインドPage_Prerenderで 1 回、$(document).ready関数で 1 回です。

このエラーは、実際には既にデータテーブルであるテーブルをデータテーブルにしようとしていることを意味します。

ここで設計を再考する必要があります。

PreRender で RegisterStartupScript が必要なのはなぜですか?

2 つのうちのいずれかを削除してみてDatatablesExec()ください。問題は解消されます。

于 2013-08-28T14:22:43.283 に答える
1

みなさん、こんにちは。この場合に何かを追加したいだけです。私もそれを経験し、この問題の解決策を探していますが、bDestroyを使用するのではなく、答えを見つけましたこれ

$('#dtAddParticipantList').dataTable 

他のテーブルもこれを使用します

$('#dtAddParticipantList').dataTable 

違うものに変える

var oTable = $('#dtParticipantList').dataTable({ 
 //some code stuffs
});
于 2014-05-16T05:52:35.740 に答える
1

私もこの問題を抱えていましたが、これを解決するためのさまざまなスレッドを読みましたが、うまくいきませんでした。しかし、最後にjqueryウィンドウロードメソッドでデータテーブルを初期化しました

$(window).load(function(){
$("#example").DataTable();
}); 

jquery のドキュメント準備完了メソッドの代わりに

$(document).ready(function(){
$("#example").DataTable();
});

そして奇跡が起こります:) ..それがあなたを助けることを願っています.Thanks

于 2014-05-10T10:19:57.550 に答える