如何解决DropDownList 总是删除第一个值?
我正在创建一个餐饮食谱网站。我做了一个管理面板,我想删除我之前添加的一顿饭。还有一个菜单,其中包括餐点数。例如,pasta 类别中有 4 顿饭,它在主页上显示 Pasta(4)。 我作为管理员,如果我想在我的网站上添加新餐,它会起作用。我选择一个类别,它正在添加到该类别。但是对于删除,它工作错误。它总是删除 DropDownList 中的第一个值,即肉类食品。你能帮我找到答案吗?
代码如下:
if (Page.IsPostBack == false)
{
id = Request.QueryString["YemekId"];
islem = Request.QueryString["islem"];
sqlCommand komut2 = new sqlCommand("Select *from Kategoriler",baglan.baglanti());
sqlDataReader oku2 = komut2.ExecuteReader();
DropDownList1.DataTextField = "KategoriAd"; //DropDownList'e kategorilerin adlarını text biçiminde oldukları için bu şekilde çektik.
DropDownList1.DataValueField = "KategoriId"; //DropDownList'e kategorilerin id nolarını value değerinde oldukları için bu şekilde çektik.
DropDownList1.DataSource = oku2;
DropDownList1.DataBind();
sqlCommand komut = new sqlCommand("Select *from Yemek",baglan.baglanti());
sqlDataReader oku = komut.ExecuteReader();
DataList1.DataSource = oku;
DataList1.DataBind();
}
//silme işlemi
if (islem == "sil")
{
sqlCommand komutsilme = new sqlCommand("Delete from Yemek where YemekId=@s1",baglan.baglanti());
komutsilme.Parameters.AddWithValue("@s1",id);
komutsilme.ExecuteNonQuery();
baglan.baglanti().Close();
sqlCommand kategorisil = new sqlCommand("Update Kategoriler set KategoriAdet=KategoriAdet-1 where KategoriId=@k1",baglan.baglanti());
kategorisil.Parameters.AddWithValue("@k1",DropDownList1.SelectedValue);
kategorisil.ExecuteNonQuery();
baglan.baglanti().Close();
Response.Write("<script> alert('Yemek başarıyla silindi!')</script>");
}
解决方法
您正在将 id 作为字符串从查询字符串传递给参数
komutsilme.Parameters.AddWithValue("@s1",id);
我假设 YemekId 是你数据库中的一个整数,所以试试这个
komutsilme.Parameters.AddWithValue("@s1",int.Parse(id));
AddWithValue
将派生其值的参数类型,因此请确保其类型正确,在本例中为 int 而非 string。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。