使用列表填充下拉列表 [英] Populate dropdown using List

查看:76
本文介绍了使用列表填充下拉列表的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述


我正在尝试使用List<>填充下拉列表,现在抛出此错误:

异常详细信息: System.NullReferenceException:对象引用未设置为对象的实例.
源错误:

Hi
I am trying to populate dropdown using List<>, Now its throwing this error:

Exception Details: System.NullReferenceException: Object reference not set to an instance of an object.
Source Error:

Line 27:         #region GetAppointmentTypes()
Line 28:         public List<ClsAppointmentServices> GetAppointmentTypes()
Line 29:         {
Line 30:             using (SqlConnection con = new SqlConnection(ConnString))
Line 31:             {


以下是我的用于连接和填充组合框的BusinessLayer代码:


Below is my BusinessLayer Code for connection and populating combobox:

namespace DataSource
{
   public class BusinessLayer
    {
        String ConnString;
        public String ConnString1
        {
            get { return ConnString; }
            set { ConnString = value; }
        }
       
        public BusinessLayer()
        {
            ConnString = ConfigurationManager.ConnectionStrings["AMS - Database"].ConnectionString;
        }
        #region GetAppointmentTypes()
        public List<ClsAppointmentServices> GetAppointmentTypes()
        {
            using (SqlConnection con = new SqlConnection(ConnString1))
            {
                SqlCommand cmd = new SqlCommand("procGetAppointmentTypes", con);
                cmd.CommandType = CommandType.StoredProcedure;
                List<ClsAppointmentServices> serviceList = new List<ClsAppointmentServices>();
                try
                {
                    con.Open();
                    SqlDataReader reader = cmd.ExecuteReader();
                    while (reader.Read())
                    {
                        ClsAppointmentServices appointmentTYpes = new ClsAppointmentServices(Convert.ToInt32(reader["TypeID"]), Convert.ToString(reader["AppointmentType"]));
                        serviceList.Add(appointmentTYpes);
                    }//End while
                    reader.Close();
                }
                catch (SqlException)
                {
                    throw new ApplicationException("Error connection to database");
                }
                return serviceList;
            }//End Using
        }
        #endregion GetAppointmentTypes()
    }
}


//Below is my client Layer:
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using DataSource;
public partial class Default3 : System.Web.UI.Page
{
    BusinessLayer systemBusinessLayer;
    List<ClsAppointmentServices> appointmentTypeList;
    protected void Page_Load(object sender, EventArgs e)
    {
        
        if (!IsPostBack)
            LoadDDLServiceTypes();
    }
    public void LoadDDLServiceTypes()
    {
        appointmentTypeList = new List<ClsAppointmentServices>();
        systemBusinessLayer = new BusinessLayer();
        appointmentTypeList = systemBusinessLayer.GetAppointmentTypes();
        ddlServiceTypes.DataMember = "AppointmentType";
        ddlServiceTypes.DataSource = appointmentTypeList;
    }
}


最后关注我的web.config文件:


Lastly folows my web.config file:

<?xml version="1.0"?>
<!--
  For more information on how to configure your ASP.NET application, please visit
  http://go.microsoft.com/fwlink/?LinkId=169433
  -->
<configuration>

    <system.web>
        <compilation debug="true" targetFramework="4.0">
            <assemblies>
                <add assembly="System.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
                <add assembly="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
                <add assembly="System.Speech, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/></assemblies></compilation>
    </system.web>
    <connectionStrings>
        <add name="ConnString" connectionString="Data Source=M104-06;Initial Catalog=AMS-Database;Integrated Security=True;"  providerName="System.Data.SqlClient" />
    </connectionStrings>
</configuration>

推荐答案

System.NullReferenceException:对象引用未设置为对象的实例.
这仅表示您正在尝试访问null的对象的属性.

使用Visual Studio DEBUGGER将告诉您确切的行和为null的对象,从而引发错误.
目前看来,这里有一个问题:
System.NullReferenceException: Object reference not set to an instance of an object.
This simply means that you are trying to access a property of an object that is null.

Using Visual Studio DEBUGGER will tell you exact line and the object that is null and thus throwing an error.
For now, it looks like there is an issue here:
ConnString = ConfigurationManager.ConnectionStrings["AMS - Database"].ConnectionString;



因此,当您尝试使用它并在此行中打开连接时,它将引发错误.



And thus, when you try to use it and open a connection in this line, it throws an error.

using (SqlConnection con = new SqlConnection(ConnString1))


很有可能您的连接字符串未正确初始化.


Most probably your connection string is not initialized properly.


将您的连接字符串设为静态

静态字符串Connectionstring并检查
Make your connection string static

static string Connectionstring and check


这篇关于使用列表填充下拉列表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆