我正在尋找在DropdownList自動回發之前觸發的事件,以便在ViewState中保存Listbox項目(使用JS填充)。在回發之前在ViewState中保存數據的事件
我嘗試了OnSelectedIndexChanged
事件,但它被解僱得太晚。
可以這樣做,以及如何?
我正在尋找在DropdownList自動回發之前觸發的事件,以便在ViewState中保存Listbox項目(使用JS填充)。在回發之前在ViewState中保存數據的事件
我嘗試了OnSelectedIndexChanged
事件,但它被解僱得太晚。
可以這樣做,以及如何?
這不能使用ViewState來完成。 ViewState由服務器設置。它不能被JavaScript中的客戶端修改。
推薦的JavaScript或jQuery的其中一個選項:
然後,您可以檢測這些變化的頁面已經調回後。
設置您的下拉菜單來修改隱藏的元素。
$(document).ready(function() {
$('#<%=DropDownList1.ClientID %>').change(function() {
$("#myHiddenInput").val("changed!");
});
});
....
<input type="hidden" id="myHiddenInput" />
您的DropDownList將按照正常發回。
您是否嘗試過OnChange
事件?看看this post
更新:使用隱藏字段將自定義數據傳遞到服務器端。你不能修改視圖狀態。
另外,斯科特米切爾關於這個there is a nice post。
以下事件中的所有頁面加載之前發生:
看看在ASP.NET Page Lice Cycle瞭解更多信息。
LoadViewState發生在頁面的Load循環中,因此請查看之前的事件。
另外,你有沒有看過使用TrackViewState方法?可能只是你在這種情況下需要的...
我知道你已經標記了這個問題的答案,但我認爲你之所以問的原因是你的viewstate驗證失敗,因爲你的列表框不再包含與頁面呈現時相同的選項?簡單的答案是在頁面上禁用事件驗證:
<%@ Page EnableEventValidation="false" %>
在你的榜樣,因爲你X許多項目填充列表框時,頁面被渲染,並且您手動添加項目,ASP。 NET開始並且去「嘿,你要求選項和不存在」,並且相應地拋出異常。
你是否試圖通過客戶端代碼修改視圖狀態? – David 2010-10-14 16:13:31