急求C#编程大神指导,如何使DataGridView1中的某行数据删除后将该行数据添加到DataGridView2中?
一个窗口中有两个DataGridView控件,如何实现DataGridView1表格中的某行数据删除后将这行数据添加到DataGridView2的表格中。最好有实例代码演...
一个窗口中有两个DataGridView控件,如何实现DataGridView1表格中的某行数据删除后将这行数据添加到DataGridView2的表格中。最好有实例代码演示。
展开
4个回答
展开全部
你这样的最好用listbox来做, 比如说你上面两面分别是LISTBOX1 和listbox2 左移和右移的代码分别是
//获取列表框的选项数
int count = lielist.Items.Count;
int index = 0;
//循环判断各个项的选中状态
for (int i = 0; i < count; i++)
{
ListItem Item = lielist.Items[index];
//如果选项为选中状态从目的列表框中删除并添加到源列表框中
if (lielist.Items[index].Selected == true)
{
lielist.Items.Remove(Item);
ListBox2.Items.Add(Item);
//将当前选项索引值减1
index--;
}
//获取下一个选项的索引值
index++;
}
//获取列表框的选项数
int count = ListBox2.Items.Count;
int index = 0;
//循环判断各个项的选中状态
for (int i = 0; i < count; i++)
{
ListItem Item = ListBox2.Items[index];
//如果选项为选中状态从源列表框中删除并添加到目的列表框中
if (ListBox2.Items[index].Selected == true)
{
ListBox2.Items.Remove(Item);
lielist.Items.Add(Item);
//将当前选项索引值减1
index--;
}
//获取下一个选项的索引值
index++;
}
//获取列表框的选项数
int count = lielist.Items.Count;
int index = 0;
//循环判断各个项的选中状态
for (int i = 0; i < count; i++)
{
ListItem Item = lielist.Items[index];
//如果选项为选中状态从目的列表框中删除并添加到源列表框中
if (lielist.Items[index].Selected == true)
{
lielist.Items.Remove(Item);
ListBox2.Items.Add(Item);
//将当前选项索引值减1
index--;
}
//获取下一个选项的索引值
index++;
}
//获取列表框的选项数
int count = ListBox2.Items.Count;
int index = 0;
//循环判断各个项的选中状态
for (int i = 0; i < count; i++)
{
ListItem Item = ListBox2.Items[index];
//如果选项为选中状态从源列表框中删除并添加到目的列表框中
if (ListBox2.Items[index].Selected == true)
{
ListBox2.Items.Remove(Item);
lielist.Items.Add(Item);
//将当前选项索引值减1
index--;
}
//获取下一个选项的索引值
index++;
}
追问
谢谢你的回答。我还想问,如果用listbox的话,再将数据更新到数据库该怎么做?
追答
if (ListBox2.Items.Count == 0) return; //没有选就直接返回
for (int i = 0; i < ListBox2.Items.Count; i++) //对LISTBOX2所有项目遍历
{
这里写加入数据库代码,把 ListBox2.Items[i].Text依次加入数据库
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
//--我只写个大概,思路是这样的,在Click事件下面添加这些代码
var rows=DataGridView1.SelectedRows;
DataGridView1.Remove(rows);//可能要写个循环
DataGridView2.AddRange(rows);
DataGridView1.Refresh();
DataGridView2.Refresh();
var rows=DataGridView1.SelectedRows;
DataGridView1.Remove(rows);//可能要写个循环
DataGridView2.AddRange(rows);
DataGridView1.Refresh();
DataGridView2.Refresh();
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
楼主,这个功能最简捷的实现就是通过数据源绑定到两个控件上,那些中间的左右移按钮事件处理程序中,对这两个数据源数据增减,数据源会自动通知UI刷新数据变化。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你百度搜索【datagridview 选中行】
追问
能不能来个具体的例子?
追答
如图,先在属性--事件里双击弹出RowHeaderMouseClick。这个事件触发函数。
public static string[] s ;//静态数组,用来接收数据后,可以被别的函数调用,方便。
private void dataGridView1_RowHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e)
{
int r = e.RowIndex;//选中的行。
dataGridView1.Rows.RemoveAt(e.RowIndex);//删除第r行。只是DatagridView1里显示删了,数据库没删
int c = dataGridView1.ColumnCount;//DatagridView1的列数
/*把第r行的单元格数据,逐个赋给数组s*/
for (int i = 0; i < c; i++)
{
s[i] = dataGridView1.Rows[r].Cells[i].Value.ToString();
}
}
//数组s的元素获得所删行的内容了。你在你button_click里给DatagridView2的行赋值吧
int r2 = dataGridView2.RowCount;//dataGridView2显示的行数,因为数据是逐格添加、得先知道添加到哪一行。
for (int i = 0; i < s.Length; i++)
{
dataGridView2.Rows[r2 - 1].Cells[i].Value = "a";
}
这时候有个问题,我发现dataGridView里无数据时,此时直接给它的单元格赋值会报错说超出索引范围,因为没有任何行。所以你第一次给DatagridView2数据时,应该用Datatable来。
等它有行数了,你再通过数组来给单元格赋值。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询