如何按单元格值的子字符串排序?

Posted

技术标签:

【中文标题】如何按单元格值的子字符串排序?【英文标题】:How can I order by a substring of the cell value? 【发布时间】:2019-10-22 23:51:10 【问题描述】:

我在我的一张表上使用jQuery Datatables 以便于过滤、搜索和排序。但是,我想根据姓氏在页面加载时对我的行进行排序。棘手的部分是,包含姓氏的单元格包含全名。

HTML

<table id="Test-Table" class="table table-bordered table-hover">
  <thead>
    <tr>
      <th>Name</th>
      <th>Age</th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>John Doe</td>
      <td>20</td>
    </tr>
    <tr>
      <td>Jane Doe</td>
      <td>29</td>
    </tr>
    <tr>
      <td>Greg Maddux</td>
      <td>51</td>
    </tr>
    <tr>
      <td>David Goggins</td>
      <td>45</td>
    </tr>
    <tr>
      <td>Walter Bond</td>
      <td>60</td>
    </tr>
  </tbody>
</table>

jQuery

$(document).ready(function()
    $("#Test-Table").DataTable();
);

这是我的Fiddle。

我假设我会以某种方式拆分姓名,然后按姓氏排序,如果两个人的姓氏相同,则按名字排序?

任何有关如何完成此操作的帮助将不胜感激。

【问题讨论】:

可能的骗子:***.com/questions/32621373/…, ***.com/questions/10452305/… 【参考方案1】:

您可以使用data-order/data-sort 属性...

$(document).ready(function()
    $("#Test-Table").DataTable();
);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdn.datatables.net/v/dt/dt-1.10.18/datatables.min.js"></script>
<link href="https://cdn.datatables.net/v/dt/dt-1.10.18/datatables.min.css" rel="stylesheet"/>
<table id="Test-Table" class="table table-bordered table-hover">
  <thead>
    <tr>
      <th>Name</th>
      <th>Age</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td data-order="Doe John">John Doe</td>
      <td>20</td>
    </tr>
    <tr>
      <td data-order="Doe Jane">Jane Doe</td>
      <td>29</td>
    </tr>
    <tr>
      <td data-order="Maddux Greg">Greg Maddux</td>
      <td>51</td>
    </tr>
    <tr>
      <td data-order="Goggins David">David Goggins</td>
      <td>45</td>
    </tr>
    <tr>
      <td data-order="Bond Walter">Walter Bond</td>
      <td>60</td>
    </tr>
  </tbody>
</table>

【讨论】:

明白了。我可以这样做,但这只是一个示例表。真正的表格...表格的主体是从foreach 循环生成的..所以我必须使用 C# 将姓氏放在名字之前,因为我的视图使用的是剃须刀..那么我将如何使用 c#把姓放在第一个前面?我假设使用.split? 因此我认为全名存储为单个变量?在这种情况下,首先这本身听起来像是糟糕的设计……但是,是的,您需要以某种方式拆分它。我对剃须刀一无所知,所以不知道它是否提供任何功能......否则我会考虑编写一个受保护的函数来获取名称并返回可排序的名称,这样你就可以拆分并检查至少有 2零件等 这需要手动插入反向名称值,对吗?还有更好的方法。 @isherwood - 请成为我的客人并提交不同的答案 我在上面的评论中发布了两个。

以上是关于如何按单元格值的子字符串排序?的主要内容,如果未能解决你的问题,请参考以下文章

Map的golang概念用法及如何把EXCEL各个工作表的单元格值按多维组合输出到Map

如何对EXCEL列进行指定顺序排列?

如何在列中搜索多个字符串并更新单元格值?

如何在asp.net的GridView中按列名而不是按索引获取单元格值

如何实现基于连字符分隔的子串的多个自定义排序规则?

使用 C++ 的排序对引用的子字符串进行排序?