datagridview 整行上移下移

    技术2022-05-20  43

    设计器中只是添加了按钮和datagridview,把datagridview的selectionMode设置为FullRowSelectprivate DataTable dt;//定义一个datatable,作为datagridview的数据源

    //给datatable赋初值private void Form1_Load(object sender, EventArgs e){dt = new DataTable();         

    dt.Columns.Add("Id", typeof(System.Int32));dt.Columns.Add("Code", typeof(System.String));dt.Columns.Add("Name", typeof(System.String));

    dt.Rows.Add(new string[3]{"1", "code1", "name1"});dt.Rows.Add(new string[3]{"2", "code2", "name2"});dt.Rows.Add(new string[3] { "3", "code3", "name3" });dt.Rows.Add(new string[3] { "4", "code4", "name4" });dt.Rows.Add(new string[3] { "5", "code5", "name5" });

    dataGridView1.DataSource = dt;}

    //上移private void btnUp_Click(object sender, EventArgs e){dt = (DataTable)dataGridView1.DataSource;int index = dataGridView1.SelectedRows[0].Index;

    if (dataGridView1.CurrentRow.Index <= 0){return;}else{DataRow tempRow = dt.NewRow();tempRow[0] = dt.Rows[index][0];dt.Rows.InsertAt(tempRow, index - 1);dt.Rows.RemoveAt(index + 1);dataGridView1.ClearSelection();dataGridView1.Rows[index - 1].Selected = true;dataGridView1.DataSource = dt;}}

    //下移

    private void btnDown_Click(object sender, EventArgs e){int index = dataGridView1.SelectedRows[0].Index;if (index == dt.Rows.Count - 1){return;}else if (index == -1){return;}else{DataRow tempRow = dt.NewRow();tempRow[0] = dt.Rows[index][0];dt.Rows.InsertAt(tempRow, index + 2);dt.Rows.RemoveAt(index);dataGridView1.ClearSelection();dataGridView1.Rows[index + 1].Selected = true;dataGridView1.DataSource = dt;}}

     

     

    如果不是从数据源获取数据:

     /// <summary>        /// 上移        /// </summary>        /// <param name="sender"></param>        /// <param name="e"></param>        private void upBtn_Click(object sender, EventArgs e)        {            try             {                DataGridViewSelectedRowCollection dgvsrc = this.parameterDGView.SelectedRows;//获取选中行的集合                if (dgvsrc.Count > 0)                {                    int index = this.parameterDGView.SelectedRows[0].Index;//获取当前选中行的索引                    if (index > 0)//如果该行不是第一行                    {                        DataGridViewRow dgvr = this.parameterDGView.Rows[index - dgvsrc.Count];//获取选中行的上一行                        this.parameterDGView.Rows.RemoveAt(index - dgvsrc.Count);//删除原选中行的上一行                        this.parameterDGView.Rows.Insert((index ), dgvr);//将选中行的上一行插入到选中行的后面                        for (int i = 0; i < dgvsrc.Count; i++)//选中移动后的行                        {                            this.parameterDGView.Rows[index - i-1].Selected = true;                        }                    }

                    }            }           catch{}        }        /// <summary>        /// 下移        /// </summary>        /// <param name="sender"></param>        /// <param name="e"></param>        private void downBtn_Click(object sender, EventArgs e)        {            try            {                DataGridViewSelectedRowCollection dgvsrc = this.parameterDGView.SelectedRows;//获取选中行的集合                if (dgvsrc.Count > 0)                {                    int index = this.parameterDGView.SelectedRows[0].Index;//获取当前选中行的索引                    if (index >= 0&(this.parameterDGView.RowCount-1)!=index)//如果该行不是最后一行                    {                        DataGridViewRow dgvr = this.parameterDGView.Rows[index +1];//获取选中行的下一行                        this.parameterDGView.Rows.RemoveAt(index +1);//删除原选中行的上一行                        this.parameterDGView.Rows.Insert((index+1-dgvsrc.Count), dgvr);//将选中行的上一行插入到选中行的后面                        for (int i = 0; i < dgvsrc.Count; i++)//选中移动后的行                        {                            this.parameterDGView.Rows[index+1-i].Selected = true;                        }                    }

                    }            }           catch { }        }

     

    本文来自博客,转载请标明出处:http://blog.csdn.net/DiggerCore/archive/2010/07/09/5722243.aspx


    最新回复(0)