设计器中只是添加了按钮和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