您的位置:首页 > 其它

datagridview 整行上移下移

2011-02-28 16:41 113 查看
设计器中只是添加了按钮和datagridview,把datagridview的selectionMode设置为FullRowSelect
private 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 { }
}

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/DiggerCore/archive/2010/07/09/5722243.aspx
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: