public class DBC
{
    private OleDbConnection conn = null;    /// <summary>
    /// 构造函数
    /// </summary>
    /// 
       public DBC()
    {
        //未连接时执行连接操作
        if (conn == null)
        {
            string connstr = "Provider=SQLOLEDB.1;Persist Security Info=true; Initial Catalog=NET后台;Data Source=084DE2A4F347450\\SQLEXPRESS";
            conn = new OleDbConnection();
            conn.ConnectionString = connstr;
              conn.Open();
        }
    }
    public GridView show()
    {
        string sqlstr = "select * from v_用户菜单";
       OleDbDataAdapter  da = new OleDbDataAdapter(sqlstr, conn);
       DataSet ds = new DataSet();
        da.Fill(ds, "Te");
        GridView gv = new GridView();
        gv.DataSource = ds.Tables["Te"].DefaultView;
        //gv.Width = 300;
       
        return gv;
     }
   }
这前面是类文件我在aspx.cs文件中是这样写的,我已经拉了一个gridview控件到页面,ID为gridview1    DBC dbc = new DBC();        GridView1 =dbc.show();      //  Response.Write(GridView1.Width );  (这边可以得到wdith=300)        GridView1.DataBind();可是不知道为什么不能显示?GridView1 =dbc.show(); 这句话应该表示gridview1和dbc.show()返回的gridview对象指向同一个地址,两者属性什么应该完全一样 .gridview1.datasource应该能得到ds.Tables["Te"].DefaultView的值呀;可是不行请朋友们帮忙解答,谢了

解决方案 »

  1.   

    gridview1本来指向你页面上那个(你托上去的),然后调用了show方法以后,gridview1指向函数里面创建的gv,gv并没有被添加到页面的控件树上,所以不会显示出来。假如页面上有个PlaceHolder,你将gv添加到PlaceHolder里面,就可以显示出来。datasource是object类型的,如果希望获得你要的类型需要转换类型。
      

  2.   

    GridView1 传递到方法里
    或返回dataset,
     da.Fill(ds, "Te"); 
    return ds; 
    页面
    GridView1.DataSource = ds; 
    GridView1.DataBound();