2017-01-03 4 views
-1

削除まずDropDownListの項目ではなく、私はASP.netでDropDownListコントロールを使用してSQL Serverデータベースのテーブルの行を削除しようとしている選択した項目

私は、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

を避けるために、SQLパラメータで、:ここで

は動作するコードです。最初の項目ではなくselectedItemを使用しています。 – Marco

+2

最初のものを削除するか、選択したものを削除しますか?また、あなたはSqlParametersを使用すると、あなたは私が別の項目(すなわちない最初の項目)を選択すると、それはまだ私が選択した項目を削除しようとしている@Nobody最初の項目 –

+0

@Marcoを行ったように値を追加することはありませんが、最初のアイテムを削除しています – Sweg

答えて

2

を@Swegソリューションに基づいて、私はあなたの問題を理解していない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はサーバー側で更新されます。

+0

は、私はこれを試してみたが、それはただのページ&ドロップダウン – Sweg

+0

あなたはPage_Loadメソッドに何持っているかの最初の項目に選択した項目のリターンをさわやかに保ちますか? –

+0

これはオートポストバックの機能ではありません。要素が選択されるたびに自動ポストバックがポストされます。 これは何らかの形で問題を解決せず、ロジックを破壊します@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

これはまだ危険な解決策です! –

関連する問題