datagridview取值问题

kafanqd 2010-04-20 08:36:08
我做一个销售管理的窗体,涉及到两个主从表:销售记录,销售明细

分别用ddatagridview1和datagridview2显示。
我现在已经实现了dw1与dw2的关联,当选中dw1的记录时,dw2的内容会跟着发生变化。主键是:销售编号。


我现在遇到的问题是:

我想在dw2中添加销售明细记录,但是想从dw1中提取相关的几个关键字段,直接填入dw2对应的字段中,如:销售代表姓名,销售编码,所属会计区间等。

请问如何让dw2在添加新记录时,直接引用dw1当前记录的某些字段。

谢谢!
...全文
385 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
可乐63 2010-04-20
  • 打赏
  • 举报
回复
“让dw2在添加新记录时,直接引用dw1当前记录的某些字段”,我觉得你既然已经实现了数据关联,为什么不通过关联直接用sql把dw1的某些字段数据在dw2中显示出来不就可以了,何必还搞什么赋值呢。
lihaihuai3yy 2010-04-20
  • 打赏
  • 举报
回复
其实很简单 在你对griview1添加数据后 数据库就会有数据的变更 这会你就在数据库里头写个触发器 或者 你在后台代码 把gridview1的添加事件 跟gridview2的更新事件放在一个事物里头处理 这样就好了
zhuazhuqingchong 2010-04-20
  • 打赏
  • 举报
回复
得到dataGridView1的值,直接赋给dataGridView2中对应的Cell
lby4020 2010-04-20
  • 打赏
  • 举报
回复
不错,呵呵,我也学了一招!
程序海哥 2010-04-20
  • 打赏
  • 举报
回复
更正一下:是dw1
dw1.Rows[dw1.CurrentRow.Index].Cells["销售代表姓名"].Value.ToString();//dw1表必有此字段
dw1.Rows[dw1.CurrentRow.Index].Cells["销售编码"].Value.ToString(); //dw1表必有此字段
dw1.Rows[dw1.CurrentRow.Index].Cells["所属会计区间"].Value.ToString();//dw1表必有此字段
程序海哥 2010-04-20
  • 打赏
  • 举报
回复
实现方法有很多种,现说一种给你参考,希望对你有所帮助。
当你双击dw1某行时,直接取当前激活行相应单元格的值,目的把共同的值插入到dw2

dw1.Rows[dw2.CurrentRow.Index].Cells["销售代表姓名"].Value.ToString();//dw1表必有此字段
dw1.Rows[dw2.CurrentRow.Index].Cells["销售编码"].Value.ToString(); //dw1表必有此字段
dw1.Rows[dw2.CurrentRow.Index].Cells["所属会计区间"].Value.ToString();//dw1表必有此字段

因为你想要在dw2添加dw1主记录明细,所以你可以这样做,当你点dw1某记录时弹出一个子窗体,而这个子窗体里有《销售代表姓名》、《销售编码》、《所属会计区间》相应的TextBox 接收前面三个值,当然还有其它TextBox是明细其它字段,这样子窗体上有一个《保存按钮》,在《保存按钮》写插入到dw2语句就可以了。


深海之蓝 2010-04-20
  • 打赏
  • 举报
回复
this.dataGridView1.CurrentRow.Cells[0].Value.ToString()
itliyi 2010-04-20
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 sprc_lcl 的回复:]
DataGridViewRow dgvr = this.dataGridView1.SelectedRows[0];
for (int i = 0; i < dgvr.Cells.Count; i++)
{
Console.Write(dgvr.Cells[i].Value.ToString());
}

//看看打印结果
[/Quote]
Mr_SuperMan 2010-04-20
  • 打赏
  • 举报
回复
同意四樓,獲取當前行的對象,直接操作行對象
kinglot 2010-04-20
  • 打赏
  • 举报
回复
dw1.DataSource = dt1; //销售记录datatable
dw2.DataSource = dt2; //销售明细datatable
//以下为明细表新增
DataRow dr = dt2.NewRow();
dr[0] = 当前dw1选中行的第几列数据/根据当前dw1选中行的ID从dt1取值
dr[1] = 当前dw1选中行的第几列数据/根据当前dw1选中行的ID从dt1取值
dt2.Rows.Add(dr);
dw2.DataSource = dt2; //将新的明细datatable再次绑定到dw2;
sprc_lcl 2010-04-20
  • 打赏
  • 举报
回复
DataGridViewRow dgvr = this.dataGridView1.SelectedRows[0];
for (int i = 0; i < dgvr.Cells.Count; i++)
{
Console.Write(dgvr.Cells[i].Value.ToString());
}

//看看打印结果
kafanqd 2010-04-20
  • 打赏
  • 举报
回复
如何获取当前dw1选中记录的相应字段的数据?
kafanqd 2010-04-20
  • 打赏
  • 举报
回复
呵呵,请详细点
,我想了解细节,谢谢!
titth 2010-04-20
  • 打赏
  • 举报
回复

思路:
当给DW2添加记录的时候,取得DW1的选中行中特定单元格的値

把取得的DW1的値付给DW2的新记录就可以了啊
kafanqd 2010-04-20
  • 打赏
  • 举报
回复
谢谢各位的帮助,我是这样处理的:

方法一:(成功)
dw2的添加按钮的click事件

dw2.CurrentRow.Cells["uid"].Value = dw1.CurrentRow.Cells["uid"].Value.ToString();

这样可以实现我要求的效果。
方法二:( 不成功)
我想用dw2的DefaultValuesNeeded
e.Row.Cells["uid"].Value = dw1.CurrentRow.Cells["uid"].Value.ToString();

请问这是为什么?错在哪里?

111,125

社区成员

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

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

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