2012-10-25 37 views
1

所以我有一個嵌套類--PeerReviews。我想創建一個ASPX頁面上的列表框,和我實例化,像這樣PeerReviews的對象:非靜態字段需要對象引用

PeerReviews obj = new PeerReviews(); 

不過,我得到一個錯誤,該行導致我的代碼問題:

listBox1.Items.Add(new ListItem(r["first_name"], r["first_name"])); 

這裏是嵌套類的全碼:

class PeerReviews 
     { 
      private static void PeerReview() 
      { 


       MySqlConnection con = new MySqlConnection("server=localhost;database=hourtracking;uid=username;password=password"); 
       MySqlCommand cmd = new MySqlCommand("select first_name from employee where active_status=1", con); 
       con.Open(); 
       MySqlDataReader r = cmd.ExecuteReader(); 

       while (r.Read()) 
       { 
        listBox1.Items.Add(new ListItem(r["first_name"], r["first_name"])); 
       } 
       con.Close(); 


      } 
     } 

我如何引用列表框中的項目?我試圖將它實例化爲一個對象(這看起來不正確)。

我只是OOP編程而已(我已經完成了一些工作,但是我在C#中工作的原因之一就是強迫自己使用它),而且我幾乎完整新手到C#和ASP.NET

編輯:

這是ASPX代碼:

<asp:ListBox ID="listBox1" runat="server"> 
</asp:ListBox> 
+0

被listBox1中在asp側代碼設置爲RUNAT = 「服務器」? – Haedrian

+0

我不認爲這是行 - 再次檢查 – codingbiz

+1

你也有內存泄漏,你需要將你的連接,命令和閱讀器對象封裝在'using'語句中。 – JonH

回答

2

我認爲你需要刪除的PeerReview功能static關鍵字。

+0

然後發生這種情況: 編譯器錯誤消息:CS0038:無法通過嵌套類型'commenter.PeerReviews' –

+0

訪問外部類型'commenter'的非靜態成員是否意味着我只需要實例化PeerReviews的對象? –

0

將引用listbox1的對象傳遞給靜態PeerReview方法。類的靜態方法不能訪問其類或任何其他類的靜態字段/屬性/方法。它只能訪問其他靜態類字段/屬性/方法,局部變量和參數

你需要類似的東西(我不確定System.Web.UI.Page的實例是否保存listBox1,但我正在尋求)

private static void PeerReview(System.Web.UI.Page page) 
{ 
//... 
page.listBox1.Items.Add(new ListItem(r["first_name"], r["first_name"])); 
//... 
} 

或作爲Rawling Sayed的:

private static void PeerReview(System.Web.UI.WebControls.ListBox listbox) 
    { 
    //... 
    listbox.Items.Add(new ListItem(r["first_name"], r["first_name"])); 
    //... 
    } 
+0

它必須是當前頁面的類型。或者您可以改爲使用列表框本身。 – Rawling

相關問題