[英]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.