this.GridView1.DataSource = oledbcmd.ExecuteReader();
this.GridView1.DataBind();
this.GridView1.Columns[0].HeaderText = "序号";在最后一句提示:索引超出范围。必须为非负值并小于集合大小。
参数名: index

解决方案 »

  1.   

    oledbcmd.ExecuteReader()
    executereader()返回的是datareader吧,该对象不能做datasource.
      

  2.   

    this.GridView1.DataSource   =   oledbcmd.ExecuteReader();//不可以用这句来绑定.它不是数据集 
    this.GridView1.Columns[0].HeaderText   =   "序号"; //设置标头应该在绑定前设置好,而不是绑定后
    this.GridView1.DataBind(); 
      

  3.   

    我的并数据库里数据,并且可以显示ACCESS数据库中的数据,
    但是加一个
    this.GridView1.Columns[0].HeaderText   =   "序号"; 提示: 索引超出范围。必须为非负值并小于集合大小。 
    参数名:   index
      

  4.   

    绑定之前设置序号后,
    this.GridView1.Columns[0].HeaderText   =   "序号"; 提示: 索引超出范围。必须为非负值并小于集合大小。 
    参数名:   index
      

  5.   

    那你就在页面层写 吧
     <asp:TemplateField HeaderText="序号">
      

  6.   

    this.GridView1.Columns[0].HeaderText       =       "序号";   
    你确定这样写可以啊
    我记得属性里好象点不出来吧
      

  7.   

    oledbcmd.ExecuteReader()返回一个DataReader,你把它转成DataTable/// <summary> 
      /// 将DataReader 转为 DataTable 
      /// </summary> 
      /// <param name="DataReader">DataReader</param> 
      public static DataTable ConvertDataReaderToDataTable(SqlDataReader dataReader) 
      { 
       DataTable datatable = new DataTable(); 
       DataTable schemaTable = dataReader.GetSchemaTable(); 
       //动态添加列 
       try 
       { 
       
        foreach(DataRow myRow in schemaTable.Rows) 
        { 
         DataColumn myDataColumn = new DataColumn(); 
         myDataColumn.DataType = myRow.GetType(); 
         myDataColumn.ColumnName = myRow[0].ToString(); 
         datatable.Columns.Add(myDataColumn); 
        } 
        //添加数据 
        while(dataReader.Read()) 
        { 
         DataRow myDataRow = datatable.NewRow(); 
         for(int i=0;i<schemaTable.Rows.Count;i++) 
         { 
          myDataRow[i] = dataReader[i].ToString(); 
         } 
         datatable.Rows.Add(myDataRow); 
         myDataRow = null; 
        } 
        schemaTable = null; 
        dataReader.Close(); 
        return datatable; 
       } 
       catch(Exception ex) 
       { 
        Error.Log(ex.ToString()); 
        throw new Exception("转换出错出错!",ex); 
       } 
       
      } 
     
      

  8.   

    我是这样写代码的,
            OleDbConnection oledbcon = new OleDbConnection("Provider=Microsoft.JET.OLEDB.4.0;data source=D://NET//treeview//App_Data//user.mdb");
            oledbcon.Open();
            OleDbCommand oledbcmd = new OleDbCommand("SELECT * FROM users", oledbcon);
            
           // this.GridView1.Columns[1].HeaderText = "序号";
            this.GridView1.DataSource = oledbcmd.ExecuteReader();
            this.GridView1.DataBind();请问怎么把这个代码转换成DataTable ?
      

  9.   

    问题可能是没有使用绑定列,而是用的自动生成列autogeneratecolumns.