ds是已经取得DataTable的DataSet实例DataTable dt = new DataTable();
DataRow dr;for (int i = pager.PageSize * (pager.CurrentPageIndex - 1); i <= pager.PageSize; i++)
{
   dr = dt.NewRow();
   for (int j = 0; j < ds.Tables[0].Columns.Count; j++) 
   { 
       dr[j]=ds.Tables[0].Rows[i][j].ToString(); //此行出现无法找到列 0。的提示
   }
   dt.Rows.Add(dr);
}

解决方案 »

  1.   

    dr = dt.NewRow();
    =>
    dr = ds.Tables[0].NewRow();
      

  2.   

    DataTable.NewRow方法
    创建与该表具有相同架构的新DataRow
    //dr = dt.NewRow();
    dt没有列,dr当然没有列
      

  3.   

    谢谢,是因为没有列的原因,因为dt的列是根据ds包含的table动态加载的。这个列应该怎么获取?
      

  4.   

    DataTable dt = new DataTable();
    -->
    DataTable dt = ds.Tables[0].Copy();
    dt.Rows.Clear()
      

  5.   

    问题已解决。这个文件是AspNetPager和数据库工厂结合来显示数据的。
    AspNetPager地址:http://www.ecbcn.com/BBS/dispbbs.asp?BoardID=24&id=294
    数据库工厂地址:http://dev.csdn.net/article/26/26098.shtm数据库工厂里IDbDataAdapter的Fill没有重载版本,导致AspNetPager分页的实现出现困难。虽然现在问题解决了,但感觉解决方式不好,高手们有没有更好的解决方式?        DataSet ds = DbAccess.Select(strSql);
            DataTable dt = new DataTable();
            DataRow dr;
            foreach (DataColumn dc in ds.Tables[0].Columns) 
            {
                dt.Columns.Add(new DataColumn(dc.ColumnName, dc.DataType));
            }
            for (int i = pager.PageSize * (pager.CurrentPageIndex - 1); i < pager.PageSize * pager.CurrentPageIndex; i++)
            {
                if (i < pager.RecordCount) 
                { 
                    dr = dt.NewRow();
                    for (int j = 0; j < ds.Tables[0].Columns.Count; j++) 
                    { 
                        dr[j]=ds.Tables[0].Rows[i][j].ToString();
                    }
                    dt.Rows.Add(dr);
                }
            }
            Repeater1.DataSource = dt;