我正在创建一个食谱网站。我做一个管理面板,我想删除我之前添加的一餐。还有一份菜单,上面写着每餐的种类。例如,在面食类别中有4种食物,它在主页上显示面食(4)。我作为一个管理员,如果我想添加一个新的膳食到我的网站,它的工作。我选择一个类别,然后添加到那个类别。但对于删除,它工作错误。它总是删除下拉列表中的第一个值,即肉类食品。你能帮我找到答案吗?
代码如下:
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);
我假设yeekid是一个int在你的数据库所以试试这个
komutsilme.Parameters.AddWithValue("@s1", int.Parse(id));
AddWithValue
将派生其值的参数类型,因此确保它是正确的类型,在本例中为int而不是string。