选中的值在asp:Dropdownlist中不会改变

6 asp.net

我有一个简单的下拉列表(ffg)......

<asp:DropDownList   ID="DropDownList2" runat="server"  AutoPostBack="true" BackColor="LightSteelBlue" Font-Size="X-Small"
    OnSelectedIndexChanged="DropDownList2_SelectedIndexChanged1"  Style="z-index: 102; left: 37px; position: absolute; top: 85px" Width="331px"
    </asp:DropDownList>
Run Code Online (Sandbox Code Playgroud)

我将数据绑定到onpageload事件...

DropDownList2.DataSource = td.DataSet
DropDownList2.DataSource = td
DropDownList2.DataTextField = td.Columns("Name").ColumnName.ToString
DropDownList2.DataValueField = td.Columns("VendorCode").ColumnName.ToString
DropDownList2.DataBind()
Run Code Online (Sandbox Code Playgroud)

还有一个 onleselectedindexchaged事件,我试图像这样检索新的价值......

Protected Sub DropDownList2_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles DropDownList2.TextChanged
        Dim url As String = "sp_menu.aspx?sp=" & DropDownList2.SelectedValue
        Session.Remove("sp")
        Session("sp") = DropDownList2.SelectedValue
        Session("spnm") = DropDownList2.SelectedItem.Text & " (" & DropDownList2.Text & ")"
        Response.Redirect(url)
    End Sub
Run Code Online (Sandbox Code Playgroud)

但无论在下拉列表中点击哪一个,它总是带来第一个值.请帮忙!

Eoi*_*ell 10

好的...一些事情......

首先 DropDownList2_TextChanged没有连接到你的DropDownList,所以除非你在代码隐藏中进行连接,否则我无法看到该事件将如何触发

第二

你在这里说这段代码

DropDownList2.DataSource = td.DataSet
DropDownList2.DataSource = td
DropDownList2.DataTextField = td.Columns("Name").ColumnName.ToString
DropDownList2.DataValueField = td.Columns("VendorCode").ColumnName.ToString
DropDownList2.DataBind()
Run Code Online (Sandbox Code Playgroud)

在您的PageLoad事件中.你有没有包裹它If Not IsPostBack,因为如果没有,那么你每次都会重新绑定,并失去你以前的选择.


Arj*_*nbu 5

当您在Page_Load中进行数据绑定时,您基本上也在重置选定项目.

您应该将Page_Load中存在的任何绑定代码包装在if(!IsPostBack)块中.

编辑:...或如果不是IsPostBack然后...结束如果在VB.NET中


dar*_*dog 3

你可以尝试使用

DropDownList2.SelectedItem.Value
Run Code Online (Sandbox Code Playgroud)

代替

DropDownList2.SelectedItem.Text
Run Code Online (Sandbox Code Playgroud)