2017-08-10 237 views
0

我已將我的解決方案升級到最新版本的ASPNETZERO V4.x.我有兩個模板MVC5和.NET Core版本。我進行了升級,因爲我非常喜歡使用DataTables插件,並已在我的ASPNETZERO解決方案現有版本中的所有代碼中實施。 看來,ASPNETZERO已經實現了「定製」版本的DataTables。現在我的升級之前的Datatables正在打破。 我已將作爲Metronic源代碼中示例提供的可編輯數據表代碼複製到我的ASPNETZERO解決方案中,並且工作完美。現在在V4.X升級之後,它破壞了這段代碼。當我查看Tenant,Roles和Users等頁面的下載解決方案中DataTables使用的腳本時,我看到了Datatables文檔中不存在的選項應用於Datatables初始化。例如,Datatables.net文檔中找不到初始化屬性「listAction」。ASPNETZERO - Datatables問題

 var dataTable = _$usersTable.DataTable({ 
     listAction: { 
      ajaxFunction: _userService.getUsers, 
      inputFilter: function() { 
       return { 
        filter: $('#UsersTableFilter').val(), 
        permission: $("#PermissionSelectionCombo").val(), 
        role: $("#RoleSelectionCombo").val() 
       }; 
      } 
     }, 

以上讓我相信這是ASPNETZERO團隊的「定製」數據表版本。我沒有看到關於如何使用這個「自定義」版本的任何文檔,並且來自DataTables.net站點的文檔與我在提供的解決方案中看到的代碼不匹配。有其他人遇到過這樣的問題嗎? 是否有關於「自定義」數據實現的文檔?

@Alper我說硬編碼我的意思是這樣的:

 <table class="table table-bordered table-striped table-hover" id="tblRel"> 
     <thead> 
      <tr> 
       <td>Version</td> 
       <td>Publish Date MST</td> 
       <td>Publish Date <b>GMT</b></td> 
       <td>Release notes</td> 
      </tr> 
     </thead> 
     <tbody> 
      <tr class="danger"> 
       <td>1.0.0.5</td> 
       <td></td> 
       <td></td> 
       <td> 
        <ul> 
         <li>Updated tooltip for resident funding icon on resident index page.</li> 
         <li>Contacts - Added additional column for contact name and emergency contact flag</li> 
         <li>HR - Jobcode - Band level is no longer a required field</li> 
        </ul> 
       </td> 
      </tr> 
      <tr> 
     </tbody> 
    </table> 

而且這樣的事情:

<table class="table table-striped table-hover table-bordered" id="Contacts"> 
         <thead> 
          <tr> 
           <th>@L("ContactName")</th> 
           <th>@L("ContactType")</th> 
           <th>@L("ContactCategory")</th> 
           <th>@L("Email")</th> 
           <th>@L("Phone")</th> 
           <th>@L("DefaultYN")</th> 
           <th>@L("EmergencyYN")</th> 
           <th>@L("Edit")</th> 
          </tr> 
         </thead> 
         <tbody> 
          @if (Model.Company.Contacts.Count != 0) 
          { 
           foreach (var ctc in Model.Company.Contacts) 
           { 
            <tr> 
             <td>@(ctc.Contact.ContactName)</td> 
             <td>@(ctc.Contact.TypeName)</td> 
             <td>@(ctc.Contact.CategoryName)</td> 
             <td>@(ctc.Contact.Email)</td> 
             <td>@(ctc.Contact.Phone)</td> 
             @if (ctc.Contact.DefaultYN) 
             { 
              <td>@L("Yes")</td> 
             } 
             else 
             { 
              <td>@L("No")</td> 
             } 
             @if (ctc.Contact.EmergencyContactYN) 
             { 
              <td>@L("Yes")</td> 
             } 
             else 
             { 
              <td>@L("No")</td> 
             } 
             <td> 
              <a class="edit btn btn-xs btn-primary" href="javascript:;">@L("Edit") </a> 
             </td> 
            </tr> 
           } 
          } 
         </tbody> 
        </table> 

在上面的兩個例子表數據不被取數據表代碼。我在這些表上使用的簡單初始化不再適用於V4.X.

回答

1

該項目中使用的Datatables版本爲1.10.12。 這不是一個完全定製的版本,但添加了新功能而沒有破壞現有功能。您可以忽略自定義函數並使用基於1.10.12版本的所有內容。

它是包含在文件名datatables.all.min.js中的所有插件的組合版本。 這個文件由Metronic Team創建。和Aspnet Zero Team被用來與Metronic Theme完全兼容的整合。

您可以在datatables.all.min.js中看到包含的庫;

  • JSZip 2.5.0
  • pdfmake 0.1.18
  • 數據表1.10.12
  • 按鈕1.2.1
  • 列知名度1.2.1
  • Flash導出1.2.1
  • HTML5導出1.2.1
  • 打印視圖1.2.1
  • Co lReorder 1.3.2
  • FixedColumns 3.2.2
  • FixedHeader 3.1。2
  • 響應2.1.0
  • RowReorder 1.1.2
  • 滾輪1.4.2
  • 選擇1.2.0

ASPNET零隊自定義是;

在以下文件Overridding默認:

\wwwroot\Common\Scripts\Datatables\datatables.defaults.js 

增加 「的listAction」 功能,使適配器從ABP的WebAPI服務中獲取數據。你可以檢查datatables.ajax.js文件來看看事情是如何完成的。

\wwwroot\Common\Scripts\Datatables\datatables.ajax.js 

增加了「rowAction」來創建動作按鈕。你可以檢查datatables.record-actions.js文件來看看事情是如何完成的。

\wwwroot\Common\Scripts\Datatables\datatables.record-actions.js 

插件位於:

wwwroot/metronic/assets/global/plugins/datatables/datatables.all.min.js 

所有的翻譯文件都位於這裏:

wwwroot\Common\Scripts\Datatables\Translations\ 

本地化(基於用戶的文化)都是在這裏完成:

\wwwroot\Common\Scripts\Datatables\datatables.defaults.js 
+0

感謝所有這些信息!作爲最後一個版本的一部分,您應該將其放入文檔中。一個問題,我如何初始化靜態數據表。我在頁面上有一個「硬編碼」的HTML表格,並且使用$(「#MyTable).DataTable()使其成爲」Datatable「。這似乎不適用於V4.X? – exlnt

+0

什麼是你的意思是硬編碼表嗎?你能給我們提供一些代碼嗎 –

+0

我在上面的原始問題中添加了示例代碼 – exlnt

0

我可以證實t註釋掉所有的AspNetZero對DataTables的自定義更改將允許靜態HTML表格正確呈現。隨着地方的變化,Loading...屏幕卡住了。

雖然我深深的喜歡AspNetZero,這是我第二次發現了一個自定義的改變,打破它的默認行爲而導致的故障排除的幾個小時(其他變化是jquery.validation其中默認.Validate()被重寫這樣一個庫它不再通過表單提交驗證)。

我不介意修改 - 如果他們記錄在

具體來說:datatable.ajax.js打破了數據表的默認行爲。它分配一個ajax函數,然後阻止默認靜態HTML行爲的工作。要解決你的代碼,而不必刪除AspNetZero默認的文件...請執行以下操作:

$('#example').dataTable({ 
    ajax: null 
}); 
0

使得Ajax請求空你的數據表的腳本。

$('#LeaveTable').dataTable({ 
    ajax: null 
});