日期:2014-05-18  浏览次数:21216 次

“System.Data.DataRow.DataRow(System.Data.DataRowBuilder)”不可访问,因为它受保护级别限制
string conn = System.Configuration.ConfigurationManager.ConnectionStrings["cString"].ToString();
  SqlConnection cn = new SqlConnection(conn);

  cn.Open();//打开数据库连接
string sql = "select * from admin where id=@ID";
  SqlCommand cm = new SqlCommand(sql, cn);//连接数据表
  cm.Parameters.Add(new SqlParameter("@ID", 1));
  SqlDataReader sdr= cm.ExecuteReader();
  DataTable dt1 = new DataTable();
  while (sdr.Read())
  {
  DataRow dr = new DataRow();
  dr[0] = sdr[0].ToString();
  dr[1] = sdr[1].ToString();
  dr[2] = sdr[2].ToString();
  dt1.Rows.Add(dr);
  }
  this.GridView1.DataSource = dt1;
  this.GridView1.DataBind();

------解决方案--------------------
DataRow不能直接new

应该调用DataTable的NewRow()方法创建新行。
------解决方案--------------------
根本不需要写while循环,直接一句
dt1.Load(sdr);
就可以了。
就是用阅读器做数据源填充DataTable