C# datagridview 问题

zhiyi_zhou001 2011-01-21 10:38:49
请问

Form1
private void button1_Click(object sender, EventArgs e)
{
Form1 f1 = new Form1();
f1.ShowDialog();
cla = f1.CLA;

dcop();
}

private void dcop()
{

for (int i = 0; i < cla.Count; i++)
{
dataGridView1.Rows.Add();
dataGridView1.Rows[i].Cells[0].Value = cla[i].商品类型;
dataGridView1.Rows[i].Cells[1].Value = cla[i].商品编码;
dataGridView1.Rows[i].Cells[2].Value = cla[i].商品名称;
dataGridView1.Rows[i].Cells[3].Value = cla[i].规格型号;
dataGridView1.Rows[i].Cells[4].Value = cla[i].单位;
dataGridView1.Rows[i].Cells[5].Value = cla[i].价格;
dataGridView1.Rows[i].Cells[6].Value = cla[i].数量;
dataGridView1.Rows[i].Cells[7].Value = cla[i].价格;

}

}


Form2
public List<DallClass1> CLA { get { return cla; } set { cla = value; } }
private void button1_Click(object sender, EventArgs e)
{
cla = new List<DallClass1>();

for (int i = 0; i < dataGridView2.Rows.Count; i++)
{
if ((bool)dataGridView2.Rows[i].Cells[0].EditedFormattedValue == true)
{
DallClass1 dc = new DallClass1();
dc.商品类型 = dataGridView2.Rows[i].Cells[2].Value.ToString();
dc.商品编码 = dataGridView2.Rows[i].Cells[3].Value.ToString();

dc.商品名称 = dataGridView2.Rows[i].Cells[4].Value.ToString();
dc.规格型号 = dataGridView2.Rows[i].Cells[5].Value.ToString();

dc.单位 = dataGridView2.Rows[i].Cells[6].Value.ToString();
dc.价格 = dataGridView2.Rows[i].Cells[7].Value.ToString();
CLA.Add(dc);
}
}
this.Close();
}


为什么Form1第二次接收Form2传的值会把Form2第一次传的值给覆盖了
...全文
62 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
llszn 2011-01-21
  • 打赏
  • 举报
回复
for (int i = 0; i < cla.Count; i++)
{
int rindex=dataGridView1.Rows.Add();
dataGridView1.Rows[rindex].Cells[0].Value = cla[i].商品类型;
dataGridView1.Rows[rindex].Cells[1].Value = cla[i].商品编码;
dataGridView1.Rows[rindex].Cells[2].Value = cla[i].商品名称;
dataGridView1.Rows[rindex].Cells[3].Value = cla[i].规格型号;
dataGridView1.Rows[rindex].Cells[4].Value = cla[i].单位;
dataGridView1.Rows[rindex].Cells[5].Value = cla[i].价格;
dataGridView1.Rows[rindex].Cells[6].Value = cla[i].数量;
dataGridView1.Rows[rindex].Cells[7].Value = cla[i].价格;

}

zhiyi_zhou001 2011-01-21
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 llszn 的回复:]
for (int i = 0; i < cla.Count; i++)
{
dataGridView1.Rows.Add();
dataGridView1.Rows[i].Cells[0].Value = cla[i].商品类型;
dataGridView1.Rows[i].Cells[1].Value = cla[i].商品编码;
dataGridView1.Row……
[/Quote]
那应该怎么办?
DGTGDDD 2011-01-21
  • 打赏
  • 举报
回复
对 就是for 循环 索引值错了 每次都从 0 开始 当然要被覆盖哦

楼上 shiguohui000的写法正确
shighui 2011-01-21
  • 打赏
  • 举报
回复
for循环错了,不应该从第0行开始
dataGridView1.Rows.Add();
dataGridView1.Rows[dataGridView1.Rows.Count-1].Cells[0].Value = cla[i].商品类型;
dataGridView1.Rows[dataGridView1.Rows.Count-1].Cells[1].Value = cla[i].商品编码;
dataGridView1.Rows[dataGridView1.Rows.Count-1].Cells[2].Value = cla[i].商品名称;
dataGridView1.Rows[dataGridView1.Rows.Count-1].Cells[3].Value = cla[i].规格型号;
dataGridView1.Rows[dataGridView1.Rows.Count-1].Cells[4].Value = cla[i].单位;
dataGridView1.Rows[dataGridView1.Rows.Count-1].Cells[5].Value = cla[i].价格;
dataGridView1.Rows[dataGridView1.Rows.Count-1].Cells[6].Value = cla[i].数量;
dataGridView1.Rows[dataGridView1.Rows.Count-1].Cells[7].Value = cla[i].价格;
llszn 2011-01-21
  • 打赏
  • 举报
回复
for (int i = 0; i < cla.Count; i++)
{
dataGridView1.Rows.Add();
dataGridView1.Rows[i].Cells[0].Value = cla[i].商品类型;
dataGridView1.Rows[i].Cells[1].Value = cla[i].商品编码;
dataGridView1.Rows[i].Cells[2].Value = cla[i].商品名称;
dataGridView1.Rows[i].Cells[3].Value = cla[i].规格型号;
dataGridView1.Rows[i].Cells[4].Value = cla[i].单位;
dataGridView1.Rows[i].Cells[5].Value = cla[i].价格;
dataGridView1.Rows[i].Cells[6].Value = cla[i].数量;
dataGridView1.Rows[i].Cells[7].Value = cla[i].价格;

}

每一次,i都从0开始。所以....
纵横宇宙 2011-01-21
  • 打赏
  • 举报
回复
你的 CLA 是个引用对象来的,当然会覆盖了
shighui 2011-01-21
  • 打赏
  • 举报
回复
你每次都new 一个Form1,所以你第二次传过来的值并没有放到第一次的那个Form1中去,而是放到新new 的Form1中去了。

110,570

社区成员

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

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

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