【发布时间】:2015-04-17 19:32:10
【问题描述】:
我正在尝试从数据库中获取数据并将其放入列表中。 然后,我想用接收到的数据创建下拉列表。
数据库表:
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(var project in projectsArray) - 这个是红色的
第 21 行:{ 第 22 行:ListItem l = new ListItem(project.ProjectsListProjectID.ToString()
我该怎么办?
【问题讨论】:
-
使用调试器附件,悬停在上面可以看到哪个组件为空。可能其中一个属性未设置
-
ProjectsList()在哪里调用? -
如果您不想出错,只需检查“其他页面”上的
projectsArray是否有类似这样的值:if(projectsArray.Any()){ // if yes - add items to dropdown } -
嗯,ProjectsList() 是“SiteMaster”页面中的一个方法。我在 page_load protected void Page_Load(object sender, EventArgs e) { ProjectsList();中调用它>