它看起来像这个问题
was addressed here,但他的解决方案对我不起作用.我正在创建一个动态下拉菜单系统,该系统使用第一个下拉列表中所选项目的查询结果填充辅助下拉列表.
第一个下拉列表填充:
Dim db As New linqclassesDataContext Dim categories = (From c In db.faq_cats) NewFaqDropDownCategory.DataSource = categories NewFaqDropDownCategory.DataTextField = "category" NewFaqDropDownCategory.DataValueField = "category_id" NewFaqDropDownCategory.DataBind() Unset(categories) Unset(db)
填充第二个下拉列表:
Protected Sub NewFaqDropDownCategory_SelectedindexChanged(ByVal sender As Object,ByVal e As System.EventArgs) Dim temp As Integer = CInt(Val(NewFaqDropDownCategory.Selectedindex)) MsgBox(theDrop.SelectedValue) Return 'Dim db As New linqclassesDataContext 'Dim faqs = (From f In db.faqs Where f.category = NewFaqDropDownCategory.SelectedValue) 'NewFaqDropDownList.DataSource = faqs 'NewFaqDropDownList.DataTextField = "question" 'NewFaqDropDownList.DataValueField = "id" 'NewFaqDropDownList.DataBind() 'NewFaqLabel.Visible = True 'NewFaqDropDownList.Visible = True 'Unset(faqs) 'Unset(db) End Sub
第一个下拉列表的加价……
<asp:DropDownList ID="NewFaqDropDownCategory" AutopostBack="true" runat="server" OnSelectedindexChanged="NewFaqDropDownCategory_SelectedindexChanged"> </asp:DropDownList>
第二个……
<asp:DropDownList ID="NewFaqDropDownList" runat="server" Visible="false"> </asp:DropDownList>
无论我尝试过什么,我总是得到“1”(第二个下拉列表中第一个项目的值).我之前提到的帖子说这与AutopostBack有关,而服务器不知道列表是否已更新.
任何人都可以为我澄清这一点吗?
解决方法
在行上设置一个断点:NewFaqDropDownCategory.DataBind()和事件处理程序中的一个(NewFaqDropDownCategory_SelectedindexChanged).
我怀疑在NewFaqDropDownCategory_SelectedindexChanged事件触发之前正在调用数据绑定,导致所选值发生更改.
我怀疑在NewFaqDropDownCategory_SelectedindexChanged事件触发之前正在调用数据绑定,导致所选值发生更改.
如果是这样,你需要确保你只是数据绑定,如果你不在你的autopostback中间或者在事件处理程序的第一行使用NewFaqDropDownCategory.Selectedindex,你可以将sender参数强制转换为DropDownList并使用它选定的价值.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。