dev gridview拖拽数据移动
设置属性gridView1.OptionsSelection.EnableAppearanceFocusedCell = false; //确保选定行的背景色一样。

private BindingList<T> DataSource;
//dvginfo根据鼠标点击的x、y坐标获取该点的相关信息
private GridHitInfo downHitInfo;
private GridHitInfo upHitInfo; private void frmToExcelModel_Load(object sender, EventArgs e)
{
Init();
dvginfo.AllowDrop = true; // 确保能够拖拽
DataSource = new BindingList<T>();
dvginfo.DataSource =DataSource;
}
private void gridView1_CustomDrawRowIndicator(object sender, DevExpress.XtraGrid.Views.Grid.RowIndicatorCustomDrawEventArgs e)
{
e.Appearance.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Far;
if (e.Info.IsRowIndicator)
{
if (e.RowHandle >= )
{
e.Info.DisplayText = (e.RowHandle + ).ToString();
}
else if (e.RowHandle < && e.RowHandle > -)
{
e.Info.Appearance.BackColor = System.Drawing.Color.AntiqueWhite;
e.Info.DisplayText = "G" + e.RowHandle.ToString();
}
}
}
#region 数据源拖拽
private void dvginfo_MouseDown(object sender, MouseEventArgs e)
{
downHitInfo = gridView1.CalcHitInfo(new Point(e.X, e.Y));
} private void dvginfo_MouseMove(object sender, MouseEventArgs e)
{
if (e.Button != MouseButtons.Left) return; //判断是否是左键
if (downHitInfo == null || downHitInfo.RowHandle < ) return; //判断按下的位置是否有值,是否是gridview 的Items.
int[] rows = gridView1.GetSelectedRows();
List<ColunmData> linemodels = new List<ColunmData>();
foreach (int r in rows) // 获取gridview 数据源中对应的信息。
{
//根据 gridview 中的行索引获取数据源中对应的是行索引
int dataSourcerows = gridView1.GetDataSourceRowIndex(r);
linemodels.Add(DataSouse[dataSourcerows]);
}
dvginfo.DoDragDrop(linemodels, DragDropEffects.Move);//开始拖放操作。 }
//拖拽过程事件
private void dvginfo_DragOver(object sender, DragEventArgs e)
{
e.Effect = DragDropEffects.Move;
}
//拖拽完成后事件
private void dvginfo_DragDrop(object sender, DragEventArgs e)
{
//获取鼠标在屏幕上的位置。
Point gridviewPoint = this.PointToScreen(this.dvginfo.Location);
//获取 gridview 中对应的的位置(屏幕位置减去 gridView 开始位置)
upHitInfo = gridView1.CalcHitInfo(new Point(e.X - gridviewPoint.X, e.Y - gridviewPoint.Y));
if (upHitInfo == null || upHitInfo.RowHandle < ) return;
//获取释放的位置列索引
int endRow = gridView1.GetDataSourceRowIndex(gridView1.GetDataSourceRowIndex(upHitInfo.RowHandle));
List<ColunmData> row = e.Data.GetData(typeof(List<ColunmData>)) as List<ColunmData>; //获取要移动的数据
if (row != null && row.Count > ) //没有移动的数据跳过
{
int a;
//获取移动列集合的第一列在数据源的索引
int startRow = DataSouse.IndexOf(row[]);
ColunmData xs = DataSouse[endRow];
if (!row.Contains(xs)) //如果多选的话,确保不能拖拽到这几个里
{
gridView1.ClearSelection();
//排序,先删除后后添加,
for (int i = ; i < row.Count; i++)
DataSouse.Remove(row[i]);
//若果往上托,则加在鼠标到达行的上面
//如果往下拖,则加在鼠标到达行的下面
if (startRow > endRow)
a = DataSouse.IndexOf(xs);
else
a = DataSouse.IndexOf(xs) + ;
for (int i = ; i < row.Count; i++)
{
DataSouse.Insert(a + i, row[i]);
gridView1.SelectRow(a + i);
}
gridView1.FocusedRowHandle = a;
}
}
dvginfo.DataSource = DataSouse;
gridView1.RefreshData();
}
#endregion
dev gridview拖拽数据移动的更多相关文章
- Dev Grid拖拽移动行
效果图 源码下载 拖拽时带行截图效果实现代码 /// <summary> /// 拖拽帮助类 /// </summary> public static class DragHe ...
- Android中GridView拖拽的效果【android进化三十六】
最 近看到联想,摩托罗拉等,手机launcher中有个效果,进入mainmenu后,里面的应用程序的图标可以拖来拖去,所以我也参照网上给的代码,写了 一个例子.还是很有趣的,实现的流畅度没有人家的 ...
- Android中GridView拖拽的效果
最 近看到联想,摩托罗拉等,手机launcher中有个效果,进入mainmenu后,里面的应用程序的图标可以拖来拖去,所以我也参照网上给的代码,写了 一个例子.还是很有趣的,实现的流畅度没有人家的那么 ...
- android ListView和GridView拖拽移位具体实现及拓展
关于ListView拖拽移动位置,想必大家并不陌生,比较不错的软件都用到如此功能了.如:搜狐,网易,百度等,但是相比来说还是百度的用户体验较好,不偏心了,下面看几个示例: 首 ...
- android ListView和GridView拖拽移位实现代码
关于ListView拖拽移动位置,想必大家并不陌生,比较不错的软件都用到如此功能了.如:搜狐,网易,百度等,但是相比来说还是百度的用户体验较好,不偏心了,下面看几个示例: 首先 ...
- dev TreeList拖拽
一.说明 使用dev控件,TreeList1向TreeList2拖拽 二.属性 //允许拖拽 treeList1.AllowDrop = true; tre ...
- YAPI windows 二次开发 树形结构 多层级结构 拖拽 数据导入 接口自动化测试
什么是YAPI: 高效.易用.功能强大的API管理平台 http://yapi.demo.qunar.com/ github: https://github.com/YMFE/yapi 可以去那里下载 ...
- 记录DEV gridview获取行列数据方法
DataRow dr = this.gridView1.GetDataRow(this.gridView1.FocusedRowHandle);//获取选中行 string str = gridVie ...
- Android 可拖拽的GridView效果实现, 长按可拖拽和item实时交换
转帖请注明本文出自xiaanming的博客(http://blog.csdn.net/xiaanming/article/details/17718579),请尊重他人的辛勤劳动成果,谢谢! 在And ...
随机推荐
- 以下示例使用一个 x,y 坐标列表创建了一个多边形几何对象。然后使用裁剪工具来裁剪具有多边形几何对象的要素类。
import arcpy # Create an Array object. # array = arcpy.Array() # List of coordinates. # coordList = ...
- 在 bat 批处理中运行多次 mvn
在 bat 中运行 mvn 命令会出现这种情况,构建命令执行完成后会停留在的 mvn.bat 中,必需手工输入 exit 后,才会回到原来的脚本中继续运行.这是怎么回事? 到 maven 的安装目录下 ...
- git send-email时报错:Client host rejected: cannot find your hostname 如何处理?
1. 先找出ip对应的域名 dig +short -x <your ip> 2. 如果第1步没有输出,那么需要将hostname与ip绑定,如:hostname为jello,那么是往/et ...
- input 表单
1:datalist元素,一般与input组建配合使用,以定义可能输入的值,例如: <!DOCTYPE html> <html lang="en"> < ...
- String类的常用方法以及知识点总结
一,String的简介: 查阅API中的String类的描述,发现String 类代表字符串.Java 程序中的所有字符串字面值(如 "abc" )都作为此类的实例实现. 一旦这个 ...
- 自己的框架引入smarty的问题
这段时间自己学着写PHP的MVC框架,想把Smarty 作为view类加载, 可是自动加载它的时候就出错. 无论改文件名,还是改变路径,都无法解决问题, 我搜索一下相关问题,发现是自动加载Smarty ...
- Python中webbrowser的用法
#coding:utf-8 import time import webbrowser as web import os import random #随机选择一个浏览器打开网页 def open_u ...
- Scala面向对象01
- Swift3.0添加桥接文件
注意是在target下不是project !!!纠结了好久表示...... 都这里一直编译错误,找不到该桥接文件,这里也是纠结了好久......最后原因是不能使用下划线就可以了....<表示这是 ...
- 安装flanal报错解决
1.:Error registering network: failed to acquire lease: node "test4" pod cidr not assigned ...