我是 按照 这个http://www.cnblogs.com/guozili/archive/2008/04/22/1165184.html做得一些拖拽功能,保存到数据库中了。但是初始化读取得时候如何实现?
没有思路 ?希望达人们给个思路?
最喜欢探讨思路的:)
参照 windows xp 系统桌面图标的摆放方式,我想对于这样的自定义布局,分两类:绝对布局,和格式化布局(暂时这么称呼)
所谓绝对布局是指无网格状态:右击 xp 系统桌面,勾除 排列图标/对其到网格 ,然后拖动你桌面上的图标,拖到哪就定哪。
至于格式化布局就是有网格状态:右击 xp 系统桌面,勾中 排列图标/对其到网格 ,然后拖动你桌面上的图标,拖到哪,系统回就近停靠在当前网格内。
那么你的自由布局页面就好设计了:
首先选好类型,绝对布局,还是格式化布局。
绝对布局相当好实现,记录每个”区块“(可拖拽的单元)的拖拽后的相对原点的x和y值(应该是针对当前用户,每个用户都有自己的每个自定义区块位置矢量),然后在下次自由布局页面加载的时候复现即可(应该不是 appendChild, 而是类似层,通过设置绝对位移)。
格式化布局略显复杂点。区块都同一大小比较好弄,类似上面的绝对布局,只要在拖动后记录一下它所在的网格坐标就可以了。对于你,网格应该就是某个 td 之类的,让该 td 附加当前区块即可。
若区块有大有小,首先要计算它占用的网格,以及在拖动的时候如何计算就近网格(已经被占用的网格不能在放置新区块),那么它在数据库中应该不止坐标矢量一个字段,还应有跨度(横向以及纵向网格数)。
兄弟再深究一些,应该还有很多有趣值得关注的地方!
最后提示一下,js操作的数据保存到数据库,需要通过隐藏域中转,如丁大侠所述,隐藏类型的 input, 只是记得 runat="server"