我有一個非常簡單的數據表設置,有幾個字段和幾行數據。列排序已設置。我有一個基本上是「客戶名稱」的領域,並且它的名字和最後都是。我想知道是否有方法來改變數據表排序方法,以便根據同一列中的姓氏(或最後一個詞)進行排序。如果名字和姓氏在同一字段數據表中,按姓氏排序
回答
更新
首先答案是通用的排序功能,我莫名其妙地錯過了datatables
標籤。更新的答案是datatables
。
Like @Stephen P表示在評論中可以配置datatables
對隱藏列進行排序。所以你可以只添加姓氏的隱藏列,然後按第二列(姓氏)設置第一列(全名)的順序。 我已經使用js從全名生成姓氏列,但如果你有很多數據,你應該在服務器端做。
$(document).ready(function() {
// find full name, get surname and add it to table as second column
$('#example td:first-child').each(function() {
$('<td>'+$(this).text().split(' ')[1]+'</td>').insertAfter($(this));
});
// configure sorting
$('#example').DataTable({
'columnDefs': [
{'orderData':[1], 'targets': [0]},
{
'targets': [1],
'visible': false,
'searchable': false
},
],
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdn.datatables.net/1.10.12/js/jquery.dataTables.min.js"></script>
<link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/1.10.12/css/jquery.dataTables.min.css">
<table id="example" class="display" width="100%" cellspacing="0">
<thead>
<tr>
<th>Name</th>
<th>Surname</th>
<th>Position</th>
<th>Office</th>
<th>Age</th>
<th>Start date</th>
<th>Salary</th>
</tr>
</thead>
<tfoot>
<tr>
<th>Name</th>
<th>Surname</th>
<th>Position</th>
<th>Office</th>
<th>Age</th>
<th>Start date</th>
<th>Salary</th>
</tr>
</tfoot>
<tbody>
<tr>
<td>Tiger Nixon</td>
<td>System Architect</td>
<td>Edinburgh</td>
<td>61</td>
<td>2011/04/25</td>
<td>$320,800</td>
</tr>
<tr>
<td>Garrett Winters</td>
<td>Accountant</td>
<td>Tokyo</td>
<td>63</td>
<td>2011/07/25</td>
<td>$170,750</td>
</tr>
<tr>
<td>Ashton Cox</td>
<td>Junior Technical Author</td>
<td>San Francisco</td>
<td>66</td>
<td>2009/01/12</td>
<td>$86,000</td>
</tr>
<tr>
<td>Cedric Kelly</td>
<td>Senior Javascript Developer</td>
<td>Edinburgh</td>
<td>22</td>
<td>2012/03/29</td>
<td>$433,060</td>
</tr>
<tr>
<td>Airi Satou</td>
<td>Accountant</td>
<td>Tokyo</td>
<td>33</td>
<td>2008/11/28</td>
<td>$162,700</td>
</tr>
<tr>
<td>Brielle Williamson</td>
<td>Integration Specialist</td>
<td>New York</td>
<td>61</td>
<td>2012/12/02</td>
<td>$372,000</td>
</tr>
<tr>
<td>Herrod Chandler</td>
<td>Sales Assistant</td>
<td>San Francisco</td>
<td>59</td>
<td>2012/08/06</td>
<td>$137,500</td>
</tr>
</tbody>
</table>
雖然您對自定義排序功能是正確的,但這可能是一種解決方法,我謹慎反對將空間名稱拆分,這會在某些情況下導致錯誤結果。 DataTables允許您將任意數據附加到行,並且即使它沒有顯示,您也可以對其進行排序,因此請單獨附上實際的姓氏。或者,您實際上可以分別傳遞姓名和姓氏,然後使用自定義渲染器將它們粘貼在一起以顯示在單個列中。 –
@StephenP,你應該添加你的評論作爲答案。 –
@ Gyrocode.com - 是的,謝謝,已經做到了。 –
如果你想處理這個在DB層,你將需要查詢的排序依據子句中執行子串的方法,語法會有所不同,你使用的是什麼DB 。
MSSQL:
ORDER BY SUBSTRING(COLUMN, CHARINDEX(' ', COLUMN), 50);
MYSQL:
ORDER BY Substring(COLUMN, Position(' ' IN COLUMN), 50);
當你說得對,自定義排序功能,這可能是要走的路,我告誡不要對空間拆分的名字,在某些情況下會導致錯誤的結果。
DataTables允許您將任意數據附加到行,並且即使它未顯示,也可以按此排序,因此請單獨附上實際的姓氏。或者,您實際上可以分別傳遞姓名和姓氏,然後使用自定義渲染器將它們粘貼在一起以顯示在單個列中。
另一個簡單的建議是,當名字姓氏需要單列時,但您想對姓氏排序:在WordPress或其他php應用程序中,將「姓名」列設置爲:
<td>last-name first-name last-name</td>.
然後,該列將按姓氏排序。
然後,把最後的名字的第一個實例爲
<span class="display-none">last-name</span>.
它是一個黑客?也許,但這個問題的解決方案很快。
- 1. 名字和姓氏中的Split姓氏
- 2. 按姓氏和名字排序c#
- 3. 更改姓氏,名字到姓氏,FirstInitial
- 4. 僅提取姓氏名字,姓氏
- 5. 將單個字段分隔成名稱,姓氏和姓氏
- 6. SQL Server - 在名字和姓氏字段中搜索姓名
- 7. MySQL如何在全名字段中按姓氏排序?
- 8. 用名字和姓氏查找姓名
- 9. 單名文本框中的名字和姓氏的姓氏
- 10. 好友按姓按姓氏排序?
- 11. 從表格中提取姓氏,姓氏和姓氏
- 12. 按姓氏和姓氏排序,然後顯示給用戶
- 13. 提取名字和姓氏
- 14. MVC User.Identity.Name,姓氏和名字
- 15. 搜索名字和姓氏
- 16. 如何在搜索欄中按名字和姓氏排序 - Sqlite
- 17. :姓名,姓氏:姓名
- 18. OpsHub - 用戶映射 - 名字姓氏vs(Azure)姓氏,名字
- 19. 按姓氏排序名稱數組?
- 20. 從姓氏和姓氏字段中獲取最短的唯一名稱
- 21. 按字母順序排列的姓氏
- 22. 在sqlite中分割姓氏和姓氏
- 23. Javascript Array按姓氏排序
- 24. 按姓氏排序結構
- 25. 「姓氏,名字」 - >「名字姓氏」中的序列化字符串
- 26. 將姓名字段拆分成姓氏和名字
- 27. 在Java中按姓氏和名字排序對象的ArrayList
- 28. 如何按姓氏排序姓名列表
- 29. 在Python中解析姓氏從姓名中解析姓氏
- 30. 排到姓氏
[爲jQuery數據表實現自定義sSortType和排序函數]可能的重複(http://stackoverflow.com/questions/20759814/implementing-a-custom-ssorttype-and-sort-function-for-jquery-datatables ) – mascoj