找回密码
 立即注册

QQ登录

只需一步,快速开始

[已处理] c1flexgrid行多拽

chenfeng1029
金牌服务用户   /  发表于:2021-6-7 14:18  /   查看:3388  /  回复:3
1金币
1、c1flexgrid绑定了数据源
2、设置了可以拖拽
3、我试了下列可以拖拽,行拖拽后,直接报错”不能将外部对象插入此列表"
4、有什么方法可以实现行拖拽

最佳答案

查看完整内容

如果是要对绑定的数据源修改顺序的话,如我前面所说,只能是改变数据源的顺序, 可以按照这个例子进行修改 在DragDrop事件中重新修改数据源顺序然后重新绑定,比如绑定的是一个List对象

3 个回复

正序浏览
chenfeng1029
金牌服务用户   /  发表于:2021-6-7 15:38:12
3#
Richard.Ma 发表于 2021-6-7 15:17
如果是非绑定模式的话您可以参考这个博客以及其提供的demo
https://www.grapecity.com/blogs/drag-drop-ro ...

你这个不是我想要的。
那如果绑定数据源,还想拖拽,只能是解绑数据源。
那就变成每行每列,直接读写赋值了。
那性能上差距不小
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2021-6-7 15:17:12
2#
如果是非绑定模式的话您可以参考这个博客以及其提供的demo
https://www.grapecity.com/blogs/drag-drop-rows-within-c1flexgrid
我看你这个功能你应该是已经实现了

如果是在你说的这种绑定模式下,没有办法进行行拖动,因为会改变其中绑定的数据源的结构
回复 使用道具 举报
最佳答案
最佳答案
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2021-6-7 14:19:00
来自 4#
如果是要对绑定的数据源修改顺序的话,如我前面所说,只能是改变数据源的顺序,

可以按照这个例子进行修改
在DragDrop事件中重新修改数据源顺序然后重新绑定,比如绑定的是一个List对象

  1.             if (oldindex > 1 & newindex < oldindex)
  2.             {
  3.                 var temp = list[oldindex];
  4.                 list.Insert(newindex,temp );
  5.                 list.Remove(list[oldindex]);


  6.             }

  7.             //coming downwards
  8.             if (newindex > oldindex & (oldindex + 1) < flex.Rows.Count)
  9.             {
  10.                 var temp = list[oldindex];
  11.                 list.Remove(list[oldindex]);
  12.                 list.Insert(newindex, temp);
  13.             }

  14.             flex.DataSource = list;
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部