有一个名为ds的DataSet,其拥有多个数据表,想在每个表中加一个自动显示行号的字段,
写了一段后台代码如下,DataGrid是动态生成的,最后显示的结果中有自动行号列,并且
列名也正确显示出来了的,但是该列中却没有任何数据,奇怪!怎么办?或者有没有什么
替代方法?foreach( DataTable dt in ds.Tables )
{
  if( dt.Rows.Count > 0 )
  {
    DataColumn dc=new DataColumn();
    dc.DataType = System.Type.GetType("System.Int32");
    dc.AutoIncrement = true;
    dc.AutoIncrementSeed = 1;
    dc.AutoIncrementStep = 1;
    dc.ColumnName="序号";    dt.Columns.Add( dc );
    DataGrid dg=new DataGrid();
    Page.Controls.Add( dg );    dg.DataSource=dt;
    dg.DataBind();
   }
}

解决方案 »

  1.   

    列名也正确显示出来了的,但是该列中却没有任何数据
    -----------------------------------------------
    你是怎么帮定“序号”列的?
    你确认已经帮定:<%#DataBinder.Eval(Container.DataItem,"dc")%>
    或者:<asp:BoundColumn DataField="dc" HeaderText="序号" ></asp:BoundColumn>如果不是上述原因,那就要考虑你是否将dc字段值成功添加到当前Table里面了?
      

  2.   

    应该是这句:
       <asp:BoundColumn DataField="dc" HeaderText="序号" ></asp:BoundColumn>或参考一下此文,看看有没有帮助:
    http://www.21tx.com/dev/2005/07/08/12949.html
      

  3.   

    这就好比你给已存在的表添加了一个字段,虽然是自增的但是对于已有的数据只会保持空值,只有新加记录时才会自动计数。对于你这种情况应该用
    <%# DataGrid1.Items.Count%>or<%# ((DataListItem)Container).ItemIndex %>
      

  4.   

    而且根本没必要这么写.根据ItemIndex显示行号就可以
      

  5.   

    不是的,你们没看出来吗,
    我是在后台代码中生成的DataGrid,我怎么可能在aspx页中写入数据邦定行呢!