опубликовать обратно выпадающий список - PullRequest
0 голосов
/ 09 августа 2011

на этом сайте когда выпадающий список содержит только один элемент, при нажатии на него сообщение не возвращается

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        DropDownList1.Items.Add("a");

        DropDownList2.Items.Add("a");
        DropDownList2.Items.Add("b");

    }
}


protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
    Response.Write(DropDownList1.Text);//does not work ????????????
}
protected void DropDownList2_SelectedIndexChanged(object sender, EventArgs e)
{
    Response.Write(DropDownList2.Text);

}

на этом сайте

Ответы [ 5 ]

1 голос
/ 09 августа 2011

DropDownList1_SelectedIndexChanged никогда не сработает, потому что у вас есть только 1 элемент в DropDownList1, поэтому индекс никогда не изменится.

Обновлено

Что вы можете сделать, это добавить нользначение в раскрывающемся списке1, например,

<asp:DropDownList runat="server" ID="DropDownList1">
    <asp:ListItem Value="0" Text="Choose option" Selected="true" />
    <asp:ListItem Value="1" Text="a" />
</asp:DropDownList>
0 голосов
/ 09 января 2012

Я хотел похожую вещь. Код ниже сделал это для меня. Убедитесь, что это первый код в вашем методе SelectedIndexChanged.

//fixes error when postback 
    if (DropDownList.SelectedIndex == 0)
    {
       DropDownList.SelectedIndex = 1;
    }
0 голосов
/ 09 августа 2011

asp:DropDownList с AutoPostBack="true" отображается в виде html select тега, который имеет клиентское событие onchange и функцию java-script, автоматически генерируемую для обработки этого клиентского onchange события.

т.е. если у вас есть:

<asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="true">
    </asp:DropDownList>

Источник отрисованной страницы выглядит так:

<select name="DropDownList1" onchange="javascript:setTimeout('__doPostBack(\'DropDownList1\',\'\')', 0)" id="DropDownList1">

как вы видите, чтобы postback клиентское событие onchange должно быть запущено. клиентская onchange будет иметь место только в том случае, если тег html select имеет два или более option s выбора.

Я вижу, что решения уже опубликованы, просто подумал, что было бы неплохо объяснить это подробнее.

В двух словах для элемента управления asp:DropDownList должно быть более одного asp:ListItem.

0 голосов
/ 09 августа 2011

Может быть, вы можете добавить новый элемент с индексом 0, который говорит «Выбрать», и когда пользователь меняет выбор, это вызывает сообщение назад ...

DropDownList1.Items.Add("SELECT");
DropDownList1.Items.Add("a");
0 голосов
/ 09 августа 2011

DropDownList1_SelectedIndexChanged не сработает, потому что выбранный индекс уже равен a. Список DropDownList Events можно найти здесь DropDownList Events . Событие DataBound должно сработать, где вы можете сделать Response.Write(DropDownList1.Text);

...