2017-01-03 29 views
-1

我想删除在ASP.net中使用DropDownList的SQL Server数据库表中的一行。删除第一DropDownList项目而不是选定的项目

我想从DropDownList中选择一个ID,并删除表中的那一行。

但是,相反,在列表中的第一项被删除

下面是我的数据库表:

[ID] INT   IDENTITY (1, 1) NOT NULL, 
[Name] NVARCHAR (50) NOT NULL, 
[Order] INT   NOT NULL, 
[Desc] NVARCHAR (50) NULL 

这里是我的C#:

try 
{ 
    con.Open(); 
    SqlCommand cmd = new SqlCommand(); 
    cmd = new SqlCommand("delete from tblImages where ID='" + ddlDeleteHomeSlideImage.SelectedItem.ToString() + "'", con); 
    cmd.ExecuteNonQuery(); 
    con.Close(); 
} 
catch (Exception ex) 
{ 
    ResultLabel.Text = ex.Message.ToString(); 
} 

这里是我的ASPX:

<div class="panel-body"> 
         <strong>Image to delete: </strong> 
         <br /> 
         <asp:DropDownList ID="ddlDeleteHomeSlideImage" runat="server"> 
         </asp:DropDownList> 
         <br /> 
         <asp:Button ID="btnDeleteHomeSlideImage" CssClass="btn btn-danger" runat="server" Text="Delete" OnClick="btnDeleteHomeSlideImage_Click" /> 
         <asp:Label ID="ResultLabel" runat="server" Text=""></asp:Label> 
        </div> 
+0

我不明白你的问题。您正在使用selectedItem而不是第一项。 – Marco

+2

要删除第一个还是要删除所选的一个?另外,你应该使用SqlParameters并且不要像你那样追加值 –

+0

@Marco当我选择不同的项目(即不是第一项)时,它仍然删除第一项 – Sweg

回答

2

基于@Sweg解决方案,SQL参数,以避免SQL注入

con.Open(); 
    SqlCommand cmd = new SqlCommand(); 
    cmd = new SqlCommand("delete from tblImages where ID= @id", con); 
    cmd.Parameters.Add("@id", ddlDeleteHomeSlideImage.SelectedItem.ToString()); 
    cmd.ExecuteNonQuery(); 
    con.Close(); 
-1

试试这个:

<asp:DropDownList ID="ddlDeleteHomeSlideImage" AutoPostBack="true" runat="server"> </asp:DropDownList> 

如果你改变选定的项目,你的DropDownList将被更新。现在你的DropDownList将在服务器端更新。

+0

我刚刚试过这个,但它只是保持刷新页面&选定的项目返回DropDown中的第一项 – Sweg

+0

你有什么在Page_Load方法? –

+0

这不是autopostback所做的。每次选择一个元素时自动回发帖子。 它不以任何方式解决问题,并打破逻辑@Sweg –

0

我发现问题是什么。我删除了SQL命令中的单引号,现在它工作正常。

这里是工作的代码:

con.Open(); 
     SqlCommand cmd = new SqlCommand(); 
     cmd = new SqlCommand("delete from tblImages where ID=" + ddlDeleteHomeSlideImage.SelectedItem.ToString(), con); 
     cmd.ExecuteNonQuery(); 
     con.Close(); 
+0

这仍然是一个危险的解决方案! –

相关问题