如题,我dgv有多条数据,我想选中一行右键 之后弹出 右键的菜单,选择 上调 就把 选中行移到 上面,选择下调 就移到下面,在移动的过程中数据不变,就类似于 微软的那个新建菜单时的调整顺序,这个功能在dgv中如何实现啊?求高手解答

解决方案 »

  1.   

    如果有排序字段的话,改变字段顺序,或者用sql重新排,在帮定,如果是非数据集就简单了,随便insert一个
      

  2.   

    您的方法 不适合我的操作啊,我的页面上有两个dgv 同时绑定一个数据源,我只想改变处于激活状态下dgv选中行的位置,如果重新查会很卡,有没有什么 办法 可以直接操作dgv的 记录修改行的rowindex
      

  3.   


    /// <summary>
            /// 行上移
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void btnUpper_Click(object sender, EventArgs e)
            {
                    if (this.dgvConfig.CurrentRow != null)
                    {
                        //获取当前所选择的记录行号 
                        int index = this.dgvConfig.CurrentRow.Index;
                        object[] _rowData = m_ColumnTable.Rows[index].ItemArray;
                        m_ColumnTable.Rows[index].ItemArray = m_ColumnTable.Rows[index - 1].ItemArray;
                        //记录上移一行 
                        m_ColumnTable.Rows[index - 1].ItemArray = _rowData;                    //选择的光标同时上移一行 
                        this.dgvConfig.CurrentCell = this.dgvConfig[this.dgvConfig.CurrentCell.ColumnIndex, this.dgvConfig.CurrentCell.RowIndex - 1];
                    }
                }
            }        /// <summary>
            /// 行下移
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void btnLower_Click(object sender, EventArgs e)
            {
                    //获取当前所选择的记录行号 
                    int index = this.dgvConfig.CurrentRow.Index;
                    object[] _rowData = m_ColumnTable.Rows[index].ItemArray;
                    m_ColumnTable.Rows[index].ItemArray = m_ColumnTable.Rows[index + 1].ItemArray;
                    //记录下移一行 
                    m_ColumnTable.Rows[index + 1].ItemArray = _rowData;                //选择的光标同时下移一行
                    this.dgvConfig.CurrentCell = this.dgvConfig[this.dgvConfig.CurrentCell.ColumnIndex, this.dgvConfig.CurrentCell.RowIndex + 1];
                }
            }