asp.net dropDownList选中的值为null

时间:2014-05-08 21:24:28

标签: c# asp.net-mvc

我正在撰写关于文章发表的学校申请。在dropdownList中,我想将数据库中存在的值显示为默认的预选值。 DropdownList conatins" emertimi"来自表" kategorite"。当用户选择一个值时,它会保存" kategoria_id"的ID。在表格#34; artikulli"。这是我背后的代码

if (e.Item.ItemType == ListItemType.EditItem)
            {
                DropDownList drpdKategoria = e.Item.FindControl("drpdKategoria") as DropDownList;
                SqlConnection con = new SqlConnection(connection);
                string Qry = "select * from kategoria";
                string id = Request.QueryString["id"];
                SqlDataAdapter da = new SqlDataAdapter(Qry, con);
                DataSet ds = new DataSet();
                DataSet ds2 = new DataSet();
                DataSet ds3 = new DataSet();
                con.Open();
                da.Fill(ds);
                string kategoria_id = "select kategoria_id from artikulli where id='" + id + "'";
                SqlDataAdapter dk = new SqlDataAdapter(kategoria_id, con);
                dk.Fill(ds2);
                var kategoria_id_result = Convert.ToInt32(ds.Tables[0].Rows[0][0]);
                string emertimi = "select emertimi from kategoria where id='" + kategoria_id_result + "'";
                SqlDataAdapter de = new SqlDataAdapter(emertimi, con);
                de.Fill(ds3);

                drpdKategoria.DataSource = ds;
                drpdKategoria.DataValueField = "id";
                drpdKategoria.DataTextField = "emertimi";              
                drpdKategoria.DataBind();
                drpdKategoria.SelectedValue = drpdKategoria.Items.FindByText(emertimi).Value;
                con.Close();
                con.Dispose();
                ds.Dispose();
                ds2.Dispose();
                ds3.Dispose();
                da.Dispose();
                dk.Dispose();
                de.Dispose();
            }
        }

但它显示此错误: 对象引用未设置为对象的实例 。在这一行:drpdKategoria.SelectedValue = drpdKategoria.Items.FindByText(emertimi).Value;

2 个答案:

答案 0 :(得分:0)

我猜emertimi包含一个在下拉列表中找不到的值。因此,FindByText将返回null,获取Value将导致此异常。

在尝试获取Value之前测试结果。

此外,使用Dispose语句代替单独的using调用。并注意SQL注入风险:改为使用参数。

答案 1 :(得分:0)

那是因为找不到您正在寻找的物品。您应该对代码进行故障排除,并确定运行时设置的emertimi是什么。