2010-03-01 36 views
1

我嘗試通過使用使myGridView Companent的WebPart你知道它:如何通過Webpart類連接GridView數據源?

using System.Web.UI.WebControls.WebParts; 
using System.Web.UI.WebControls; 
using System.Web.UI; 

namespace MyGridView 
{ 
    public class MyGridView : WebPart 
    { 
     GridView gv; 

     protected override void CreateChildControls() 
     { 
      gv = new GridView(); 
      gv.CssClass = "tablestyle"; 
      this.Controls.Add(gv); 
     } 

    } 
}

我加入這個GridView控件上的工具箱。一切都好 。 ©想將我自己的CSS設計添加到我的GridView中。但是,如果我把這個gridView從工具箱放到aspx頁面。如果我綁定我的數據源;數據源不會顯示自己。

就像那個主程序:


protected void Page_Load(object sender, EventArgs e) 
     { 
      LoadData loaddata = new LoadData(); 
      DataTable dt = loaddata.LoadSQL("conn", "sp_GetAllCategory"); 
      MyGridView1.datas.... -----> i can not see DataSource why? 
     } 

我希望看到我的GridView的數據源。如果我寫綁定數據源。 MyGridView1.DataSource ----->我看不到DataSource爲什麼?

回答

0

因爲您需要將DataSource添加到控件; Web部件默認不支持它(basedataboundcontrol類定義DataSource和DataBind)。所以,你需要補充一點:

public object DataSource 
{ 
    get 
    { 
     this.EnsureChildControls(); 
     return gv.DataSource; 
    } 
    set 
    { 
     this.EnsureChildControls(); 
     gv.DataSource = value; 
    } 
} 

通常情況下,你必須調用EnsureChildControls(),讓你包裹網格的屬性之前,所有子控件的創建,但我不知道,如果是EnsureChildControls您可以訪問。我覺得是這樣的。

+0

gv.DataSource = value;給我錯誤:對象引用未設置爲對象的實例。 – Penguen 2010-03-01 21:08:26

+0

保護覆蓋無效CreateChildControls() { gv = new GridView(); gv.CssClass =「tablestyle」; this.Controls.Add(gv);公共對象數據源 { } } set {gv.DataSource = value; }} 是不工作... – Penguen 2010-03-01 21:23:21

+0

我嘗試做到這一點: 保護無效的Page_Load(對象發件人,EventArgs的){ LoadData loaddata =新LoadData(); MyGridView1.DataSource = loaddata.LoadSQL(「conn」,「sp_GetAllCategory」); if(!IsPostBack) { MyGridView1.DataBind(); } } – Penguen 2010-03-01 21:25:51

相關問題