当前位置:编程学习 > C#/ASP.NET >>

为什么我的代码老是报该行已存在另一张表中

   //开始答题
            DataSet datti2 = new DataSet();//声明一个数据集
            //此处省略了获得表0的过程
            foreach (ListViewItem one in listView1.Items)
            {
                //根据选中的数据文件,加载数据
                //datti2.ReadXmlSchema(one.SubItems[1].Text);
                datti2.ReadXml(one.SubItems[1].Text);
                datti2.Tables.Add("临时表");
                //datti2.Tables[1].Clone();
                //datti2.Tables[1].Clear();
                //利用循环,从选中的题库中抽取题目
                for (int i = 0; i < Convert.ToInt32(one.SubItems[2].Text); i++)
                {
                    int a = rnd.Next(0, datti2.Tables[0].Rows.Count);//产生一个随机数,随机数的范围是:0-提取选中题库表中的行数
                    //向临时数据集的表中添加从选中题库的题目(数量是自己刚开是从NumericUpDown选择的数量)
                    //创建使用指定值的行添加到数据行集合中
                    //datti2.Tables[1].Rows.Add(datti2.Tables[0].Rows[a]);
                    DataRow row = datti2.Tables[1].NewRow();
                    row = datti2.Tables[0].Rows[a];
                    datti2.Tables[1].Rows.Add(row);//这里报错:该行已存在另一张表中
                }
                dataGridView1.DataSource = datti2.Tables[1];//将符合选择条件的临时表的信息显示到DataGridView中
                datti2.Tables[1].Clear();//清空临时表中的数据
            }
--------------------编程问答-------------------- DataRow row = datti2.Tables[1].NewRow();
  row = datti2.Tables[0].Rows[a];//这里有问题,应该是把datti2.Tables[0].Rows[a]里的值付给row,而不是把datti2.Tables[0].Rows[a]付给row

  datti2.Tables[1].Rows.Add(row);//这里报错:该行已存在另一张表
补充:.NET技术 ,  .NET Framework
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,