2017-01-03 2 views
-1

Я пытаюсь удалить строку в таблице базы данных SQL Server с помощью DropDownList в ASP.net.Удаление первого элемента DropDownList, а не выбранного элемента

Я пытаюсь выбрать идентификатор из DropDownList и удалить эту строку в своей таблице.

Однако, вместо этого, первый элемент в списке удаляется

Ниже моя таблица базы данных:

[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

Я не понимаю вашу проблему. Вы используете выбранный элемент, а не первый элемент. – Marco

+2

Вы хотите удалить первый или удалить выбранный? Кроме того, вы должны использовать SqlParameters и никогда не добавлять значения, как вы делали –

+0

@Marco Когда я выбираю другой элемент (т. Е. Не первый элемент), он по-прежнему удаляет первый элемент – Sweg

ответ

2

на основе решения @Sweg с SQL параметрами, чтобы избежать SQL Injection

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 Command, и теперь он отлично работает.

Вот код, который работает:

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

Это по-прежнему опасное решение! –

Смежные вопросы