首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Jquery数据表-如何做多列排序和重绘表格,当点击标题时,它可以是asc或desc

对于Jquery数据表如何实现多列排序和重绘表格的问题,可以使用Jquery的插件或者自定义方法来实现。以下是一个示例的解答:

多列排序:可以使用Jquery的插件如DataTable或者自定义方法来实现多列排序。这些插件可以通过配置指定多个列进行排序,并且可以选择升序(asc)或降序(desc)排序方式。

  1. DataTable插件示例:

DataTable是一个功能强大的Jquery插件,可以用于快速实现数据表格的排序、搜索、分页等功能。

使用DataTable插件,首先需要引入相关的CSS和JS文件,并将HTML表格转化为DataTable。

代码语言:txt
复制
<!-- 引入DataTable的CSS和JS文件 -->
<link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/1.10.24/css/jquery.dataTables.min.css">
<script src="https://cdn.datatables.net/1.10.24/js/jquery.dataTables.min.js"></script>

<!-- 将HTML表格转化为DataTable -->
<script>
$(document).ready(function() {
    $('#example').DataTable();
});
</script>

<!-- HTML表格 -->
<table id="example" class="display">
    <thead>
        <tr>
            <th>Name</th>
            <th>Age</th>
            <th>Salary</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>John</td>
            <td>25</td>
            <td>5000</td>
        </tr>
        <tr>
            <td>Mike</td>
            <td>30</td>
            <td>6000</td>
        </tr>
        <tr>
            <td>Lisa</td>
            <td>20</td>
            <td>4000</td>
        </tr>
    </tbody>
</table>

上述示例代码中,通过引入DataTable的CSS和JS文件,并在HTML表格上应用id="example",即可将该表格转化为可排序的DataTable。默认情况下,DataTable会在每列的表头上添加排序按钮,点击按钮即可实现升序或降序排序。

  1. 自定义方法示例:

如果不想使用插件,也可以通过自定义方法来实现多列排序。以下是一个简单的示例代码:

代码语言:txt
复制
<!-- 引入Jquery库 -->
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>

<!-- HTML表格 -->
<table id="myTable">
    <thead>
        <tr>
            <th onclick="sortTable(0)">Name</th>
            <th onclick="sortTable(1)">Age</th>
            <th onclick="sortTable(2)">Salary</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>John</td>
            <td>25</td>
            <td>5000</td>
        </tr>
        <tr>
            <td>Mike</td>
            <td>30</td>
            <td>6000</td>
        </tr>
        <tr>
            <td>Lisa</td>
            <td>20</td>
            <td>4000</td>
        </tr>
    </tbody>
</table>

<!-- 自定义排序方法 -->
<script>
function sortTable(columnIndex) {
    var table, rows, switching, i, x, y, shouldSwitch, direction, switchcount = 0;
    table = document.getElementById("myTable");
    switching = true;
    // 设置初始排序方向为升序
    direction = "asc";

    // 循环,直到没有需要交换的行
    while (switching) {
        switching = false;
        rows = table.rows;

        // 遍历表格的每一行(除表头)
        for (i = 1; i < (rows.length - 1); i++) {
            shouldSwitch = false;
            x = rows[i].getElementsByTagName("td")[columnIndex];
            y = rows[i + 1].getElementsByTagName("td")[columnIndex];

            // 判断排序方向
            if (direction == "asc") {
                if (x.innerHTML.toLowerCase() > y.innerHTML.toLowerCase()) {
                    shouldSwitch= true;
                    break;
                }
            } else if (direction == "desc") {
                if (x.innerHTML.toLowerCase() < y.innerHTML.toLowerCase()) {
                    shouldSwitch= true;
                    break;
                }
            }
        }
        if (shouldSwitch) {
            // 交换行
            rows[i].parentNode.insertBefore(rows[i + 1], rows[i]);
            switching = true;
            // 每次交换后,递增计数器
            switchcount ++;
        } else {
            // 如果没有需要交换的行且排序方向为升序,则改为降序并重新开始循环
            if (switchcount == 0 && direction == "asc") {
                direction = "desc";
                switching = true;
            }
        }
    }
}
</script>

上述示例代码中,通过在表头的每个列添加onclick事件,并调用sortTable()函数来实现排序功能。sortTable()函数根据当前排序方向(默认为升序),比较每一行的对应列的值,并根据排序方向来决定是否交换行的位置,实现排序功能。

重绘表格:当点击表头时,如果需要重新根据排序后的顺序重绘表格,可以通过以下方式实现:

代码语言:txt
复制
// 在排序方法中添加重绘表格的代码
function sortTable(columnIndex) {
    // 省略其他代码...

    // 循环完毕后重绘表格
    redrawTable();
}

// 重绘表格
function redrawTable() {
    var table = document.getElementById("myTable");
    // 清空表格内容
    table.innerHTML = "";

    // 重新填充表格内容(包括表头)
    // 省略代码...
}

通过在排序方法中添加redrawTable()函数,可以实现在排序后重新绘制表格的功能。redrawTable()函数可以清空表格内容,然后根据当前排序后的顺序重新填充表格内容(包括表头),从而实现重绘表格的效果。

以上是关于Jquery数据表如何实现多列排序和重绘表格的一种解答。在实际应用中,可以根据具体需求选择使用合适的Jquery插件或自定义方法来实现多列排序和重绘表格的功能。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • jQuery EasyUI 详解

    null fitColumns boolean True 就会自动扩大缩小的尺寸以适应表格的宽度并且防止水平滚动。 false striped boolean True 就把行条纹化。...[10,20,30,40,50] queryParams object 请求远程数据,发送的额外参数。 {} sortName string 定义可以排序。...null sortOrder string 定义排序顺序,只能用 asc  descasc remoteSort boolean 定义是否从服务器给数据排序。...onSortColumn sort, order 当用户对一进行排序时触发,参数包括: sort:排序的字段名order:排序的顺序 onResizeColumn field, width 当用户调整列的尺寸触发... type 参数没有分配,返回所有改变的行。 acceptChanges none 提交自从被加载以来最后一次调用acceptChanges以来所有更改的数据。

    9.2K10

    在ASP.NET MVC5中实现具有服务器端过滤、排序分页的GridView

    通过前文,我们已经了解到使用 jQuery 插件的数据表可以很容易地实现具有搜索、排序分页等重要功能的表格。 ?...,在 init 函数中,我们设置 serverSide 属性为 true,这也就告诉表格会在服务器端进行分页,过滤排序,现在所有的数据不会立刻加载,而是第一页数据会默认展示出来,更多的数据会当用户触发才加载...写入 document.ready 文件,assetListVM.init( ) 函数将会被调用。...在这之后,我们就实现了排序逻辑,排序列的信息附带在使用自定义模型绑定的模型中,使用 System.Linq.Dynamic 我们能够避免 if switch 语句,我们将迭代在用户请求的排序上,并且通过以下代码排列行...在服务器端实现表格的过滤、分页排序等功能,能够减少客户端数据处理的任务量,方便更好更快的加载并显示数据。

    5.4K80

    MYSQL基本操作-select 查询语句

    只能按照数据表中字段的顺序进行排列,不能自定义字段排序 建议:不知道所需查询的列名称,才用 * ,否则获取不需要的数据会降低查询所使用应用程序的效率 查询表的部分字段 select bookid...字符串:可以是精确的字符串,也可以是包含通配符的字符串 LIKE支持 % _ 两个通配符 % 应该是最常用的通配符了,它代表任意长度的字符串,包括0,如:a%b 表示以字母 a 开头,以字母 b...[ASC | DESC] ASC:升序排序,默认值 DESC:降序排序 ASC select * from book order by bookprice asc; DESC select *...from book order by bookprice desc; 多字段排序 select * from book order by borrowsum asc ,typeid desc; select...* from book order by borrowsum, typeid desc; 如果字段值是NULL,则最小值处理 如果指定多个字段排序,则按照字段的顺序从左往右依次排序 对多个字段排序

    2.8K20

    Bootstrap Bootstrap表格插件bootstrap-table配置与应用小结

    这会导致自定义的 pageList不起作用 silentSort:true, // 设置为true将在点击分页按钮,自动记住排序项。...仅在 sidePagination设置为 server生效 showColumns:true, // 展示内容下拉框,方便设置展示那些 showRefresh:true, // 显示刷新按钮...order:'desc', // 默认排序方式升序-asc 降序-desc width: '2%', }, { field: 'name', title: '角色名称', align...,默认打开页面,请求表数据,会附加提供以下参数: order=asc&offset=0&limit=pageSize 或者如下(添加了搜索框的情况下) search=&order=asc&offset...=0&limit=pageSize search:前端输入的搜索内容 order:排序方式,asc - 升序 desc - 降序 sort:需要排序 offset:偏移 limit:限制查询返回记录数

    13.1K20

    SQL数据库查询语句

    一、Select语句: select语句除了可以查看数据库中的表格视图的信息外,还可以查看SQL Server的系统信息、复制、创建数据表。...[ASC|DESC]] 二、单表查询:指仅涉及一个表的查询 (一)查询指定的 1.查询表中所有:在select语句指定的位置上使用*号,表示查询表的所有。...指定标题,可在列名之后使用AS子句;也可以使用:别名=的形式指定标题。 AS子句的格式为:列名计算表达式 [AS] 标题 其中:AS可省略。...专业名=’计算机’ or 专业名=’英语’ (四)对查询结果排序: order by子句可用于对查询结果按照一个多个字段的值(表达式的值)进行升序(ASC降序(DESC)排列,默认为升序。...格式:order by {排序表达式[ASC|DESC]}[,…n] 其中:排序表达式既可以是单个的一个字段(如例14),也可以是由字段、函数、常量等组成的表达式(如例15),一个正整数。

    4.3K20

    关于MySQL的一些基础

    2、Navicat的使用 Navicat的使用从三方面来介绍: MySQL数据库服务端建立连接 数据库的操作 数据表的操作 数据表中数据的操作 MySQL数据库服务端建立连接: 数据库的操作:...aA在字符判断中会被当作一样的处理 ,区分大小写可以选择utf8_bin 3、双击选择创建好的数据库进行使用 创建与编辑数据表: 1、选择对应的数据库,点击“表”,再新建表 说明: id字段:int...1 ascdesc [,2 ascdesc,...]...语法说明: 先按照1进行排序,如果1的值相同时,则按照2排序,以此类推 asc从小到大排列,即升序 desc从大到小排列,即降序 默认按照值从小到大排列(即asc关键字) 例1:查询未删除男生信息...,当年龄相同时按照身高从高到矮排序: select * from students order by age desc,height desc; 2、小结 排序使用order by关键字 asc表示升序

    63010

    【计算机本科补全计划】Mysql 学习小计(2)

    [ASC [DESC]] 你可以使用任何字段来作为排序的条件,从而返回排序后的查询结果。 你可以设定多个字段来排序。...你可以使用 ASC DESC 关键字来设置查询结果是按升序降序排列。 默认情况下,它是按升序排列。 你可以添加 where...like 子句来设置条件。 ?...---- Mysql null 值处理 我们已经知道 Mysql 使用 SQL select 命令及 where 子句来读取数据表中的数据,但是提供的查询条件字段为 null ,该命令可能就无法正常工作...: 比较操作符(不同于=运算符),比较的的两个值为 null 返回 true。 以下实例中你可以看到 = !...=null; 查找数据表中 createtime是否为 null,必须使用 is null is not null: select * from tableuse where createtime

    1.8K110

    【黄啊码】MySQL入门—3、我用select *,老板直接赶我坐火车回家去,买的还是站票

    我们知道一个数据表是由(字段名)行(数据行)组成的,我们要返回满足条件的数据行,就需要在 SELECT 后面加上我们想要查询的列名,可以是,也可以是多个。...DISTINCT 其实是对后面所有列名的组合进行去, 如何排序检索数据 最最最普通的方式如下: select * from user_info ORDER BY user_id asc; 你:...使用 ORDER BY 子句有以下几个点需要掌握: 排序的列名:ORDER BY 后面可以有一个多个列名,如果是多个列名进行排序,会按照后面第一个先进行排序第一的值相同的时候,再按照第二进行排序...排序的顺序:ORDER BY 后面可以注明排序规则,ASC 代表递增排序DESC 代表递减排序。如果没有注明排序规则,默认情况下是按照 ASC 递增排序。...如果我们只是练习,或者对数据表进行探索,那么是可以使用SELECT * 的。它的查询效率把所有列名都写出来再进行查询的效率相差并不大。这样可以方便你对数据表有个整体的认知。

    45230

    【黄啊码】MySQL入门—3、我用select *,老板直接赶我坐火车回家去,买的还是站票

    我们知道一个数据表是由(字段名)行(数据行)组成的,我们要返回满足条件的数据行,就需要在 SELECT 后面加上我们想要查询的列名,可以是,也可以是多个。...DISTINCT 其实是对后面所有列名的组合进行去, 如何排序检索数据 最最最普通的方式如下: select * from user_info ORDER BY user_id asc; 图片 你:啊码...使用 ORDER BY 子句有以下几个点需要掌握: 排序的列名:ORDER BY 后面可以有一个多个列名,如果是多个列名进行排序,会按照后面第一个先进行排序第一的值相同的时候,再按照第二进行排序...排序的顺序:ORDER BY 后面可以注明排序规则,ASC 代表递增排序DESC 代表递减排序。如果没有注明排序规则,默认情况下是按照 ASC 递增排序。...如果我们只是练习,或者对数据表进行探索,那么是可以使用SELECT * 的。它的查询效率把所有列名都写出来再进行查询的效率相差并不大。这样可以方便你对数据表有个整体的认知。

    1K151

    Access数据库相关知识

    x ORDER BY Column1; (按照Column1排序结果,默认升序排列) ORDER BY Column1 ASC/DESC; (升序/降序) ORDER BY Column1 DESC,...fromPeopleDense as t 2)(‘’)单引号用于限定字符内容 3)([])方括号用于限定容易产生歧义的名称,如[Grid_id]>1 4)(())圆括号用于运算分级 II 高级查询 i 提取并去...不是非得有——可用于拆分信息 Select count(switch(xb='1',1))as male, count(switch(xb='1',1)as female From x 2)Result可以是包含其他的表达式...IntFix之间的区别在于, 如果Number为负数, 则int返回小于等于number的第一个负整数, 而Fix返回大于等于的第一个负整数 III 交叉查询 i 多个表 从多个表中查询数据...IV 管理表格 简单的创建表格、字段,修改某行信息等操作可以在数据表格视图完成,但是涉及大量的修改、更新和维护就需要用到SQL查询语句了。 i 删除操作 1.

    3.8K10

    面试官:MySQL 中的 distinct group by 哪个效率更高?

    distinct distinct的去,则是根据指定的去信息来进行,即只有所有指定的信息都相同,才会被认为是重复的信息。...; +------+ | age | +------+ | 10 | | 12 | | 11 | | NULL | +------+ 4 rows in set (0.02 sec) ...大致解释一下: GROUP BY 默认隐式排序(指在 GROUP BY 没有 ASC DESC 指示符的情况下也会进行排序)。...在能利用索引的情况下,Group by不需要额外进行排序操作;但无法利用索引排序时,Mysql优化器就不得不选择通过使用临时表然后再排序的方式来实现GROUP BY了。...且由于distinct关键字会对所有字段生效,在进行复合业务处理,group by的使用灵活性更高,group by能根据分组情况,对数据进行更为复杂的处理,例如通过having对数据进行过滤,通过聚合函数对数据进行运算

    57610

    Mysql常用查询语句

    终止值 (2)IS NOT NULL 对非空值进行查询 (3)IS NULL 对空值进行查询 (4)NOT IN 该式根据使用的关键字是包含在列表内还是排除在列表外,指定表达式的搜索,搜索表达式可以是常量列名...,而列名可以是一组常量,但更多情况下是子查询 十七显示数据表中重复的记录记录条数 SELECT  name,age,count(*) ,age FROM tb_stu WHERE age = ’19... WHERE 条件 ORDER BY 字段1 ASC 字段2 DESC  … 注意:对查询信息进行多条件排序是为了共同限制记录的输出,一般情况下,由于不是单一条件限制,所以在输出效果上有一些差别。...二十对统计结果进行排序 函数SUM([ALL]字段名)  SUM([DISTINCT]字段名),可实现对字段的求和,函数中为ALL为所有该字段所有记录求和,若为DISTINCT则为该字段所有不重复记录的字段求和... DESC 注:分组语句group by排序语句order by同时出现在SQL语句中,要将分组语句书写在排序语句的前面,否则会出现错误 二十二数据分组统计 数据分组统计与单列数据分组统计类似

    5.1K20

    JavaScript点击表格的表头,实现表格排序

    思路 因为表格数据是遍历数组动态创建,所以可以考虑在点击表头的时候,对数据进行排序。 对数据排序需要考虑两个关键点: 对哪个字段进行排序? 是正序(ASC)还是逆序(DESC)?...1)要排序的字段 先考虑要对哪个字段进行排序。这个由点击事件决定,点击哪一个表头,就是对那一数据排序。...可以在点击事件排序时,再进行设置。 比如下面点击事件代码,逆序排序后,预设sort为正序(确保下一次点击做的是正序排序);正序排序后,预设sort为逆序。.../** * 比较函数 * @param {string} prop 数据里面要排序的key * @param {number} type 1:asc -1:desc...结语 自此就完成了一个简易版点击表头排序,详细代码详见 table-sort.html。 当然,这不是最简洁的方式,有看到小伙使用reverse()方法 JavaScript-点击表格的表头进行排序

    3.9K10

    bootstrap-table数据导出Excel 、JSON、txt、pdf等

    // sortOrder:"asc", //排序方式 clickToSelect:true, //是否启用点击选中行 showExport...可以是字符串函数,例如: exportOptions: { fileName: function () { return 'exportName' } } 3、exportDataType...默认: false 6、Icons(导出图标) export: 'glyphicon-export icon-share' 五、服务端分页客户端分页   所谓客户端模式,指的是在服务器中把要显示到表格的数据一次性加载出来...点击第二页,会自动加载出数据,不会再向服务器发送请求。同时用户可以使用其自带的搜索功能,可以实现全数据搜索。对于数据量较少的时候,可以使用这个方法。   ...所谓服务器模式,指的是根据设定的每页记录数当前要显示的页码,发送数据到服务器进行查询,然后再显示到表格中。

    3.5K20

    常用SQL查询语句,值得回看不要错过,好记性不如多看看!

    >终止值 (2)IS NOT NULL 对非空值进行查询 (3)IS NULL 对空值进行查询 (4)NOT IN 该式根据使用的关键字是包含在列表内还是排除在列表外,指定表达式的搜索,搜索表达式可以是常量列名...,而列名可以是一组常量,但更多情况下是子查询 十七、显示数据表中重复的记录记录条数 SELECT name,age,count(*) ,age FROM tb_stu WHERE age = ’19’...条件 ORDER BY 字段1 ASC 字段2 DESC … 注意:对查询信息进行多条件排序是为了共同限制记录的输出,一般情况下,由于不是单一条件限制,所以在输出效果上有一些差别。...二十、对统计结果进行排序 函数SUM([ALL]字段名) SUM([DISTINCT]字段名),可实现对字段的求和,函数中为ALL为所有该字段所有记录求和,若为DISTINCT则为该字段所有不重复记录的字段求和...DESC 注:分组语句group by排序语句order by同时出现在SQL语句中,要将分组语句书写在排序语句的前面,否则会出现错误 二十二、数据分组统计 数据分组统计与单列数据分组统计类似

    2.9K30
    领券