【发布时间】:2011-06-29 15:20:03
【问题描述】:
注意,我找到了解决问题的方法。请看下文。
我正在将一个包含大量程序的系统从 foxpro/foxweb/javascript 转换为 asp.net/vb/sql 服务器。
我正在编写一个当前通过 js 控制的下拉列表。
我不喜欢以这种特殊方式使用控件,但我想保持客户的外观和感觉。
控件通过后面代码中的 Page_Load() 使用一些值进行初始化。这行得通。
在 selectedIndexChanged() 中我执行
dim s as string
s = ddl.SelectedValue
textbox1.text = s ' this line just for debugging.
(然后我继续清除 ddl 并根据 s 的值用不同的项目重新填充它 - 我不喜欢这个功能,但我想给东西提供与旧系统相同的外观和感觉。)重要 - 在使用 ddl 更改任何内容之前,我已经获得了 s 的值。 (事实上,出于调试目的,我已经注释掉了其余的乱码。)
问题是 selectedvalue 总是返回一个空字符串,而不是我用 New Listitem("x", "value-of-x") 设置的值。当我使用 asynchpostbacktrigger 时,是否有一些特殊的技巧来获取值?
感谢您的回答。我发现了我的问题——这不是我想的那样。我没有意识到自动更新会实现 page_load() 命令。 (这对我来说似乎很奇怪,因为出于某种原因,我认为使用面板更新的原因是它不必重新加载整个页面。我猜 page_load() 会在页面的任何部分加载时触发?不要抱怨 -只是大声地想知道。)
不管怎样,我在另一篇文章中发现了对一个名为 ispostback() 的函数的引用。在我的 page_load 代码中,我说,
如果不是 ispostback() 则初始化
现在可以了。
我之前在这里看到过它的引用:DropDownList doesn't postback on SelectedIndexChanged
但当时我没有看到与我正在做的事情的相关性 - 也没有提到 page_upload()。无论如何,我不确定如何关闭它,但我认为我应该给出下面的解决方案。这些值有点愚蠢,因为我试图避免发布我的生产代码。
在前面的代码中,在表单标签之后,我放了:
然后在前面的代码中,我放了对象:
在后面的代码中,我有几个部分:
Protected Sub initialize()
ddlAssign.Items.Clear()
ddlAssign.Items.Add(New ListItem("SELECT A CATEGORY", ""))
ddlAssign.Items.Add(New ListItem("option 1", "combo1"))
ddlAssign.Items.Add(New ListItem("option 2", "combo2"))
ddlAssign.Items.Add(New ListItem("option 3", "combo3"))
ddlAssign.SelectedIndex = 0
End Sub
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Not IsPostBack Then
initialize()
End If
End Sub
Protected Sub set_next_menu()
ddlAssign.Items.Clear()
ddlAssign.Items.Add(New ListItem("menu 2", "2"))
ddlAssign.Items.Add(New ListItem("menu 3", "3"))
ddlAssign.Items.Add(New ListItem("menu 4", "4"))
ddlAssign.Items.Add(New ListItem("menu 5", "5"))
ddlAssign.SelectedIndex = 0
End Sub
Protected Sub ddlAssign_SelectedIndexChanged(ByVal sender As Object, ByVal e As EventArgs) Handles ddlAssign.SelectedIndexChanged Dim s As String
s = ddlAssign.SelectedValue
if s = "" then
initialize
end if
if s = "combo1" then
set_next_menu
end if
end sub
希望我有更好的描述和视频来展示我在做什么。 (正如我在 OP 中所写,我不推荐这种技术,但这是用户在这种情况下所期望的)。再次感谢。
【问题讨论】:
标签: .net asp.net vb.net drop-down-menu