2016-05-18 19 views
0

mvcのjQuery Datatablesプラグインに問題があります。ASP.NET MVCの部分表示jqueryデータテーブル

私はajax-form whitchを使ってビューを表示しています。問題は、私がメインビューでスクリプト

$(document).ready(function() { 
    $('#productsTable').DataTable(); 
}); 

を置けば、それは部分図の負荷ので、動作しないことになるということです

ビュー

... 
    @using (Ajax.BeginForm("MyAction", "MyController", new AjaxOptions { UpdateTargetId = "myList" }, new { @id = "searchForm", @class = "form-horizontal" })) 
    { 
           // some html 
    } 
    <div id="myList"> 

    </div> 

テーブル

@model IEnumerable<Item> 
<table id="productsTable"> 
    <thead> 
    <tr> 
     <th>Name</th> 
     <th>Description</th> 
     <th></th> 
    </tr> 
    </thead> 
    <tbody> 
    @foreach (var item in Model) 
    { 
     <tr> 
      <td>@Html.DisplayFor(x => item.Name)</td> 
      <td>@Html.DisplayFor(x => item.Description)</td> 
      <td> 
       <div> 
        <a href="@Url.Action("Edit", "MyController", new {id =   item.Id})"> 
        </a> 
        <a href="@Url.Action("Delete", "MyController", new {id = item.Id})" > 
        </a> 
       </div> 
      </td> 
     </tr> 
    } 
    </tbody> 
</table> 

パーシャルビューajaxで私はこのスクリプトを部分的なビューに入れておくと、遅れて作業するでしょう。最初のユーザーは単純なhtmlテーブルを参照し、datatableに変換します。

データテーブルでロードパーシャルビューを修正する方法はありますか? アドバイスをいただきありがとうございます。

+0

どうかのDataTable(); '$(document).ready(function(){}'の外に? – SeM

+0

あなたは '$( '#productsTable')を置きます。同じ問題 - 単純なhtmlテーブルを表示し、データテーブルに変換するより – user3609841

+0

@ {Html.RenderAction( "MyAction"、 "MyController");}を使用して部分ビューをレンダリングしようとしています – SeM

答えて

1

クライアントでのみ実行できるため、データテーブルを「プリロードする」ためにサーバー上で何も行うことはできません。 DataTable()を実行するには、ブラウザを変換する前にjQueryとHTMLの両方をロードする必要があります。そのため、醜い「点滅」があります。

すべてがロードされ、DataTable()が実行された後、私は。)left: -3000em;または類似で例えば(CSS position:absolute;visibility:hidden;(ないdisplay:none;とdiv要素の中に(必要であればアヤックスで)あなたがそれをロード示唆して画面からどこかに位置づけます、あなたはそれがJSとなると正常に戻ってpositionvisibilityを切り替える必要がある場所にdiv要素を移動することができます。

をしたい場合でも、甘いフェードイン効果でこれを行うことができます。:)