ASP.NET DropDownList 未在 SelectedIndexChanged 上绑定 SQL

Posted

技术标签:

【中文标题】ASP.NET DropDownList 未在 SelectedIndexChanged 上绑定 SQL【英文标题】:ASP.NET DropDownList not binding SQL on SelectedIndexChanged 【发布时间】: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 属性? 【参考方案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();”更改后一切正常。

【讨论】:

以上是关于ASP.NET DropDownList 未在 SelectedIndexChanged 上绑定 SQL的主要内容,如果未能解决你的问题,请参考以下文章

asp.net的DropDownlist绑定数据

csharp ASP.NET MVC中的DropDownList #dropdownlist #selectlist

asp.net 绑定DropDownList

asp.net中用datatable给dropdownlist绑定数据

使用 ASP.NET 的 DropDownList 中的错误

在ASP.NET MVC中使用DropDownList