非静态字段需要对象引用

时间:2012-10-25 13:36:12

标签: c# asp.net oop

所以我有一个嵌套类 - 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>

2 个答案:

答案 0 :(得分:2)

我认为您需要删除static功能上的PeerReview关键字。

答案 1 :(得分: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"]));
//...
}

或正如罗林所说:

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