請注意,我找到了解決我的問題的方法。請看下面。Selectedvalue方法返回空字符串
我正在將衆多程序從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的價值。 (實際上,爲了調試的目的,我已經將其餘的dang代碼註釋掉了。)
問題是selectedvalue總是返回一個空字符串,而不是我用New Listitem(「x」 ,「x值」)。當我使用asynchpostbacktrigger時,是否有一些特殊的技巧來獲取值?
感謝您的回答。我發現我的問題是什麼 - 這不是我想的。我沒有意識到autoupdate會實現一個page_load()命令。 (這對我來說很奇怪,因爲出於某種原因,我認爲使用面板更新的原因是它不必重新加載整個頁面。我猜page_load()會在頁面的任何部分加載時觸發嗎?不抱怨 - 只是想知道)
無論如何,我在另一篇文章中發現了一個名爲ispostback()的函數的引用。在我的Page_Load中的代碼,我說,
如果沒有的IsPostBack()然後初始化
它現在。
我是在這裏看到前面提到:DropDownList的不回傳上的SelectedIndexChanged
但當時我沒看到的相關性,我在做什麼 - 沒有提及page_upload()。無論如何,我不知道如何關閉這一點,但我想我應該給我的解決方案,下面下面。這些值有點愚蠢,因爲我試圖避免發佈我的生產代碼。
在前面的代碼中,形式標籤後,我把:
然後在後面的前面代碼,我把對象:
在代碼後面,我有幾件s:
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中寫的,我不推薦這種技術,但這是用戶在這種情況下所期望的)。再次感謝。
我完全刪除了JS代碼,並嘗試用VB中的代碼替換它。 – elbillaf