DevGridView拖拽行进行排序

更新时间:2023-07-15 22:51:28 阅读: 评论:0


    public partial class Form1 : Form
    {
        public Form1()
        {
世界mba排名            InitializeComponent();
            GridViewInit();
            BindGrid();
        }
        //鼠标坐标
        private GridHitInfo downHitInfo; //鼠标左键按下去时在GridView中的坐标
        private GridHitInfo upHitInfo; //鼠标左键弹起来时在GridView中的坐标
initiative        private int startRow; // 拖拽的第一行
bbq什么意思        private int[] rows; //拖拽的所有行
        //数据源
        DataTable dtSource;如何学习托福
   
        private void GridViewInit()
        {
            gridControl1.AllowDrop = true; // 确保能够拖拽
            gridView1.OptionsSelection.MultiSelect = true;  //确保能够多选
            gridView1.OptionsSelection.EnableAppearanceFocudCell = fal; //确保选定行的背景色一样
            gridView1.OptionsSelection.EnableAppearanceFocudCell = fal; //确保选定行的背景色一样。
            gridView1.OptionsBehavior.Editable = fal;
        }
        private void BindGrid()
        {
            gridControl1.DataSource = dtSource;
        }
        //鼠标按下事件bepanthen
        private void gridView1_MouDown(object nder, MouEventArgs e)
        {
            downHitInfo = gridView1.CalcHitInfo(new Point(e.X, e.Y));  //鼠标左键按下去时在GridView中的坐标
        }
        //鼠标移动事件
        private void gridView1_MouMove(object nder, MouEventArgs e)
有趣的发明        {
            if (e.Button != MouButtons.Left) return;        //不是左键则无效
            if (downHitInfo == null || downHitInfo.RowHandle < 0) return;  //判断鼠标的位置是否有效
            rows = gridView1.GetSelectedRows();  //获取所选行的index
            startRow = rows.Length == 0 ? -1 : rows[0];
            DataTable dt = dtSource.Clone();
            foreach (int r in rows)  // 根据所选行的index进行取值,去除所选的行数据,可能是选取的多行
            {
                int dataSourcerows = gridView1.GetDataSourceRowIndex(r); //获取行数据
                dt.ImportRow(dtSource.Rows[dataSourcerows]); //保存所选取的行数据
            }
          gridControl1.DoDragDrop(dt, DragDropEffects.Move);//开始拖放操作,将拖拽的数据存储起来
        }
        //拖拽过程事件
        private void gridControl1_DragOver(object nder, DragEventArgs e)
        {
            e.Effect = DragDropEffects.Move;
        }
        //拖拽完成后事件
        private void gridControl1_DragDrop(object nder, DragEventArgs e)
        {
            Point gridviewPoint = this.idControl1.Location);  //获取鼠标在屏幕上的位置。
            upHitInfo = gridView1.CalcHitInfo(new Point(e.X - gridviewPoint.X, e.Y - gridviewPoint.Y));  //鼠标左键弹起来时在GridView中的坐标(屏幕位置减去 gridView 开始位置)
            if (upHitInfo == null || upHitInfo.RowHandle < 0) return;
            int endRow = gridView1.GetDataSourceRowIndex(gridView1.GetDataSourceRowIndex(upHitInfo.RowHandle)); //获取拖拽的目标行index
关于职业的英语单词            DataTable dt = e.Data.GetData(typeof(DataTable)) as DataTable;  //获取要移动的数据,从拖拽保存的地方:(gridControl1.DoDragDrop(dt, DragDropEffects.Move); )
periods
            if (dt != null && dt.Rows.Count > 0) //拖拽的数据为空
            {
                int a;
                DataRow xs = dtSource.Rows[endRow]; //获取拖拽的目标行,准备进行移植
                if (!rows.Contains(endRow))  //如果多选的话,确保不能拖拽到这几个里
                {
                    gridView1.ClearSelection();  //从GirdView中删除所拖拽的数据
                    int moveValue = 0;
                    foreach (int i in rows)
                    {
                        dtSource.Rows.Remove(dtSource.Rows[i - moveValue]);  //从GirdView的数据源中删除所拖拽的数据
                        moveValue++;
                    }
                    if (startRow > endRow)
                        a = dtSource.Rows.IndexOf(xs);  //若果往上托,则加在鼠标到达行的上面
                    el
                        a = dtSource.Rows.IndexOf(xs) + 1;  //如果往下拖,则加在鼠标到达行的下面
                    int j = 0;
                    DataRow drTemp;
                    foreach (DataRow dr in dt.Rows)
                    {
                        drTemp = dtSource.NewRow();
                        foreach (DataColumn dc in dr.Table.Columns)
                        {
                            drTemp[dc.ColumnName] = dr[dc.ColumnName];越狱第四季16
                        }
                        dtSource.Rows.InrtAt(drTemp, a + j); //将拖拽的数据再次添加进来
                        gridView1.SelectRow(a + j);
                        j++;
fruit                    }
                    gridView1.FocudRowHandle = a;
                }
                gridControl1.DataSource = dtSource; //重新绑定
                gridView1.RefreshData();
            }
        }
   

本文发布于:2023-07-15 22:51:28,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/78/1098571.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:鼠标   数据   确保   获取   进行   位置   事件
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图