删除第一个DropDownList项而不是Selected Item

时间:2017-01-03 20:46:04

标签: c# asp.net sql-server

我正在尝试使用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>

3 个答案:

答案 0 :(得分:2)

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

{
  "dataset": [
    {
      "seriesname": "Item1 Price",
      "data": [
        {
          "value": 4.72
        },
        {
          "value": 2.81
        },
        {
          "value": 6.18
        },
        {
          "value": 5.17
        },
        {
          "value": 2.94
        },
        {
          "value": 3.77
        },
        {
          "value": 1.7
        },
        {
          "value": 6.72
        },
        {
          "value": 4.61
        }
      ]
    },
    {
      "seriesname": "Item2 Price",
      "data": [
        {
          "value": 2.49
        },
        {
          "value": 0.72
        },
        {
          "value": 4.06
        },
        {
          "value": 1.74
        },
        {
          "value": 7.23
        },
        {
          "value": 5.83
        },
        {
          "value": 2.59
        },
        {
          "value": 7.54
        },
        {
          "value": 7.02
        }
      ]
    }
  ],
  "categories": [
    {
      "label": "Jan"
    },
    {
      "label": "Feb"
    },
    {
      "label": "Mar"
    },
    {
      "label": "Apr"
    },
    {
      "label": "May"
    },
    {
      "label": "Jun"
    },
    {
      "label": "Jul"
    },
    {
      "label": "Aug"
    },
    {
      "label": "Sept"
    }
  ]
}

答案 1 :(得分:0)

我发现了问题所在。我在SQL命令中删除了单引号,现在工作正常。

这是有效的代码:

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

答案 2 :(得分:-1)

试试这个:

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

如果更改所选项目,您的DropDownList将会更新。现在你的DropDownList将在服务器端更新。