2017-10-09 16 views
1
function SearchUser(url, pageIndex) { 

     var table; 

      table = $('#UsersTable').DataTable({ 
       serverSide: true, 
       retrieve:true, 
       ajax: { 
        url: url, 
        type: "POST", 
        data: { username: $('#Username').val(), email: $('#Email').val(), companyID: $('#LifeCompanies').val(), page: pageIndex, isLocked: $('#Locked').is(':checked') } 
       }, 
       columns: [ 
        { "data": "UserId" }, 
        { "data": "Username" }, 
        { "data": "Email" }, 
        { "data": "IsLockedOut" }, 
        { 
         "render": function (data, type, full, meta) { 
          return '<span>wahoo</span>'; 
         } 
        } 
       ] 
      }); 
       } 

<div id="search"> 
    <h3>Search:</h3> 
    @using (Html.BeginForm("Search","Admin")) 
    { 
     <div> 

      <table width="500px"> 
       <thead> 
        <tr> 
         <td>Username:</td> 
         <td>@Html.TextBox("Username")</td> 
        </tr> 
        <tr> 
         <td>Email:</td> 
         <td>@Html.TextBox("Email")</td> 
        </tr> 
        <tr> 
         <td>Locked:</td> 
         <td>@Html.CheckBox("Locked")</td> 
        </tr> 
        <tr> 
         <td colspan="2"> 
          <div id="searchForm"> 
           @Html.Partial("SearchBuild") 
          </div> 
         </td> 
        </tr> 
        <tr> 
         <td colspan="2"><input type="button" value="Search" onclick="SearchUser('/UserManagement/admin/Search',0)"/></td> 
        </tr> 
       </thead> 
      </table> 
     </div> 
    } 
</div> 

こんにちは、上記のコードはdatatables jqueryプラグインを使用しています。初めてデータを扱う場合のみ

私はその機能を初めて使用するとうまくいくようです。 2回目は、JavaScriptをヒットするように見えますが、私のMVCコントローラからデータを取得することはありません。

しかし、私はそれを完全に正常に動作します。

リトリーブまたは破棄を使用しないと、「can not reinitialise table」エラーが発生します。

この機能は、クリックするだけで呼び出されます。

enter image description here

+0

あなたの 'document.ready'コードも表示します –

+0

どのように' SearchUser'関数を呼び出していますか? –

答えて

0

あなたは、テーブルを初期化し、別にそれをリロードするようにコードを変更する必要があります。

また、テーブルを破棄して再作成しない限り、APIを使用して初期化オプションを変更することはできません。

変数pageIndexを渡す別の方法が必要です。たとえば、idがPageIndexの隠し入力を作成し、そこから値を設定および取得できます。例えば

function initTable(url) { 
    var table; 

    table = $('#UsersTable').DataTable({ 
     serverSide: true, 
     retrieve:true, 
     ajax: { 
      url: url, 
      type: "POST", 
      data: { 
       username: $('#Username').val(), 
       email: $('#Email').val(), 
       companyID: $('#LifeCompanies').val(), 
       page: $('#PageIndex').val(), 
       isLocked: $('#Locked').is(':checked') 
      } 
     }, 
     columns: [ 
      { "data": "UserId" }, 
      { "data": "Username" }, 
      { "data": "Email" }, 
      { "data": "IsLockedOut" }, 
      { 
       "render": function (data, type, full, meta) { 
        return '<span>wahoo</span>'; 
       } 
      } 
     ] 
    }); 
} 

再びあなたを検索するにはちょうど$('#UsersTable').DataTable().ajax.reload() APIメソッドを呼び出す必要があります。

URLが検索の間に変更される場合は、代わりに$('#UsersTable').DataTable().ajax.url(newurl).load() APIメソッドを使用してください。

関連する問題