У меня есть каскадный выпадающий список на моей странице. Первый раскрывающийся список содержит список событий. Второй выпадающий список содержит список участников. Когда событие выбрано, выполняется вызов AJAX, чтобы получить список участников этого события и заполнить второй раскрывающийся список.
Моя проблема в том, что для выпадающего списка участников я хочу, чтобы пользователь перенаправлялся на URL-адрес в событии SelectedIndexChanged с выбранным значением в строке запроса. Но при событии SelectedIndexChanged все элементы во втором раскрывающемся меню сбрасываются. Вот мой код:
<script type="text/javascript" language="javascript">
$(document).ready(function()
{
$('#<%= ddlEvents.ClientID %>').change(function()
{
$.ajax({
type: "POST",
url: 'Default.aspx/PopulateAttendees',
data: '{EventId: ' + $('#<%= ddlEvents.ClientID %>').val() + '}',
contentType: "application/json; charset=utf-8",
dataType: "json",
success: OnAttendeesPopulated
});
});
function OnAttendeesPopulated(response)
{
var attendees = response.d;
var attendeesDropdown = $("#<%= ddlAttendees.ClientID %>");
attendeesDropdown.removeAttr("disabled");
$.each(attendees, function()
{
attendeesDropdown.append($("<option</option>").val(this['Value']).html(this['Text']));
});
}
});
</script>
<asp:DropDownList ID="ddlEvents" runat="server"></asp:DropDownList>
<br /><br />
<asp:DropDownList ID="ddlAttendees" runat="server" Enabled="false" onselectedindexchanged="ddlAttendees_SelectedIndexChanged" AutoPostBack="true">
</asp:DropDownList>
И в моем коде позади:
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
//Bind dropdown to Events
ddlEvents.DataSource = EventsList();
ddlEvents.DataTextField = "Name";
ddlEvents.DataValueField = "EventID";
ddlEvents.DataBind();
}
}
[System.Web.Services.WebMethod]
public static ArrayList PopulateAttendees(int EventId)
{
ArrayList attendees = new ArrayList();
attendees = GetAttendees(EventId);
return attendees;
}
protected void ddlAttendees_SelectedIndexChanged(object sender, EventArgs e)
{
string AttendeeId = ddlAttendees.SelectedValue;
Response.Redirect("http://mysite.com?id=" + AttendeeId);
}
Когда происходит событие SelectedIndexChanged, ddlAttendees будет пустым.
Кто-нибудь знает, как я могу хранить предметы в ddlAttendees?