简体   繁体   English

按降序对HTML表进行排序

[英]Sort A HTML Table In Descending Order

I have a HTML table which reads data from my DB but the enteries in the DB are not in order, how do i order my 'Stock' column so that they are in alphibetical order (AZ) 我有一个HTML表,该表从我的数据库中读取数据,但是数据库中的输入项不按顺序排列,我该如何对“库存”列进行排序,以使它们按字母顺序(AZ)

My HTML for my table is below 我表格的HTML如下

 <table class="table table-striped">
      <tr>
          <th style="padding-right: 10px;">Stock</th>
          <th style="width: 7%; padding-right: 10px;">SEDOL</th>
          <th style="width: 7%; padding-right: 10px;">Quantity</th>
          <th style="width: 7%; padding-right: 10px;">Value</th>
          <th style="width: 15%;" class="text-center">Actions</th>
     </tr>
     <% foreach (var stck in stocks) {%>
     <tr>
          <td style="vertical-align: middle"><%: stck.StockName%></td>
          <td style="vertical-align: middle"><%: stck.SEDOL%></td>
          <td style="vertical-align: middle"><%: stck.Quantity%></td>
          <td class="text-right" style="vertical-align: middle"><%: String.Format("{0:c}", stck.value)%></td>
          <td class="text-right">
               <%if (disinvestments.Find(x => x.Stock == stck.StockName) != null) {%>
               <button type="button" class="btn btn-default" disabled id="create_<%: stck.StockName%>" onclick="SetupDisinvestmentsFields(this,'<%=stck.SEDOL%>','<%=stck.Quantity%>','<%=stck.value%>')">
                    <span class="glyphicon glyphicon-plus"></span> Create
               </button>
               <%} else {%>
               <button type="button" class="btn btn-default" id="create_<%: stck.StockName%>" onclick="SetupDisinvestmentsFields(this,'<%=stck.SEDOL%>','<%=stck.Quantity%>','<%=stck.value%>')">
                    <span class="glyphicon glyphicon-plus"></span> Create
               </button>
               <%} %>
          </td>
    </tr>
    <% } %>
</table>

Can this be done in JavaScript, JQuery, HTML, i'm not sure whats the best way to this hence my question 能用JavaScript,JQuery,HTML做到吗,我不确定什么是最好的方法,所以我的问题是

PS I dont want to have to change the table to a webgrid or datatable . PS我不希望有表更改为webgriddatatable

好的,实际上您需要做的是在查询末尾order by Stockname DESC添加order by Stockname DESC

Why are you not simply write it in DB Query? 为什么不简单地在DB Query中编写它呢?

I mean something like this: 我的意思是这样的:

"SELECT * FROM <table> WHERE <sequence> ORDER BY <parameter to order> ASC"

you need to add Order clause when you are fetching data from database 从数据库中获取数据时需要添加Order子句

select * from Table_Name order by Column_Name asc   // for accending order

select * from Table_Name order by Column_Name  desc   // for decending order

2 ways i can think of: 我能想到的2种方式:

  • collect your data ordered (ORDER BY - DESC or ASC in your DB) 收集订购的数据(ORDER BY-DB中的DESC或ASC)
  • use a table plugin that can do that for you. 使用可以帮您做到这一点的表格插件。 Datatables plugin worked fine for me. Datatables插件对我来说很好。

As there are many answers suggest order this at server-side(Me too), if you insist to sort it by javascript/ jquery: 由于有很多答案,建议您在服务器端(我也是)订购此产品,如果您坚持按javascript / jquery对其进行排序:

  1. Get all rows except first, as its a title row. 获取除第一行外的所有行作为标题行。
  2. Detach from table, and covert to array 从桌子上拆下,并隐蔽到array
  3. Sort by its Name column's text. 按其“ Name列的文本排序。
  4. Append back to table. 回到表。

 var rows = $('table tr:not(:first)').detach().toArray(); rows.sort(function(rowA, rowB) { var textA = $(rowA).find('td:first').text(); var textB = $(rowB).find('td:first').text(); console.log(textA, textB); return textA < textB ? -1 : 1; }); $('table').append(rows); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script> <table class="table table-striped"> <tr> <th style="padding-right: 10px;">Stock</th> <th style="width: 7%; padding-right: 10px;">SEDOL</th> <th style="width: 7%; padding-right: 10px;">Quantity</th> <th style="width: 7%; padding-right: 10px;">Value</th> </tr> <tr> <td style="vertical-align: middle">CCC</td> <td style="vertical-align: middle">5</td> <td style="vertical-align: middle">6</td> <td class="text-right" style="vertical-align: middle">3</td> </tr> <tr> <td style="vertical-align: middle">AAA</td> <td style="vertical-align: middle">1</td> <td style="vertical-align: middle">2</td> <td class="text-right" style="vertical-align: middle">3</td> </tr> <tr> <td style="vertical-align: middle">BBB</td> <td style="vertical-align: middle">3</td> <td style="vertical-align: middle">4</td> <td class="text-right" style="vertical-align: middle">3</td> </tr> <tr> <td style="vertical-align: middle">ABC</td> <td style="vertical-align: middle">1</td> <td style="vertical-align: middle">2</td> <td class="text-right" style="vertical-align: middle">3</td> </tr> </table> 

我建议您在select语句中使用“ order by columnName desc”,因为表数据的排序会影响代码的性能

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM