【问题标题】:ASP.NET DropDownList not binding SQL on SelectedIndexChangedASP.NET DropDownList 未在 SelectedIndexChanged 上绑定 SQL
【发布时间】:2018-03-16 02:05:14
【问题描述】:

标题说明了大部分发生的事情。基本上我有两个 DropDownLists,其中一个根据前一个值进行 SQL 搜索,每次更改时都需要更新它。这是我的代码:

protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
    {
        //Ship Model
        String str2 = "SELECT DISTINCT [Ship Model] FROM ShipMatrix WHERE ([Ship Make]='@ShipMake')";
        SqlCommand qry2 = new SqlCommand(str2, Xebon);
        qry2.Parameters.Add("ShipMake", SqlDbType.VarChar).Value = DropDownList1.Text;
        Connection.Open();
        qry2.ExecuteNonQuery();
        SqlDataAdapter sda2 = new SqlDataAdapter();
        sda2.SelectCommand = qry2;
        DataTable ds2 = new DataTable();
        sda2.Fill(ds2);

        DropDownList2.DataSource = ds2;
        DropDownList2.DataTextField = "Ship Model";
        DropDownList2.DataValueField = "Ship Model";
        DropDownList2.DataBind();
        Connection.Close();
    }

不幸的是,它没有更新,下拉菜单仍然有大约 2-3 个字符长并且没有值/文本。

【问题讨论】:

  • 您是否启用了AutoPostBack 属性?

标签: c# sql asp.net sql-server


【解决方案1】:

在 DropDownList1 上设置 AutoPostBack=true。

<asp:DropDownList ID="DropDownList1" AutoPostBack="true" OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged" runat="server">
</asp:DropDownList>

将@符号前缀放在sql参数中

qry2.Parameters.Add("@ShipMake", SqlDbType.VarChar).Value = DropDownList1.Text;

【讨论】:

  • 这正在发回一个帖子,但它仍然没有用数据填充另一个文本框。当我在 Page_Load 中手动触发它时也不会这样做。我假设这是代码问题,而不是 asp.net / HTML
【解决方案2】:
DropDownList1.Text  

在这里不起作用。如果要比较下拉菜单中所选项目的文本,可以使用以下方法之一。

qry2.Parameters.Add("@ShipMake", SqlDbType.VarChar).Value = DropDownList1.SelectedItem.Text;

qry2.Parameters.Add("@ShipMake", SqlDbType.VarChar).Value = DropDownList1.SelectedValue

【讨论】:

    【解决方案3】:

    感谢这里的一些建议,我已启用 AutoPostBack

    另外我的问题是使用“DropDownList.SelectedValue;”而不是“DropDownList.SelectedValue.ToString();”更改后一切正常。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-08-09
      • 1970-01-01
      • 1970-01-01
      • 2010-12-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多