Спасибо за ваше первоначальное решение, оно действительно помогло пролить некоторый свет на порядок вещей. Я думаю, что я не знаю жизненный цикл страницы asp.net, как я думал.
дил за статьейTRULLY Понимание ViewState (отличная статья) и заполнение моего выпадающего списка работает отлично. Я даже настроил событие OnSelectedIndexChange, которое срабатывает почти так же хорошо.
Проблема, которую я обнаружил, заключается в том, что событие SelectedIndexChanged не будет срабатывать при выборе 0-го индекса. Это делает все другие времена однако.
Вот некоторый код:
<asp:DropDownList runat="server" ID="DropDownList1" EnableViewState="false"
AutoPostBack="True" OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged" />
protected override void OnInit(EventArgs e)
{
this.DropDownList1.DataTextField = "Text";
this.DropDownList1.DataValueField = "Value";
this.DropDownList1.DataSource = fillQueueDropDown();
this.DropDownList1.DataBind();
base.OnInit(e);
}
protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
OnSelectedQueueChanged(e);
}
public void OnSelectedQueueChanged(EventArgs e)
{
// Do stuff.
}
public event EventHandler queueNamesChangedEvent;
public void OnSelectedQueueChanged(EventArgs e)
{
if (queueNamesChangedEvent != null)
queueNamesChangedEvent(this, e);
}
Я полагаю, что я могу сделать некоторые проверки в методе Page_Load:
if(ViewState["selectedIndexChangedFlag"] != 1)
// raise OnSelectedChange event
Или я могу настроить что-то в методе OnInit (), где я перепривязываю эти данные каждый раз, когда могу это сделать?
Видите, мой пользовательский EventHander вызывает событие, которое перехватывается родительской страницей, на которой находится этот элемент управления, чтобы родитель мог выполнить какое-то действие, используя только что выбранное значение. И это в настоящее время работает для всех случаев, когда выбранный индекс> 0.
Я создаю свойство в этом элементе управления, которое содержит последний выбранный индекс, и в этом случае моя родительская страница может воздействовать на значение этого свойства для каждого Page_Load ... dunno.
Открыт для предложений. Или как заставить это событие SelectedIndexChanged сработать для этого выбора 0-го индекса.