异常详细信息: System.ArgumentException: 该行已经属于此表。

        修改前:有错误的代码.

        DataTable dt = new DataTable();
        DataRow dr
= dt.NewRow();     
       
int i;
        dt.Columns.Add(
new DataColumn("int", typeof(System.Int32)));
        dt.Columns.Add(
new DataColumn("string", typeof(System.String)));
        dt.Columns.Add(
new DataColumn("datatime", typeof(System.DateTime)));
        dt.Columns.Add(
new DataColumn("boolean", typeof(System.Boolean)));

       
for (i = 0; i < 9; i++)
        {
           
            dr[
0] = i;
            dr[
1] = "item" + i.ToString();
            dr[
2] = System.DateTime.Now.ToShortDateString();
           
if (i / 2 == 0)
            {
                dr[
3] = true;
            }
           
else
            {
                dr[
3] = false;
            }

            dt.Rows.Add(dr);

        }
       
this.GridView1.DataSource = dt;
       
this.GridView1.DataBind();
    }

 

修改后:

  DataTable dt = new DataTable();
      
       
int i;
        dt.Columns.Add(
new DataColumn("int", typeof(System.Int32)));
        dt.Columns.Add(
new DataColumn("string", typeof(System.String)));
        dt.Columns.Add(
new DataColumn("datatime", typeof(System.DateTime)));
        dt.Columns.Add(
new DataColumn("boolean", typeof(System.Boolean)));

       
for (i = 0; i < 9; i++)
        {
            DataRow dr
= dt.NewRow();
            dr[
0] = i;
            dr[
1] = "item" + i.ToString();
            dr[
2] = System.DateTime.Now.ToShortDateString();
           
if (i / 2 == 0)
            {
                dr[
3] = true;
            }
           
else
            {
                dr[
3] = false;
            }

            dt.Rows.Add(dr);

        }
       
this.GridView1.DataSource = dt;
       
this.GridView1.DataBind();
    }

实例化行应该放在循环当中。另外,在实例化一个行时候不能用new DataRow();而用dt.NewRow();

莫非DataRow还有自动记忆功能,真搞不明白.

 

 

 

①DataSet::内存数据库

DataSet  mydataset = new DataSet();

②DataTable:内存数据表

DataTable mydatatalbe = new DataTable();

③DataColumn:数据列

DataColumn mycolumn = new  DataColumn();

④DataRow:数据行
DataRow mydatarow = mydatatable.NewRow();

→→

mydataset.Tables.Add(mydatable);

mydataset.Tables["mydatatable"].Columns.Add(mycolumn);

mydataset.Tables["mydatatable"].Rows.Add(mydatarow);

↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

private void Page_Load(object sender, System.EventArgs e)
  {
   // 在此处放置用户代码以初始化页面
   //创建一个表
   DataTable dt = new DataTable();
   DataRow dr;
   
   //DataColumn dtcolumn;
   
  // dtcolumn = new DataColumn("整数型",System.Type.GetType("System.Int32"));
  //dtcolumn = new DataColumn("字符串数值",typeof(string));
  // dtcolumn = new DataColumn("日期时间值",typeof(DateTime));
  // dtcolumn = new DataColumn("布尔值",typeof(bool));
 //  dt.Columns.Add(dtcolumn);
//若想用上面的句式实现添加列,会出现这样的错误:无法找到第1列。原因是你这样写只初始化了一个
 dtcolumn,要修改一下才能完成。请自己想办法。


  dt.Columns.Add(new DataColumn("整数值", typeof(Int32)));
   dt.Columns.Add(new DataColumn("字符串值", typeof(string)));
  dt.Columns.Add(new DataColumn("日期时间值", typeof(DateTime)));
  dt.Columns.Add(new DataColumn("布尔值", typeof(bool)));

    for(int i=1;i<=9;i++)
   {
    dr = dt.NewRow();
//若把dr = dt.NewRow();写在循环外,则出现以下错误:异常详细信息: System.ArgumentException: 该行已经属于此表。
    dr[0]=i;
    dr[1]="项 "+i.ToString();
    dr[2]=DateTime.Now;
    dr[3]=(i%2!=0)?true:false;
  dt.Rows.Add(dr);
   }


   DataGrid1.DataSource=new DataView(dt);
   DataGrid1.DataBind();

   TimeMsg.Text=DateTime.Now.ToString();

   }

 


 

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值