簡體   English   中英

在列表和會話中使用類asp.net c#

[英]using class in list and session asp.net c#

我正在嘗試從數據庫中獲取數據並將其放在列表中。 然后,我想用接收到的數據創建下拉列表。

db表:

ID
projectName

編碼:

public void ProjectsList()
{
    List<ProjectsListClass> ProjectsList=new List<ProjectsListClass>(); //list of projects
    ProjectsListClass projectDetails=new ProjectsListClass();//1 project details

    //creating session of projects table
    using (SqlConnection conn = new SqlConnection(mainDBConn))//connect to the database table
    {
        SqlCommand sqlProjectsList = new SqlCommand("SELECT * FROM dbo.Projects ORDER BY projectName", conn);

        conn.Open();

        SqlDataReader rsProjectsList = sqlProjectsList.ExecuteReader();

        if (rsProjectsList.HasRows && rsProjectsList.Read())//there is a project, insert into the array
        {
            projectDetails.ProjectsListProjectID = Convert.ToInt16(rsProjectsList["ID"]);
            projectDetails.ProjectsListProjectName = rsProjectsList["projectName"].ToString();
            ProjectsList.Add(projectDetails);
        }
        Session["ProjectsList"] = ProjectsList;

        rsProjectsList.Close();
        conn.Close();
    }  
}

並在另一頁中:

    List<ProjectsListClass>projectsArray=new List<ProjectsListClass>();
    projectsArray=(List<ProjectsListClass>)Session["ProjectsList"];

    foreach(var project in projectsArray)
    {
        ListItem l = new ListItem(project.ProjectsListProjectID.ToString()
            , project.ProjectsListProjectName.ToString()
            , true);
        projectIDDropDownList.Items.Add(l);
    }

我得到錯誤:

你調用的對象是空的。

異常詳細信息:System.NullReferenceException:對象引用未設置為對象的實例。

源錯誤:

第20行:foreach(projectsArray中的var project)-紅色

第21行:{第22行:ListItem l =新的ListItem(project.ProjectsListProjectID.ToString()

我該怎么辦?

我認為您需要注意一些事項。

盡管我不知道您有什么特殊要求,但總的來說,我不認為在會話中存儲項目列表是最好的方法。 通常,我會有一個帶有GetProjectList()方法的Project類,該方法返回項目列表。 然后,您可以從“其他”頁面調用此方法並綁定到DropDownList。

另外,我相信您可能在錯誤的位置放置了projectDetails聲明。 如果您想返回項目列表,請嘗試類似的操作(我是VB開發人員,但已經使用過C#)。

 SqlCommand sqlProjectsList = new SqlCommand("SELECT * FROM dbo.Projects ORDER BY projectName", conn); conn.Open(); SqlDataReader rsProjectsList = sqlProjectsList.ExecuteReader(); if (rsProjectsList.HasRows)//there is a project, insert into the array { while rsProjectsList.Read() { ProjectsListClass projectDetails=new ProjectsListClass(); projectDetails.ProjectsListProjectID = Convert.ToInt16(rsProjectsList["ID"]); projectDetails.ProjectsListProjectName = rsProjectsList["projectName"].ToString(); ProjectsList.Add(projectDetails); } } rsProjectsList.Close(); conn.Close(); 

要綁定到您的下拉列表,請嘗試以下代碼,

 projectIDDropDownList.DataSource = Project.GetProjects(); projectIDDropDownList.DataBind(); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM