所以我有一個級聯下拉列表,但使用列表框。當在第一個ListBox中選擇一個項目時,將在第二個ListBox中填充基於第一個選擇的項目(這是使用jQuery AJAX調用完成的)。下面是我的了:回發後訪問控件的動態數據
$('#<%= lbEvents.ClientID %>').change(function() {
var selectedValues = $('#<%= lbEvents.ClientID %>').val();
var json = '{ events: [' + selectedValues.join(',') + '] }';
$.ajax({
type: "POST",
url: 'Default.aspx/PopulateAttendees',
data: json,
contentType: "application/json; charset=utf-8",
dataType: "json",
success: OnAttendeesPopulated
});
});
function OnAttendeesPopulated(response) {
var attendees = response.d;
var attendeesList = $("#<%= lbAttendees.ClientID %>");
attendeesList.children().remove();
$.each(attendees, function() {
attendeesList.append($("<option></option>").val(this['Value']).html(this['Text']));
});
}
//Populated on PageLoad
<asp:ListBox ID="lbEvents" runat="server" SelectionMode="Multiple" />
<asp:ListBox ID="lbAttendees" runat="server" SelectionMode="Multiple" />
<asp:Button ID="btnSubmit" runat="server" Text="Submit" OnClick="btnSubmit_Click" />
起初,我對按鈕的Click事件得到一個錯誤,因爲lbAttendees正在動態加載的,所以我不得不EnableEventValidation設置爲false。
我現在沒有得到錯誤,但在按鈕的單擊事件中,我只能訪問lbEvents中的數據,但不能訪問lbAttendees; lbAttendees在點擊事件中爲空。我假設我需要將來自lbAttendees的數據存儲在ViewState中。
如何將lbAttendees中的數據存儲在ViewState中,以便我可以在click事件中訪問它?
我使用第二個選項,將選定的值添加到隱藏字段。謝謝。 – Steven 2010-10-19 21:15:03
很好的解決方案。謝謝 – 2012-03-22 10:48:29