当前位置: 首页 > 工具软件 > CellEdit > 使用案例 >

关于Jqgrid框架cellEdit和onSelectRow冲突的另类的解决方式(利用jq解决,附带解决下拉框列编辑绑定数据库的问题)

利稳
2023-12-01

解决问题的思路

由于cellEdit的特性,在jqgrid中使用行列编辑的时候会自动屏蔽掉多选框点击的行选中状态,这是cellEdit和onSelectRow冲突的原因所在,那么要想使用行列编辑就需要另外找方法实现onSelectRow功能接下来进入正题。

onSelectRow的实现方式

在网页端调试查看元素的时候会发现,一旦行列编辑启用,多选框的点击就只会增减一个伪元素:after,然而我没能找到合适的方法获取含有伪元素的元素(要么小弟不才,要么是真没有。。。),那就只有自己动手添加两种状态的区别:

好在jqgrid原生方法 onCellSelect可以实现 ,现在上代码

 onCellSelect: function (rowid, iCol, cellcontent, e) {
                if (iCol == 1) {
                    window.setTimeout(function () {
                        $("#gridList").find("div:eq(" + rowid + ")").toggleClass("ccchecked");
                        $("#gridList").find(".ckbox").closest("td").nextAll().removeClass("not-editable-cell");
                        $("#gridList").find(".ccchecked").closest("td").nextAll().addClass("not-editable-cell");
                    }, 100);

                }
            }
        }); 

参数自行百度相关API,iCol == 1是获取到多选框存在的那一列,也就是实现我们添加标识的功能。我的思路是给复选框所在的div进行自定义类名以区分选中和不选,后面的代码是实现选中行不可编辑的,不需要可以丢掉。

附加下拉框列编辑绑定数据库的问题

说明下这个解决方式存在的原因,因为select绑定和编辑列的存在,在编辑完成后会把数据保存到td标签,然后select控件消失,也就难以获取对应的选项的value(显示的值和保存的值有切换),那就需要在保存的时候就把值也同时传给当前td,那么beforeSaveCell就出现了:

1. beforeSaveCell: function (rowid, cellname, v, iRow, iCol) {
                if (cellname == "F_STOCK_PLACE") {
                    var c = $("#gridList").find("select")[0].selectedIndex;
                    var n = $("#gridList").find("select")[0].options[c].value;
                    $("#gridList").find("select :eq(" + rowid + ")").closest("td").attr("seIndex", n);
                }
            },

先获取到相应的索引值,再取对应的value,最后给td添加一个元素名把value传过去,最后就是获取了,然后传给后台

2. var arr = new Array();
        var rowData = $("#gridList").jqGrid("getRowData");
        $(".ccchecked").each(function () {
            var sle = $(this).closest("td").next().next().attr("seindex");
            var index = $(this).closest("tr").attr("id");
            rowData[index].F_STOCK_PLACE = sle;
            arr.push(rowData[index]);
        });

分享完毕
新手小白的感慨:希望这次自己研究的东西能够帮到大家,用框架是方便也是麻烦,不过熟练之后还是很不错的,最近成长很多,从啥都不会到基本独当一面。时间是最好的证明,如果觉得难或者没有积极性,那是因为大家花的时间太少,新的一年,做更好的自己,第一篇博客献给大家。

 类似资料: