我有一个非常简单的数据表设置,有几个字段和几行数据。列排序已设置。我有一个基本上是“客户名称”的领域,并且它的名字和最后都是。我想知道是否有方法来改变数据表排序方法,以便根据同一列中的姓氏(或最后一个词)进行排序。如果名字和姓氏在同一字段数据表中,按姓氏排序
回答
更新
首先答案是通用的排序功能,我莫名其妙地错过了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. 将单个字段分隔成名称,姓氏和姓氏
- 2. SQL Server - 在名字和姓氏字段中搜索姓名
- 3. MySQL如何在全名字段中按姓氏排序?
- 4. 单名文本框中的名字和姓氏的姓氏
- 5. 好友按姓按姓氏排序?
- 6. 从表格中提取姓氏,姓氏和姓氏
- 7. 按姓氏和姓氏排序,然后显示给用户
- 8. MVC User.Identity.Name,姓氏和名字
- 9. 从姓氏和姓氏字段中获取最短的唯一名称
- 10. 按姓氏排序结构
- 11. 将姓名字段拆分成姓氏和名字
- 12. 如何按姓氏排序姓名列表
- 13. 在Python中解析姓氏从姓名中解析姓氏
- 14. 看在excel上按名字和姓氏排序
- 15. 如何在moodle注册表单中将“姓氏”更改为“姓氏”字段
- 16. 串联名字和姓氏作为名称,然后ommit Firtname和姓氏在SSIS
- 17. 在单独的列中搜索名字或姓氏在MySQL数据库中的名字和姓氏
- 18. 在Outlook和WindowsMobile中更改名字/姓氏排序顺序
- 19. 排列数据中的名字和姓氏
- 20. 解析姓名为第一名字和姓氏 - LINQ到实体
- 21. 分割名称为名字和姓氏
- 22. 连接名字和姓氏形成一个全名字段
- 23. 如何在Excel中创建姓氏,姓氏的帐户名称
- 24. Angular - 如何按姓氏排序
- 25. 姓氏和姓氏未保存在自定义Django_Registration表单中
- 26. 在一个textview数据绑定中的名字和姓氏android
- 27. 名姓到姓氏,名字在Excel电子表格
- 28. WordPress的获取名字和姓氏
- 29. 发现用户的名字和姓氏?
- 30. NSPredicate检测名字和姓氏
[为jQuery数据表实现自定义sSortType和排序函数]可能的重复(http://stackoverflow.com/questions/20759814/implementing-a-custom-ssorttype-and-sort-function-for-jquery-datatables ) – mascoj