2013-01-16 37 views
0

讀我有一個使用JavaScript這樣的填充一個ASP.Net下拉列表:使用JavaScript填充asp.net控件不能在服務器端

下拉列表:

<asp:DropDownList ID="Ddl" runat="server" AutoPostBack="true" 
     EnableViewState="true"></asp:DropDownList> 

的JavaScript用「文本」填充下拉列表的代碼是:

​​

它在客戶端得到填充很好。我添加了一個應該在服務器端運行的按鈕。在服務器端,當我嘗試檢索ddl選定值時;它給出了一個例外(對象引用未設置爲對象的實例)

我知道ASP.Net ddl控件在表單發送到服務器後會丟失內容嗎? 我將如何解決這個問題?我試圖將該值放在隱藏字段中,並嘗試使用Request.Form["HiddenField"].toString();,但它給出了相同的錯誤。任何幫助?

+0

你在哪裏試圖獲得選定的值?在SelectedIndexChanged或你的按鈕點擊事件?如果你有AutoPostBack =「true」,你不需要按鈕來提交選擇。 – markpsmith

+0

謝謝你的迴應; Ann L在下面回覆後全部清除。 thnx – ibininja

回答

2

正如您所述,您無法在客戶端填充下拉列表,並讓服務器端知道ListItem對象在那裏。這是因爲它們不會回發到服務器:只有選定的值纔會被髮回。

即使沒有使用DropDownList,也可能有更好的運氣。創建下拉菜單作爲HTML select標記。一定要設置name屬性(否則它不會在回發中被拾取)。然後使用Request.Form集合訪問HTML select的選定值。

使用DropDownList的唯一理由是,如果您有意將其綁定到服務器端,從服務器端數據或者您想要根據服務器端計算改變其外觀,但不想設置Ajax調用。如果你不想做這些事情,select可能會更好地爲你服務。

+0

Thnx我打算去Cascading DDls;如果我沒有任何服務器端綁定,你說什麼更有意義不使用服務器端控件... – ibininja

相關問題