2009-06-09 66 views
2

另一個初學者問題。爲什麼asp.net頁面下面的代碼不工作?ASP.NET gridview綁定不起作用/控件不顯示

protected void Page_Load(object sender, EventArgs e) 
{ 
    List<string> list = new List<string>(); 
    list.Add("Teststring"); 
    this.GridView.DataSource = list; 
} 

GridView是該asp頁面上的GridView控件。但是,根本沒有網格出現。它既啓用和可見。另外,當我調試時,GridView.Rows.Count是0.我總是認爲你可以添加泛型列表和實現IList的所有類作爲數據源,然後gridview會自動顯示內容?或者是在這裏它已經在page_load事件處理程序中完成的原因。如果在啓動時如何在沒有任何用戶交互的情況下填充網格?

再次感謝。

回答

2

在不同的WinForms,ASP的研究與開發您需要專門調用GridView.DataBind();。我也會將這些代碼分解爲一個單獨的方法,並將初始調用包裝爲回發檢查。這會爲你節省一些麻煩。

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!Page.IsPostback) 
    { 
     List<string> list = new List<string>(); 
     list.Add("Teststring"); 
     bindMydatagrid(list); 
    } 
} 

protected void bindMydatagrid(List<string> list) 
{ 
    gv.DataSource = list; 
    gv.DataBind(); 
} 
+0

謝謝大家,我真的很愚蠢。現在就像一個魅力! 順便說一句,如果不檢查IsPostback會有什麼危險?我想我仍然沒有抓住那個。 – noisecoder 2009-06-12 18:37:31

4

你應該調用DataBind()。

3

你忘了調用GridView的.DataBind()方法。這是將控件連接到其數據源並加載結果的內容。

例子:

protected void Page_Load(object sender, EventArgs e) 
{ 
    List<string> list = new List<string>(); 
    list.Add("Teststring"); 
    this.GridView.DataSource = list; 
    this.GridView.DataBind(); 
}