2011-10-12 53 views
0

這可能是一個相當簡單的問題,但我似乎無法找到我正在尋找的答案。編程Gridview瞭解

我一直在用編程方式使用GridView控件,從代碼背後的數據集中加載它。所以這是一個相當簡單的過程,實例化一個新的Gridview,加載數據集,綁定數據,然後加載控件。

但是,我遇到了一個問題,我無法直接從代碼加載到GridView。在.aspx文件我有一個簡單:

<asp:GridView ID="Supp_Data" runat="server" /> 

在我的創作在GridView背後的代碼如下:

Supp_Data = new GridView(); 
Supp_Data = OutsideClass.GetData(str_sql); 
//Add other features here (such as AllowSorting, GridLines, PageSize, etc.) 

Supp_Data.DataBind(); 

在我的課外:

public static GridView GetData(string str_sql) 
{ 
    // string str_sql is simply the sql query that we will get the dataset with.   

    OdbcConnection dbc_conn = ODBC_Conn(""); //This simply instantiates the connection 
    OdbcCommand dbc_cmd = null; 
    OdbcDataAdapter dbc_adpt = null; 
    DataSet dta_ds = new DataSet(); 
    GridView ret_val = new GridView(); 
    try 
    { 
     if (dbc_conn.State != System.Data.ConnectionState.Open) { dbc_conn.Open(); } 
     dbc_cmd = new OdbcCommand(str_sql, dbc_conn); 
     dbc_adpt = new OdbcDataAdapter(dbc_cmd); 
     dbc_adpt.Fill(dta_ds); 
     ret_val.DataSource = dta_ds; 
     ret_val.DataBind(); 
     dbc_conn.Close(); 
    } 
    catch (Exception e) 
    { 
     string tst_msg = e.Message; 
    } 
    return ret_val; 
} 

但是這根本不顯示網格。

現在,作爲解決方法(顯示數據),在.aspx文件中添加PlaceHolder並使用PlaceHolder.Controls.Add(Supp_Data)可以很好地顯示數據。

所以我的實際問題是,爲什麼數據不顯示在GridView中,但在PlaceHolder中顯示沒有問題?它是否與我忽略的頁面生命週期有關(我使用Page_Load和Page_Init嘗試了相同的結果)?這肯定會幫助我全面瞭解這個過程。我只是不明白爲什麼它會與一個完美地接近,而與另一個完全不同。

感謝您的任何信息。

+0

你在哪裏/如何綁定網格?你是否檢查你是否不在回帖中並調用綁定網格的方法?關鍵信息需要...... – JonH

回答

2

你不應該在GridView上做一個'new',只是填充它的DataSource並調用DataBind。頁面引用的對象在函數調用中被覆蓋,因此它沒有任何內容可顯示。

+0

Ahhh +1錯過了可能是他的問題的關鍵點,如果它已經在標記中,它已經'new'd'了。 – JonH

+0

D'oh。很簡單。我想這只是其中的一個。 – Gobbledigook