データテーブル グリッドを使用する 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 グリッドではないように見えますが、なぜこれが起こるのかわかりません。誰かヒントを教えてくれませんか?