jqgrid设置某列靠右

jqgrid设置某列靠右,第1张

Copyright © 1999-2020, CSDNNET, All Rights Reserved

打开APP

Tianya_追心

关注

jgGrid实现 左移、右移、上移、下移 转载

2018-06-21 15:52:05

1点赞

Tianya_追心

码龄10年

关注

摘要:

最近在项目需求中通过jqGrid实现表格中的数据:左移、右移、上移、下移和置顶 等 *** 作。

下面记录实现的方法。

1

2

3

下面是代码片段:

右移(其实就是向一个grid容器中插入一行数据):

//这个方法是获取ztree节点内容,插入到grid表中

function BindBtnRightMethod() {

//获取ztree对象

var zTreeObj = $fnzTreegetZTreeObj("ztreeId");

//获取光标选中的tree节点

var selectedNodes = zTreeObjgetSelectedNodes();

if (selectedNodeslength == 0) {

$modalAlert(" *** 作失败!未选中节点。");

return; } else {

//新增一行

var data = { KSID:"10", FLKSID:"101", KSMC: "消化科" };

addRowDataByGridElementId("jqGridId", data); }}

//摘要://内容:向grid表中添加一行记录

function addRowDataByGridElementId(id, data) {

//获取当前grid中的表ID集合

var jqGrid = $('#' + id); var IDs = jqGridgetDataIDs();

//定义标量,记录IDs中的rowid的最大值

var maxId = 0; if (IDslength > 0) {

for (var i = 0; i < IDslength; i++) {

var tmpId = jqGridgetInd(IDs[i]);

if (maxId < tmpId) {

maxId = tmpId;

} } }

//这里是在给新增的rowid自定义一个有序值

var rowid= maxId + 1;

//执行新增 *** 作

jqGridaddRowData(rowid, data, rowid);

}

左移(其实是从grid表中删除一行):

//摘要://内容:按钮左移

function BindBtnLeftMethod() {

//删除选中行

var rowid = $("#jqGridId")jqGrid('getGridParam', 'selrow');

if (rowid == "" || rowid == undefined || rowid == null) {

$modalAlert("移除行未选中!");

return; } else {

var flag = $("#jqGridId")jqGrid("delRowData", rowid);

if (!flag) {

$modalAlert("移除 *** 作失败!");

}

}}

上移:

//摘要:

//内容:按钮上移

function BindBtnUpMethod() {

    var obj = $("#jiGouGridList");

    var IDs = objgetDataIDs();

    var rowid = objjqGrid('getGridParam', 'selrow');

    if (rowid == "" || rowid == null || rowid == undefined) {

        $modalAlert("未选中行!");

        return false;

    }

    var rowIndex = getRowIndexByRowId(IDs, rowid);

    if (rowIndex == 0) {

        $modalAlert('已经置顶,不能上移!');

    } else {

        var srcrowid = getRowIdByRowIndex(IDs, rowIndex - 2);

        var rowUpId = getRowIdByRowIndex(IDs, rowIndex - 1);

        var rowData = objjqGrid('getRowData', rowid);

        var rowUpData = objjqGrid('getRowData', rowUpId);

        //删除当前行

        objdelRowData(rowid);

        objdelRowData(rowUpId);

        //新插入一行

        objaddRowData(rowid, rowData, "after", srcrowid);

        objaddRowData(rowUpId, rowUpData, "after", rowid);

        //默认再选中新增的这个行

        objsetSelection(rowid);

    }

}

//摘要:

//内容:根据rowid,获取索引

function getRowIndexByRowId(Ids, id) {

    var index = 0;

    for (var i = 0; i < Idslength; i++) {

        if (Ids[i] == id) {

            index = i;

        }

    }

    return index;

}

//摘要:

//内容:根据索引值获取rowid值

function getRowIdByRowIndex(Ids, index) {

    var rowid = "";

    for (var i = 0; i < Idslength; i++) {

        if (i == index) {

            rowid = Ids[i];

        }

    }

    return rowid;

}

下移:

//摘要:

//内容:按钮下移

function BindBtnDownMethod() {

    var obj = $("#jqGridId");

    var IDs = objgetDataIDs();

    var rowid = objjqGrid('getGridParam', 'selrow');

    if (rowid == "" || rowid == null || rowid == undefined) {

        $modalAlert("未选中行!");

        return false;

    }

    var rowIndex = getRowIndexByRowId(IDs, rowid);

    if (rowIndex == (IDslength - 1)) {

        $modalAlert('已经置底,不能下移!');

    } else {

        var srcrowid = getRowIdByRowIndex(IDs, rowIndex - 1);

        var rowDownId = getRowIdByRowIndex(IDs, rowIndex + 1);

        var rowData = objjqGrid('getRowData', rowid);

        var rowDownData = objjqGrid('getRowData', rowDownId);

        //删除当前行

        objdelRowData(rowid);

        objdelRowData(rowDownId);

        //新插入一行

        objaddRowData(rowDownId, rowDownData, "after", srcrowid);

        objaddRowData(rowid, rowData, "after", rowDownId);

        //默认再选中新增的这个行

        objsetSelection(rowid);

    }

}

打开CSDN APP,看更多技术内容

ListBox实现上移,下移,左移,右移的简单实例

主要介绍了ListBox实现上移,下移,左移,右移的简单实例。需要的朋友可以过来参考下,希望对大家有所帮助

JS与jQuery实现ListBox上移,下移,左移,右移 *** 作功能示例

主要介绍了JS与jQuery实现ListBox上移,下移,左移,右移 *** 作功能,涉及javascript与jQuery的事件响应、页面元素动态 *** 作等相关实现技巧,需要的朋友可以参考下

易语言汇编实现左移右移模块

易语言汇编实现左移右移模块源码系统结构:asm_rol,asm_ror,asm_rcl,asm_rcr,asm_shl,asm_shr,asm_not, ======程序集1 || ||------_启动子程序 || ||------_临时子程序 || ||------asm_rol || ||------asm_ror || ||-

易语言源码易语言汇编实现左移右移模块源码rar

EXPLAIN 命令,可以查看TiDB执行sql时的执行计划,用法和mysql一样,跟上sql即可

执行计划以一个树形结构展示出来,来说说每一列的含义吧:

算子是为返回查询结果而执行的特定步骤

扫表类 *** 作的算子有如下几类:

一般查询条件中没有用到索引或者索引失效了,执行计划中就会出现 TableFullScan

TableFullScan栗子 :

这个sql,没有用到索引肯定就全表扫描了,执行计划如下:

看的到执行计划中,出现 TableFullScan ,id为 TableFullScan + 了一个序号,说明,这一步执行的子任务进行全表扫描

IndexFullScan栗子1:聚合查询IndexFullScan栗子,使用COUNT :

这个sql,对于索引列 user_id 使用了 COUNT函数 ,导致了执行时需要对所有索引数据进行扫描,会出现 IndexFullScan 算子,执行计划如下:

看的到执行计划中,出现 IndexFullScan ,id为 IndexFullScan + 了一个序号,说明,这一步执行的子任务进行对索引列 user_id 进行了全索引数据的扫描

IndexFullScan栗子2:聚合查询IndexFullScan栗子,使用group by :

这个sql,对于索引列 user_id 使用了 group by ,导致了执行时需要对所有索引数据进行扫描,会出现 IndexFullScan 算子,执行计划如下:

看的到执行计划中,出现 IndexFullScan ,id为 IndexFullScan + 了一个序号,说明,这一步执行的子任务进行对索引列 user_id 进行了全索引数据的扫描

IndexFullScan栗子3:聚合查询IndexFullScan栗子,使用min函数 :

这个sql,对于索引列 user_id 使用了 min函数 ,导致了执行时需要对所有索引数据进行扫描,会出现 IndexFullScan 算子,执行计划如下:

看的到执行计划中,出现 IndexFullScan ,id为 IndexFullScan + 了一个序号,说明,这一步执行的子任务进行对索引列 user_id 进行了全索引数据的扫描

IndexFullScan栗子4:子查询IndexFullScan栗子,使用索引IN 子查询,当子查询为全量时 :

这个sql,对于索引列 user_id 使用了in,子查询为全表扫描,所以会导致外层查询会对索引列 user_id 进行全索引数据进行扫描,会出现 IndexFullScan 算子,执行计划如下:

来看看执行计划,首先,子查询没有加条件,是一个全表扫描,看执行计划2的地方,出现了一个 TableFullScan_49 ,由于子查询是全量数据,所以当外层sql对索引列 user_id 进行In时候,会对索引列 user_id 进行全索引数据的扫描,出现 IndexFullScan

IndexFullScan栗子5:join查询IndexFullScan栗子,使用left join,当左联表为全量数据时 :

这个sql,使用了索引列 user_id 进行了 left join ,当左联表为全表扫描时,会导致对索引列 user_id 进行全索引数据进行扫描,会出现 IndexFullScan 算子,执行计划如下:

来看看执行计划,左联表是一个全表扫描,所以会对索引列 user_id 进行全索引数据的扫描,出现 IndexFullScan

根据上层传递下来的 rowId 扫描表数据,通俗的讲,就是查询先走索引获取到 rowId ,在根据 rowId 读取数据,执行计划中就会出现 TableRowIDScan ,举个栗子

TableRowIDScan栗子 :

就一个简单的sql来看一下,执行计划如下:

因为使用了索引列 user_id ,所以,查询方式是从索引获取到了 rowId ,通过 rowId 去读取表数据,所以看到执行计划中,出现 TableRowIDScan ,id为 TableRowIDScan + 了一个序号,说明,这一步执行的子任务是通过送索引获取到的 rowId 扫描表数据

带有范围的索引数据扫描,还是用这个栗子吧

TableRowIDScan栗子 :

就一个简单的sql来看一下,执行计划如下:

因为对索引列 user_id 使用范围查询,所以看到执行计划中,出现 IndexRangeScan ,id为 IndexRangeScan + 了一个序号,说明,这一步执行的子任务是带有范围的索引数据扫描

数据汇聚类的算子有如下几类:

将上底层扫表算子 TableFullScan 或 TableRangeScan 得到的数据进行汇总

TableReader汇聚全表扫描TableFullScan的栗子 :

这个sql,没有用到索引肯定就全表扫描了,执行计划如下:

看的到执行计划中,因为没有使用索引查询,进行了全表扫描,出现了 TableFullScan ,所以最终使用了 TableReader 算子,对于全表扫描的数据进行了汇总

将上底层扫表算子 IndexFullScan 或 IndexRangeScan 得到的数据进行汇总

IndexReader汇聚全量索引扫描IndexFullScan的栗子 :

还是使用这个sql,由于对索引列使用min函数,所以会对对全量索引进行扫描,出现了 IndexFullScan 算子,所以会有 IndexReader 算子对于 IndexFullScan 算子得到数据进行汇总,执行计划如下:

先汇总 Build端TiKV扫 描上来的 RowID ,再去 Probe端 上根据这些 RowID 精确地读取 TiKV 上的数据。Build 端是 IndexFullScan 或 IndexRangeScan 类型的算子, Probe端 是 TableRowIDScan 类型的算子,用sql举栗子吧

IndexLookUp栗子 :

执行计划如下:

看这个sql,是一个通过索引列 user_id 进行了索引范围扫描,和上面讲的一样,他的执行逻辑是,先通过对于索引列 user_id 进行了一个范围扫描,得到所有符合条件的 rowId ,然后通过 rowId 扫描表获得数据,看执行也是,首先在 Build 端,通过 IndexRangeScan 算子,对于索引列 user_id 进行了范围扫描,扫描到的 rowId ,在 Probe 端,在通过 TableRowIDScan 算子,通过 rowId 扫描表获取数据,最终通过 IndexLookUp 算子来汇聚最终的数据

执行计划如下:

每一层级上, Build端 总是先于 Probe端 执行,并且 Build端 总是出现在 Probe端 前面

使用rownum标志行的序号,但要记住rownum的生成是在order by之前

你要查第三条到第六条必然是有一个顺序的, 假设这个顺序是 rowid (物理存储地址)

select from

(

select rownum rn , a -- 这里使用rownum给每行添加一个伪列(行号)

from (select from tab a order by rowid) a -- 这里是将原数据按想要的顺序排列好

)

where rn >= 3 and rn <= 6

通用的

select

from (select A, (select count(1) from A where id <= tid) as rk from A t) t2

where rk between 31 and 40

以上就是关于jqgrid设置某列靠右全部的内容,包括:jqgrid设置某列靠右、TiDB执行计划(一)、SQL语句中 我想查找从第三条开始到第六条怎么写等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9324588.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存