0

データテーブル グリッドを使用する asp.net mvc アプリケーションを構築しています。グリッドを表示します。グリッドに、rowclick イベントを追加しました。

function CreateRowClickHandler() {
var table = $('#table').dataTable();
$("#table > tbody").on('click', 'tr', function(e) {
    e.preventDefault();
    var index = $('#table').data('id-index');
    var id = table.fnGetData($(this)[0])[index];

    var url = $('#table').data('rowclick-url');
    url += "/" + id;
    $().loadPartial(url);

  });

}

loadpartial 関数は mvc アクションをロードします。

 $.fn.loadPartial = function (url, callback) {
    var container = ($(this).length == 0) ? ($("#jqcontainer")) : ($(this));
    container.load(url, function (responseText, textStatus, XMLHttpRequest) {

        if (XMLHttpRequest.status == 403) {
            $('body').notifyBox({
                message: 'Unauthorized access! Call support for help!'
            });
        }
        if (XMLHttpRequest.status == 500) {
            $('body').notifyBox({
                message: 'The process failed for unknown reasons! Call support for help!'
            });
        }
        if ($.isFunction(callback)) callback(responseText, textStatus, XMLHttpRequest);
    });
};

Chrome デバッガーに入ると、最初にページをロードするときに次のように呼び出すことができます。

  $('#table').dataTable().fnReloadAjax();

これは何度でも繰り返すことができます。サーバーからデータをリロードします。行の1つをクリックしたとき、およびモーダルウィンドウを閉じた後、以下のコードで:

                    $('#partialview').dialog("close");

Chrome デバッガーで fnreloadajax を実行すると、次のエラーが表示されます。

TypeError: Object [object Object] has no method 'fnReloadAjax'

モデル ウィンドウを閉じた後、オブジェクトはもう DataTables グリッドではないように見えますが、なぜこれが起こるのかわかりません。誰かヒントを教えてくれませんか?

4

1 に答える 1

0

完全なページを返しました。これにより、読み込まれた jquery の新しいコピーが作成されました。Wirey は私がこれを理解するのを助けました。コントローラーから部分的なビューのみを返した後、問題は解決しました。

于 2013-05-01T16:31:36.407 に答える