![](/img/trans.png)
[英]Populate a TextBox from a DropDownList selection ASP.NET/Javascript
[英]ASP.NET - losing selection of dropdownlist populated via javascript
我在頁面上有兩個ASP.NET下拉列表控件。 第一個回調到服務器並獲得一個數組,該數組返回給客戶端並用於通過javascript填充第二個下拉列表。 但是,如果我在第二個(並且新填充的)下拉列表中進行選擇,然后進行回發,則第二個下拉列表的選擇和內容將丟失。 這是一個問題,因為我需要獲取所選值並在回發后保留列表的內容。
我該如何解決? 我認為這是在回發之前的某個時刻更新viewstate的問題?
我填充的控件是ASP.NET下拉列表。 這是我用來填充它們的javascript。
使用的代碼如下(為簡潔起見,略微減少):
ASP.NET控件我正在填充:
<asp:DropDownList ID =“ddlStateCounty”runat =“server”OnSelectedIndexChanged =“ddlStateCounty_OnSelectedIndexChanged”AutoPostBack =“true”/>
回調獲取逗號分隔值列表的代碼:
public void RaiseCallbackEvent(string eventArgument)
{
return "1, 2, 3";
}
Javascript人口代碼:
function ReceiveServerData(retValue)
{
var statesArray = retValue.split(',');
var statesList = document.getElementById('{0}');
if (statesArray.length > 0 && statesList != null)
{
for (var j = 0; j < statesArray.length; j++)
{
var newOption = document.createElement('OPTION');
statesList.options.add(newOption);
newOption.value = statesArray[j].toString().trim();
newOption.innerText = statesArray[j];
}
}
}
您說明沒有ViewState權限是正確的,這就是為什么在將數據發回服務器時不會填充值的原因。
我強烈建議您遷移到使用級聯下拉的ASP.NET AJAX控件工具包中(它既有.NET 2.0和.NET 3.5版本),因為它確實你是什么之后,它並通過回傳維護。
您的另一個選擇是在JavaScript填充的下拉列表中有一個onchange
事件,然后在其中填充隱藏字段,因為它將被發布回服務器,並且提交的值將保留在發布的數據中,就像是:
$addHandler('change', $get('dynamicDDL'), function () { $get('hiddenField').value = this.options[this.selectedIndex].value; });
對於演示,我使用MS AJAX簡寫添加事件等。有關我使用的方法的更多信息可以在這里找到: http : //msdn.microsoft.com/en-au/library/bb397536.aspx
Request.Form [Control.UniqueID]為您提供所選值。
只需使用response.forms集合即可獲取所選值。
我猜“你沒有按照asp.net的方式做事”。
在我看來,如果你的javascript修改不是原生的asp.net,那么你填充的元素不是asp.net控件,所以你在回發中丟失它們。 asp.net確實需要它的模型和實際頁面之間的緊密綁定。
可能會離開基地 - 如果你可以發布一些代碼會有所幫助。 (JS和codebehind方法)
編輯新信息:
對 - 所以你基本上是通過基於AJAXified返回字符串(?)的JS創建一個完全正常的html元素的負載,asp.net代碼隱藏沒有任何概念 。 我不是100%確定這是自己沒有設置測試應用程序的問題,但聽起來是正確的。
檢查Request.Forms然后 - 正如其他人所建議的那樣 - 將是現在解決這個問題的最簡單的方法,但是你應該記住,當你偏離它想要的方式時,asp.net會越來越痛苦你到。 我認為值得研究如何從代碼隱藏中添加這些新選項。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.