none
datagridview中移动行的代码在原来位置删除了移动的行,在新位置没有插入行,请看一下代码是哪里的原因 RRS feed

  • 问题

  • DragDropTargetIndex = this.HitTest(ClientPoint.X, ClientPoint.Y).RowIndex;
     if (DragDropTargetIndex > -1 && DragDropCurrentIndex < this.RowCount )
    { DragDropCurrentIndex = -1;
    DataGridViewRow SourceRow = drgevent.Data.GetData(typeof(DataGridViewRow)) as DataGridViewRow;
     this.Rows.RemoveAt(DragDropSourceIndex);
     this.Rows.Insert(DragDropTargetIndex, SourceRow);
    this.Rows[DragDropTargetIndex].Selected = true;
     this.CurrentCell = this[0, DragDropTargetIndex];
    dyx9010
    2010年2月23日 12:25

全部回复

  • 你DataGridView中做这个搞操更简单,然后绑定到DataGridView上。

    山西.net俱乐部
    2010年2月23日 12:27
    版主
  • 我的gridview是一个自定义控件,在自定义控件中写的移动行的代码,有点问题
    dyx9010
    2010年2月23日 12:30
  • 你好!

    使用排序的方式来处理这个问题更简单。

    1 在数据源中增加一个字符用于排序,比如 int 类型的字段
    2 使用 BindingSorce 绑定 dataGridView 并设置 Sort 属性为排序的字段
    3 移动只需要更改排序值,界面会自动响应。

    知识改变命运,奋斗成就人生!
    2010年2月24日 1:20
    版主
  • 我这个代码是用的别人的,我看有人说代码可以用,但是我一运行,源行的数据删除了,目标行数据没有插入,有高手帮忙看一下代码,帮忙分析一下
    dyx9010
    2010年2月24日 1:23
  • 2010年2月24日 1:35
    版主
  • 那你看看这个地址吧。

    完整的示例(包含行和列的拖动):

    2010年2月24日 1:46
    版主
  • 先插再删不管用,给我的网址的代码拖动行时不管用(我的代码是根据它改写的),

      DataGridViewRow  r = (DataGridViewRow )e.Data.GetData(typeof(DataGridViewRow ));

                        DataTable tmpdt = (DataTable)dataGridView1.DataSource;

                        DataRow r1 = tmpdt.NewRow ();

                        for (int i = 0; i < tmpdt.Columns.Count; i++)

                        {

                            r1[i] = r.Cells[i].Value;

                        }

                        tmpdt.Rows.RemoveAt(r.Index );

                        tmpdt.Rows.InsertAt(r1, Index);
    用datatable 后,拖动行删除后插入了,但是一移动列,例如第一列移动到第0列,再移动行的话,一拖动,第0列的拖动的那行的数据没有的,显示到了第1列,有高手能帮助解决吗,周雪峰版主,有没有高手啊


    dyx9010
    2010年2月24日 14:35
  • 你好!
         把AllowUserToOrderColumns属性设置为true就可以拖动列了,不用自己写代码来实现!
    周雪峰
    2010年2月24日 16:54
    版主
  • 拖动行和列的代码是我自己写了,因为有多头标题,有高手看看行拖动的代码是为什么插入不了吗
    dyx9010
    2010年2月26日 11:41
  • 怎么在网上搜索到的所有的代码都是删除行而不能插入行,用datatable倒是能插入行,但是一移动列又不行了,有真正的高手给指点一下不


    dyx9010
    2010年2月27日 2:05
  •  DataGridViewRow  r = (DataGridViewRow )e.Data.GetData(typeof(DataGridViewRow ));

                        DataTable tmpdt = (DataTable)dataGridView1.DataSource;

                        DataRow r1 = tmpdt.NewRow ();

                        for (int i = 0; i < tmpdt.Columns.Count; i++)

                        {

                            r1[i] = r.Cells[i].Value;

                        }

                        tmpdt.Rows.RemoveAt(r.Index );

                        tmpdt.Rows.InsertAt(r1, Index);

                        dataGridView1.CurrentCell = dataGridView1.Rows[Index].Cells[0];
    这一段 代码可以插入行,但是一移动列又不行了,不知是什么原因


    dyx9010
    2010年2月27日 2:15
  • 是一移动列数据源改变了,有什么解决办法
    dyx9010
    2010年2月27日 2:16