我正在撰写关于文章发表的学校申请。在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;
答案 0 :(得分:0)
我猜emertimi
包含一个在下拉列表中找不到的值。因此,FindByText
将返回null
,获取Value
将导致此异常。
在尝试获取Value
之前测试结果。
此外,使用Dispose
语句代替单独的using
调用。并注意SQL注入风险:改为使用参数。
答案 1 :(得分:0)
那是因为找不到您正在寻找的物品。您应该对代码进行故障排除,并确定运行时设置的emertimi是什么。