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>
4

2 回答 2

2

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

于 2012-10-25T13:45:17.807 回答
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"]));
    //...
    }
于 2012-10-25T13:46:29.517 回答