dataset ds= new dataset();
SqlDataadapter da=new SqlDataadapter();
da.selectcommand=cmd;
da.fill(ds);
dgrSub.DataSource=ds.table[0];

解决方案 »

  1.   

    SqlDataReader reader=cmd.ExecuteReader();
    dgrSub.DataSource=reader;
    改为楼上的
      

  2.   

    datagrid的数据源只能是支持databind()方法接口的数据源,只有使用支持这个方法接口的数据源如DataTable。SqlDataReader是不能直接填充数据源的。
      

  3.   

    楼上速度真快哈,具体的实现代码就如楼上所说
    private static SqlDataReader BD(){
    cn=new SqlConnection("server=.;database=superich;uid=sa;pwd=");
    cn.Open();
    string sql="select * from '科目表'";
    dataset ds= new dataset();
                                SqlDataadapter da=new SqlDataadapter();
                                da.selectcommand=cmd;
                                da.fill(ds);
                                dgrSub.DataSource=ds.table[0]; }
      

  4.   

    不行啊。dgrSub根本就没有datasource这个点不出来啊
      

  5.   

    没有拼错//说什么:E:\mangerRich\SubjectSettings.cs(79): “mangerRich.SubjectSettings.dgrSub”表示“字段”,此处应为“类”
      

  6.   

    我们刚好今天讲了!呵呵!
            private static SqlDataReader BD()
        {
            cn=new SqlConnection("server=.;database=superich;uid=sa;pwd=");
            cn.Open();
            string sql="select * from '科目表'";
            cmd=new SqlCommand(sql,cn);
            SqlDataReader reader=cmd.ExecuteReader();
            dgrSub.DataSource=reader;
        }
            这样肯定抱错拉。
       改成这样:
            private static SqlDataReader BD()
        {
            cn=new SqlConnection("server=.;database=superich;uid=sa;pwd=");
            cn.Open();
            string sql="select * from '科目表'";
            cmd=new SqlCommand(sql,cn);
            SqlDataAdapter da=new SqlDataAdapter();
            da.selectcommand=cmd;
            DataSet ds=new DataSet();
            da.Fill(ds,"科目表");
            dgrSub.DataSource=ds.Tables["科目表"];
        }
      

  7.   

    呵呵!还是自己来吧。把static去掉就可以了。。
    但是还是有一个问题,就是我只想显示数据库中两个字段的数据,那应该怎样做呢?比如说是id]
    和name