c# 将dgv的行存储到另一dgv里面

小布叮 2011-07-28 10:44:35
就是想实现:
点击一个dgv里的DataGridViewButtonColumn(添加)按钮,将这行记录添加并显示在另一窗体的dgv中
第一个dgvl里面每行都有一个DataGridViewButtonColumn(添加)按钮,点击每行的这个按钮,将在另一个窗体的dgv里添加每一行。而第二个dgv的几行记录显示都添加到数据库里。


帮个忙。。。谢谢大家了。。
...全文
543 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
小布叮 2011-11-11
  • 打赏
  • 举报
回复
可以是行索引啦,就是RowIndex之类的。。[Quote=引用 17 楼 pupco 的回复:]

dgvCheckItem.SelectedRows[i] 中i 怎么来的? (怎么定义i)
引用 13 楼 wukaiping870123 的回复:
给你个例子
C# code

//用于获取gridview要被传递的数据
string AssayAb = dgvCheckItem.SelectedRows[i].Cells["AssayAb"].Value.ToS……
[/Quote]
pupco 2011-10-20
  • 打赏
  • 举报
回复
dgvCheckItem.SelectedRows[i] 中i 怎么来的? (怎么定义i)
[Quote=引用 13 楼 wukaiping870123 的回复:]
给你个例子
C# code

//用于获取gridview要被传递的数据
string AssayAb = dgvCheckItem.SelectedRows[i].Cells["AssayAb"].Value.ToString();
string newFemaleRages = dgvCheckItem.SelectedRows[i].Cells["new……
[/Quote]
小布叮 2011-08-01
  • 打赏
  • 举报
回复
小布叮 2011-07-29
  • 打赏
  • 举报
回复
谢谢你的热心帮助~~~!问题解决了~~~~不过是引用13楼的解决方法了。。。怎么说都谢谢啦~~~!![Quote=引用 12 楼 sdl2005lyx 的回复:]

在第一个窗体定义一个事件或委托,注意事件参数就是dgv的行数据:
public DataArgs :EventArgs
{
public object[] rowData;//行数据
}

事件:SendEventHandler(object sender,DataArgs args);
pulic Event SendEventHandler SendData;……
[/Quote]
小布叮 2011-07-29
  • 打赏
  • 举报
回复
原来这样就可以了啊~~~谢谢你啦~!![Quote=引用 13 楼 wukaiping870123 的回复:]

给你个例子
C# code

//用于获取gridview要被传递的数据
string AssayAb = dgvCheckItem.SelectedRows[i].Cells["AssayAb"].Value.ToString();
string newFemaleRages = dgvCheckItem.SelectedRows[i].Cells["ne……
[/Quote]
火星大能猫 2011-07-29
  • 打赏
  • 举报
回复
给你个例子

//用于获取gridview要被传递的数据
string AssayAb = dgvCheckItem.SelectedRows[i].Cells["AssayAb"].Value.ToString();
string newFemaleRages = dgvCheckItem.SelectedRows[i].Cells["newFemaleRages"].Value.ToString();
string RangeMax = dgvCheckItem.SelectedRows[i].Cells["RangeMax"].Value.ToString();
string RangeMin = dgvCheckItem.SelectedRows[i].Cells["RangeMin"].Value.ToString();
string[] strRow = new string[] { (dgvPatinetCkItems.NewRowIndex + 1).ToString(), AssayAb, "", newFemaleRages, RangeMin, RangeMax };

//传递到gridivew2
dgvPatinetCkItems.Rows.Add(strRow);
sdl2005lyx 2011-07-29
  • 打赏
  • 举报
回复
在第一个窗体定义一个事件或委托,注意事件参数就是dgv的行数据:
public DataArgs :EventArgs
{
public object[] rowData;//行数据
}

事件:SendEventHandler(object sender,DataArgs args);
pulic Event SendEventHandler SendData;

void dataGridView1_Click(object sender, EventArgs e)
{
//在这里把dataGridView1.CurrentRow数据赋值给dataGridView2
if(sendData!=null)

DataArgs args=new DataArgs ();
args.rowData=dataGridView1.CurrentRow.ItemArray ;
SendData(this,args);

}

第二个窗体:
订阅窗体1的事件:
Form1 frm1=new Form1 ();
frm1.SendData+=new SendEventHandler (Form2_SendData);

处理事件:
void Form2_SendData(object sender,DataArgs args)
{
object[] rowData=args.rowData; //取出dataGridView1的行数据
dataGridView2.Rows.Add(rowData); //添加到dataGridView2
}

楼主,这样够清晰了吧,上面代码纯手写,你调试一下。。。
小布叮 2011-07-29
  • 打赏
  • 举报
回复
我的意思你都不明白,我想问的不是怎么在DataGridViewButtonColumn列添加事件,而是怎么写将dgv的数据存储到数据库中。。。[Quote=引用 7 楼 sdl2005lyx 的回复:]

楼主,我给你的代码已经很清楚了,你只要在这个函数加出来就可以了。。。
void dataGridView1_Click(object sender, EventArgs e)
{
//在这里把dataGridView1.CurrentRow数据赋值给dataGridView2
}
[/Quote]
小布叮 2011-07-29
  • 打赏
  • 举报
回复
那就是说把第一个dgv的数据先存储到数据库中再在第二个dgv显示出来咯??谢谢啊~!!
[Quote=引用 9 楼 yuwenge 的回复:]

dgv不能存数据,dgv只能表现数据。
[/Quote]
sdl2005lyx 2011-07-28
  • 打赏
  • 举报
回复
private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
if (currDgv.CurrentCell.ColumnIndex == 3 && currDgv.CurrentCell.RowIndex != -1)//这里定位到DataGridViewButtonColumn列
{
(e.Control as Button).Click+=new EventHandler(dataGridView1_Click); //代码添加button的点击事件
}
}

void dataGridView1_Click(object sender, EventArgs e)
{
//在这里把dataGridView1.CurrentRow数据赋值给dataGridView2
}
卧_槽 2011-07-28
  • 打赏
  • 举报
回复
dgv不能存数据,dgv只能表现数据。
xinyuan178 2011-07-28
  • 打赏
  • 举报
回复
呵呵呵 他要的就是这一行函数呀
sdl2005lyx 2011-07-28
  • 打赏
  • 举报
回复
楼主,我给你的代码已经很清楚了,你只要在这个函数加出来就可以了。。。
void dataGridView1_Click(object sender, EventArgs e)
{
//在这里把dataGridView1.CurrentRow数据赋值给dataGridView2
}
jasonnices 2011-07-28
  • 打赏
  • 举报
回复
可以用datatable dt=new datatable()
dt.Merge()方法
小布叮 2011-07-28
  • 打赏
  • 举报
回复
可是我已经给DataGridViewButtonColumn列添加了事件。。
private void dgvXueshengxinxi_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
DataGridViewColumn column = dgvXueshengxinxi.Columns[e.ColumnIndex];
if (column is DataGridViewButtonColumn )
{
//添加事件将这行记录添加并显示在另一窗体的dgv中
第一个dgvl里面每行都有一个DataGridViewButtonColumn(添加)按钮,点击每行的这个按钮,将在另一个窗体的dgv里添加每一行。而第二个dgv的几行记录显示都添加到数据库里。
}
}
就是中间那里不会写。。。




[Quote=引用 4 楼 sdl2005lyx 的回复:]
把我自己代码拷贝,没有修改完整:

private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
if (dataGridView1.CurrentCell.ColumnIndex == 3 && data……
[/Quote]
sdl2005lyx 2011-07-28
  • 打赏
  • 举报
回复
把我自己代码拷贝,没有修改完整:

private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
if (dataGridView1.CurrentCell.ColumnIndex == 3 && dataGridView1.CurrentCell.RowIndex != -1)//这里定位到DataGridViewButtonColumn列
{
(e.Control as Button).Click+=new EventHandler(dataGridView1_Click); //代码添加button的点击事件
}
}

void dataGridView1_Click(object sender, EventArgs e)
{
//在这里把dataGridView1.CurrentRow数据赋值给dataGridView2
}
小布叮 2011-07-28
  • 打赏
  • 举报
回复
另外我把dataGridView1_Click改为别的事件为什么不行呢??[Quote=引用 1 楼 sdl2005lyx 的回复:]

private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
if (currDgv.CurrentCell.ColumnIndex == 3 && currDgv.Curr……
[/Quote]
小布叮 2011-07-28
  • 打赏
  • 举报
回复
currDgv是什么来的的呢??[Quote=引用 1 楼 sdl2005lyx 的回复:]

private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
if (currDgv.CurrentCell.ColumnIndex == 3 && currDgv.Curr……
[/Quote]

110,545

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧