我的頁面上有一個級聯下拉列表。第一個下拉列表包含事件列表。第二個下拉列表包含與會者列表。選擇某個事件後,將進行AJAX調用以獲取該事件的與會者列表,並填充第二個下拉列表。DropDownList項目在SelectedIndexChanged上重置
我的問題是,對於與會者下拉菜單,我希望用戶被重定向到SelectedIndexChanged事件上的URL,並在查詢字符串中選擇值。但是在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項目?
好主意:)我正在使用隱藏字段來存儲與會者ID,它正在工作。謝謝。 – Steven 2010-09-17 14:57:10
沒問題。客戶端的東西是可愛的和光滑的,但有時它和服務器端真的不起來! – 2010-09-17 15:25:50