-
请教一个数据库字段排序的问题30
有一堆产品,在数据库里有一个字段标识其在网页浏览时的顺序,现在想让拥有者管理其排序显示顺序,
在列表页面允许通过拖拽产品或输入特定顺序值的方式改变其顺序
想到的方法有两个 一个笨办法将传回的id全部按顺序更新
第二个 将排序字段间隔扩大,这样比如第一个插最后个只需将第一个插到最后个数据的后面,对前面
数据没影响,但困难的是 如何知道传回的id那些是需要改变的
需求要允许多个改变 一次提交
第一个办法的涉及到跨页排序就很惨了
第二个办法卡在如何知道要更新那些顺序上
请教高手
问题补充:
第三个办法刚才看到:
swallor :
假设插入在P处(顺序号是不会重复的吧,orderNo=P),一是新插入记录,这时一次update就可以了:update tabName set orderNo=orderNo+1 where orderNo>P;
insert into ..orderNo=P where id=newID;
第二种情况是移动一条记录N到P处,分为N>P和N<P两种情况,也是update就可以了
但是如果一次提交涉及到多个次序变化这样操作还是会有很多sql语句
请教最精简的方法!
问题补充:
今天做出的初步解决方案
在页面用js保留最初的id ,相应的排序值,提交的时候把这两个初始值和改变了位置的id一起传回,比如
顺序 1 2 3 4
初始 a b c d
排序1 d a b c
排序2 a b d c
只要将一新一旧id数组同位置的相比较若不相同则设相应的位置值 更新 完成排序
这种解决方法只适用于不跨页的排序
如果当前页50个 通过输入的方式要排到第60个 就得用插入算法了
看过阿里的拖拽排序 不知道他们怎么实现的
期待高手指点
问题补充:
想找个最有效率的解决方式就比较烦了2008年5月29日 19:32
8个答案 按时间排序 按投票排序
-
分页也可啊 总有开始索引记录吧 在前台javascript计算好 id---neworderno等字串值 到后台在分析 生成对应的sql。
还有就是ajax 移动一次修改一次。2008年6月11日 20:29
-
PS :
the talbe of Your DataBase have to three ID filed:
" ID previousID nextID "
Save the sort order,
when display it, you show by nextId and
the first Node's previousID is null or 0,
the last Node's nextID is null or 02008年6月04日 21:43
-
Sorry, my OS hasn't chinese input tool...........
And excuse my pool Englis..........-_-!
ago, I made a drag sort View by ASP,
find the problem the same to you.
My way is that use Bidirectional circle chain talbe(双向循环链表)
Data structure.
you can have a Google or Baidu2008年6月04日 21:38
-
如果有十万条记录,你还要做这样的功能,就当我什么也没说。
如果在一千条记录以下,可以用啥希表这样的东西来记录改变的就可以了。
最后将啥希表里的数据传给服务器即可。
有主键的情况下,一次更新一两百条记录不算什么,更何况你这个功能用的人少,用的次数少,不用这么伤脑筋阿。
用数组也可以,查找,更新就行。最后将结果传给复务器。2008年6月02日 12:44
-
browser side ,or client side drag drop , handle the drag item and drop item
then request
swap.action?id1=1&id2=2&pos1=5&pos2=6
-> swap(id1,id2,pos1,pos2)
-> update pos= pos2 where id=id1
update pos =pos1 where id = id2
如果只是交换,而没有插入操作的话,这种方法就可以了。2008年5月29日 23:32
相关推荐
* 所有字段的第一个单词的首字母要小写,且一般不超过三个英文单词。 * 第二个及或后面单词的首字母要大写。 * 能够用缩写的尽量用缩写。 * 字段名要与字段类型相符。 * 默认的数据要写注释,在说明栏标注默认数据...
比如,如果你有一个名为“sales”的表,字段名为“amount”,你可以构建如下的SQL语句:“SELECT SUM(amount) FROM sales”。 3. 使用“执行SQL”命令来运行这个查询。此命令会返回一个结果集,其中包含求和的结果...
总结来说,"C# 作的动态定义数据库字段"是一个面向初学者的示例,展示了如何利用C#的元数据和反射能力来创建一个灵活的数据库系统,允许用户在运行时自定义数据结构。这个项目对于学习C#编程、数据库操作以及Web开发...
一个字段的属性定义直接关系到数据的准确性和处理方式,因此合理定义字段属性对于数据库的稳定性与数据安全至关重要。 综上所述,JTT 1058-2016标准的实施,为交通运输行业的信息系统数据库管理提供了一套科学、...
ADO是Microsoft开发的一个数据访问接口,它使得程序员可以轻松地在各种数据库系统中进行数据操作。 首先,理解ADO的基本构成至关重要。ADO包括一系列的对象,如Connection、Command、Recordset、Field等。其中,...
- 工厂模式:可以创建一个字段名转换工厂,根据输入的数据库字段名,返回对应的Java字段名对象。 - 模板方法模式:定义一个转换模板,子类可以重写具体转换逻辑。 7. **注解驱动**: 在某些情况下,如使用JPA,...
OrderByInterceptor,配合PageHelper实现字段排序插件,前端传入要排序的字段和排序规则,插件自动将实体字段映射成数据库字段,不用设置表明前缀。插件通过ResultMap或ResultType读取映射关系,若没有设置,则根据...
动态增加数据库字段,如在页面上 填写 字段名、字段类型,通过Java后端,数据库的表就会自动的添加字段。
本资料包“SCCM数据库字段大全”涵盖了SCCM 2012 R2及其后续版本的所有SQL数据库字段,旨在帮助管理员理解每个字段的含义和用途,以便于创建高效的自定义报表。这些报表可以帮助用户深入了解设备状态、软件分发效果...
例如,实体类中有一个字段名为 "userName",而数据库表中的字段名为 "USER_NAME"。这种情况下,需要实现实体类字段的自定义,以便与数据库字段保持一致。 二、解决方案 解决 Java 实体类字段自定义问题的思路是...
标题 "一键填充数据库字段名.rar" 提供的信息表明,这个压缩包可能包含一个或多个工具或脚本,用于自动化填充数据库的字段名称。这通常是为了提高数据录入的效率,尤其是在数据库设计阶段或需要大量手动输入字段信息...
数据库字段图
"数据库字段属性详解" 数据库字段是数据库管理系统中最基本的组成部分,它定义了数据在数据库中的存储结构和约束关系。在本文中,我们将详细介绍数据库字段属性的概念、类型、 constraint 和 indexes 等知识点。 ...
在压缩包子文件的文件名称列表中,"FieldToRead--属性读写"可能表示的是一个实现此功能的具体文件,或者是一个示例,用于展示如何读取数据库字段并生成Java属性的读写方法。该文件可能是代码示例、配置文件或者是...
在Android系统中,数据库是一种重要的数据存储方式,尤其对于开发者来说,理解系统内置数据库的字段描述...因此,深入研究和理解Android系统内置数据库的字段描述对于任何Android开发者来说都是一个基本且重要的技能。
这个“Delphi数据库字段替换工具附源码..rar”文件显然包含了一个用Delphi编写的数据库字段替换工具的源代码,这为学习和理解Delphi数据库编程提供了宝贵的资源。 1. **Delphi编程基础**: Delphi基于Pascal语言,...
为了解决这个问题,开发了这个Java实体类字段生成工具类。 2、该工具类可以将数据库表列字段转化为对应的Java实体类字段。生成的实体类字段格式清晰易读,且符合Java命名规范。通过使用该工具类,可以大大提高开发...
金蝶K3数据库字段和表结构,用于对金蝶数据库底层的修改维护,以及查找相关数据使用的。
例如,如果我们有一个员工表(Employees),包含字段如EmployeeID、Name和Salary,我们可以编写一个SQL查询来按照工资(Salary)进行排序: ```sql SELECT * FROM Employees ORDER BY Salary ASC -- 升序排列 ...