找回密码
 立即注册

QQ登录

只需一步,快速开始

gczxxu

银牌会员

80

主题

948

帖子

3058

积分

银牌会员

积分
3058
gczxxu
银牌会员   /  发表于:2022-11-24 09:49  /   查看:7771  /  回复:37
本帖最后由 gczxxu 于 2022-11-24 17:46 编辑

补个提醒,以下代码只支持手机版的图文列表,PC端的,对应修改 CSS名称即可,代码中已用 重点 注释出来了

话说格子经过多次快速升级后,越来越好用(说老实话。。我是直接从7跳到了8.103了,中间忙,没空试其它版本),怎么才能更好的仿原生APP也提上了学习日程。今天给大家带来仿原生APP的其中一个内容:拖拽排序,这里只演示图文列表的实现,其它的表格等可根据需要自行实现。

1669255048_clip.gif975467529.png


所需要的工具:
Sortable.js  调用链接
还需要一点JS基础和CSS基础

图文列表所在页面的加载代码:图文列表组件CSS中加入 DragSort 样式名称
Forguncy.Page.bind("pageDefaultDataLoaded", function (arg1, arg2) {
    RestTable("sfdsf");
    setTimeout(
        function (props) {
                    FillNum();  
            let el = document.querySelector('.DragSort .repeater-container')//重点:选择包裹器。如果是表格,则是对应 table元素
            var sortable = new Sortable(el, {
                handle: ".handle",// 拽手柄,可以设置在图片或按钮等组件上
                animation: 150,//设置动画时长
                // Element dragging started
                onStart: function (/**Event*/evt) {
                    evt.oldIndex;
                },
                // Element dragging ended
                onEnd: function (/**Event*/evt) {
                    var lis = $(".repeater-container .repeater-item");//重点:选择可拖拽的队列。如果是表格,则是对应 tr 元素

                    sortarr = new Array;
                    // 拖拽完毕后重新设置序号,使其连续
                    for (var i = 0; i < lis.length; i++) {
                        var no = $(lis).find("input:eq(0)");//重点:临时序号元素,也可以用其它DOM元素替代,看自己需要
                        no.val(i);
                        // 利用KV对象临时保存排序情况,待退出时写入表格并提交
                        var sortobj = {
                            key: $(lis).find(".sortnum label")[0].textContent,
                            value: i
                        }
                        sortarr.push(sortobj);
                    }
                    console.log(sortarr);
                    // ReplaceTable("ddd",sortarr);
                }
            });
        },
        500,
    )
});
function FillNum(){
    var lis = $(".repeater-container .repeater-item");
    for (var i = 0; i < lis.length; i++) {
        var no = $(lis).find("input:eq(0)");
        no.val(i);      
    }
}



全局代码:这里默认都数据表组件名均为"表格1",数据表排序字段名均为  "序号"
var sortarr=new Array();

function ReplaceTable(tablename, arrobj) {
    tablename = "表格1";

    var page = Forguncy.Page;
    var listview = page.getListView(tablename);
    var count = listview.getRowCount();
    arrobj.forEach(ele => {
        listview.setValue(ele.key,"序号",ele.value);
    });
}

function RestTable(tablename){
    tablename = "表格1";

    var page = Forguncy.Page;
    var listview = page.getListView(tablename);
    var count = listview.getRowCount();
    for (let i = 0; i < count; i++) {
        // const ele = array[index];
        listview.setValue(i,"序号",i);
    }
}

操作步骤:
新建一页面,放图数据表和图文列表组件,并在表组增加一个"排序"列(如图)
15P603)@{S0X{3%]D$S{{~U.png324571532.png
编辑图文列表模板,拖拽图标设置CSS名称为handle,排序组件设置为输入框,并根据自己喜好更改样式
0L0~HDDL@WZGX8~XG9}AMQ4.png804767455.png
在退出当前页面时,执行以下命令,这里偷懒了。表格名称在前面代码中被写死。这里的 ddd 无含义。
)]B171{`ZR7{]9ZK[1S189Q.png103537596.png
然后呢。没有然后了。。就这么简单愉快的结束了。。运行一下,试试吧。
"快捷菜单"中执行上图命令,"退出排序"为直接退出或返回,放弃排序操作
V0SB5H{[6%]3LF$O[{NYC9X.png526299743.png

下面放上demo,欢迎大家研究



7V]73N6X@6XJR}9[}W$I@JT.png39638365.png

拖拽demo.fgcc

3.12 MB, 下载次数: 313

评分

参与人数 4金币 +3000 满意度 +10 收起 理由
白菜贝贝 + 5
Nancy.Yin + 1000 赞一个!
lovert + 5
Simon.hu + 2000 赞一个!

查看全部评分

37 个回复

正序浏览
137294886
金牌服务用户   /  发表于:2024-3-13 15:30:21
39#
谢谢分享
回复 使用道具 举报
牧野流云
注册会员   /  发表于:2024-3-12 16:13:22
38#
厉害!学习了!怎样实现让用户随意拖动表格中的列,当点击快捷菜单 按钮,自动保存写入表格时只保存该用户账号调整后界面。而不影响系统默认的排列格式?
回复 使用道具 举报
牧野流云
注册会员   /  发表于:2024-3-12 16:02:28
37#
本帖最后由 牧野流云 于 2024-3-12 16:12 编辑

厉害,学习了!怎样实现让用户随意拖动表格中的列,当点击快捷菜单 按钮,自动保存写入表格时只保存该用户账号调整后界面。而不影响系统默认的排列格式?
回复 使用道具 举报
zou活字格认证
初级会员   /  发表于:2023-12-2 12:32:44
36#
回复 使用道具 举报
gczxxu
银牌会员   /  发表于:2023-12-2 11:17:08
35#
zou 发表于 2023-12-2 11:06
是的,已经出来了EL表格

不是el表格,是xtableS表格,自带拖拽排序功能的,还可以编辑,提交
回复 使用道具 举报
zou活字格认证
初级会员   /  发表于:2023-12-2 11:06:29
34#
gczxxu 发表于 2023-11-26 17:10
后面有更合适的替代品了。。让这帖子沉了吧。

是的,已经出来了EL表格
回复 使用道具 举报
gczxxu
银牌会员   /  发表于:2023-11-26 17:10:48
33#
zou 发表于 2023-11-26 15:51
好东西,留个脚印

后面有更合适的替代品了。。让这帖子沉了吧。
回复 使用道具 举报
zou活字格认证
初级会员   /  发表于:2023-11-26 15:51:14
32#
好东西,留个脚印
回复 使用道具 举报
cfanlane
中级会员   /  发表于:2023-4-24 08:48:17
31#
牛,,谢谢分享资源
回复 使用道具 举报
13794930121活字格认证
银牌会员   /  发表于:2023-4-23 15:17:11
30#
许总大能人,总给大家带来福利
回复 使用道具 举报
1234下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部