从下拉列表中选择项目时,下拉选择错误

时间:2015-12-01 05:21:49

标签: c# asp.net

当我运行我的代码时,它发送的错误是对象引用未设置为下拉列表4中对象的实例。

下拉选择错误

  

对象引用未设置为对象的实例。

当我从下拉列表中选择项目时

事先感谢亲切帮助PLZ

这是我的代码behnd

 protected void LoadOptions4()
            {
                DropDownList4.Items.Clear();
               // DropDownList4 dr = new DropDownList4();


                DataTable CardCode = new DataTable();
                // string name2;
               // string id, name, newName;

                SqlConnection connection = new SqlConnection("Data Source=1.2.3.4;Initial Catalog=TestData;Persist Security Info=True;User ID=abcd;Password=abcd12345");
                using (connection)
                {
                    // string selected4 = DropDownList3.SelectedItem.Value;
                    //SqlCommand theCommand = new SqlCommand("SELECT T1.CardCode , T1.CardName, T2.OpprId, T1.CntctPrsn,T2.CprCode,T3.CntctCode,T3.Name  FROM OCRD T1 left  join OOPR T2 on T1.CardCode=T2.CardCode left join OCPR T3 on T2.CprCode=T3.CntctCode where T1.CardCode=@CardCode ", connection);

                    SqlCommand theCommand = new SqlCommand("select SlpCode,SlpName from OSLP where SlpCode=@SlpCode  and SlpCode<>-1 ", connection);

                    //  SqlDataAdapter adapter = new SqlDataAdapter("SELECT T1.CardCode , T1.CardName, T2.OpprId,T1.CntctPrsn, T2.CprCode,T2.MaxSumLoc  FROM OCRD T1 left  join OOPR T2 on T1.CardCode=T2.CardCode where T1.CardCode=@selected", connection);

                    //   SqlDataAdapter adapter = new SqlDataAdapter("SELECT T1.CardCode , T1.CardName, T2.OpprId,T1.CntctPrsn, T2.CprCode,T2.MaxSumLoc  FROM OCRD T1 left  join OOPR T2 on T1.CardCode=T2.CardCode where T1.CardCode=@selected", connection);
                    string selected5;

                     selected5 = DropDownList4.SelectedItem.Value;

                   theCommand.Parameters.AddWithValue("@SlpCode", selected5);
                   SqlDataAdapter adapter = new SqlDataAdapter(theCommand);
                    //DataSet ds = new DataSet();
                    adapter.Fill(CardCode);
                //name2 = id;

                    if (CardCode.Rows.Count > 0)
                    {
                        for (int i = 0; i < CardCode.Rows.Count; i++)
                        {

                            string name3 = CardCode.Rows[i]["SlpName"].ToString();
                            string slpCode = CardCode.Rows[i]["SlpCode"].ToString();
                            // string newName2 = contcode + " ---- " + name2;

                            DropDownList3.Items.Add(new ListItem(name3, slpCode));


     } }}
    }

3 个答案:

答案 0 :(得分:4)

根据上面的代码,您正在从dropdownlist4清除项目,如下所示

DropDownList4.Items.Clear();

然后在几行代码后,获取下拉列表的选定值

selected5 = DropDownList4.SelectedItem.Value;

以上一行导致了这个问题。没有要选择的项目,但您选择了一个项目。 请删除Items.Clear()并检查一次。

答案 1 :(得分:0)

 DropDownList4.Items.Clear();  remove this line from the top ,  

就像在第一行中清除DropDownList4中的数据而你想要在

中调用它
selected5 = DropDownList4.SelectedItem.Value; 

所以尝试使用函数加载时的数据源DropDownList4,

答案 2 :(得分:0)

  

此处函数名为LoadOptions4()DropDownList3   正在填充。这毫无意义。根据你的片段   给定,你填充DropDownList3,所以你必须清除   DropDownList3代替DropDownList4

所以你的方法签名将是这样的:

 protected void LoadOptions3()
  {
     DropDownList3.Items.Clear();
     string selected5;
     selected5 = DropDownList4.SelectedItem.Value;
     //perform db operations
     //loop through values
     DropDownList3.Items.Add(new ListItem(name3, slpCode));
 }