2017-10-09 5 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> 

Hallo der Code oben verwendet das Databases jquery Plugin.Datat nur zum ersten Mal arbeiten

Es scheint nur zum ersten Mal zu funktionieren, dass ich diese Funktion verwende. Beim zweiten Mal scheint es das Javascript zu treffen, repliziert jedoch niemals irgendwelche Daten von meinem MVC-Controller.

Allerdings, wenn ich zerstören statt abrufen, funktioniert es völlig in Ordnung.

Wenn ich nicht abrufen oder zerstören, bekomme ich den Fehler "Kann Tabelle nicht reinitialisieren".

Diese Funktion wird nur durch einen Klick auf die Schaltfläche aufgerufen.

enter image description here

+0

zeigen Sie auch Ihren 'document.ready' Code an –

+0

Wie rufen Sie die Funktion' SearchUser' auf? –

Antwort

0

Sie müssen Ihren Code ändern, um Ihre Tabelle zu initialisieren und separat neu zu laden.

Es ist auch nicht möglich, die Initialisierungsoptionen über die API zu ändern, es sei denn, Sie löschen und erstellen die Tabelle neu.

Sie benötigen eine andere Möglichkeit, pageIndex Variable zu übergeben. Sie können z. B. eine versteckte Eingabe mit der ID PageIndex erstellen und den Wert von dort festlegen und abrufen.

Zum Beispiel:

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>'; 
       } 
      } 
     ] 
    }); 
} 

wieder zu suchen, brauchen Sie nur $('#UsersTable').DataTable().ajax.reload() API-Methode aufzurufen.

Wenn sich die URL zwischen den Suchanfragen ändert, verwenden Sie stattdessen die API-Methode $('#UsersTable').DataTable().ajax.url(newurl).load().

Verwandte Themen