selectedIndex потерян во время обратных передач - ASP.NET

Каждый шаг имеет разную ширину, поэтому ожидаемый результат будет ожидаемым. Когда вы горизонтально центрируете вертикально сложенные элементы, более широкие элементы будут появляться за пределами более узких элементов. Вам нужно отцентрировать весь шагер и выровнять шаги влево:

...

StackBlitz

5
задан JohnIdol 10 April 2009 в 13:44
поделиться

7 ответов

Каков вывод нечто () вызов функции?

При заполнении вручную поля списка, можно установить индексы на то, что Вы хотите (весь 0, например) - таким образом, то же самое может произойти, установив данный источник данных при определенных обстоятельствах (тот, который указывает индексы, которые я предполагаю). Если все индексы объекта 0, результат состоит в том, что событие SelectedIndexChanged не генерируется (индекс не изменяется!) и все испорчено: на обратной передаче выбор вернется к первому объекту в списке.

Это объяснило бы это - я не могу думать ни о чем больше - это хорошо работает для меня на.NET 2.0, я использую ArrayList со строками для заполнения поля списка.

Единственным путем я могу воспроизвести Вашу проблему, устанавливает все индексы на 0.

Я сказал бы, добавляют часы к ListBox и проверяют индексы во времени выполнения, чтобы удостовериться, что они не, все обнуляет.

2
ответ дан 18 December 2019 в 14:53
поделиться

Реальной проблемой здесь является порядок событий. Когда Вы связываете с данными в page_load, Вы перезаписываете отправленные данные, вот почему выбор не установлен в поле списка. Можно легко преодолеть это путем перемещения обязательной логики в Page_Init.

10
ответ дан 18 December 2019 в 14:53
поделиться

Я не знаю, имеет ли это значение или нет, но я обычно присоединяю свои средства управления к событиям на первой полосе, а не в codebehind. В Вашем примере я сделал бы:

<asp:ListBox runat="server" id="lbox" autoPostBack="true" OnSelectedIndexChanged="lboxScorecard_SelectedIndexChanged"  />

Кроме этого, я проверил бы, что ViewState включают. ViewState может быть превращен при управлении, странице, и даже уровне сайта.

-2
ответ дан 18 December 2019 в 14:53
поделиться

Вы думали о загрузке данных ранее - например, в событии OnInit на странице/пользовательском элементе управления. Это происходит перед возвращенными данными загружается и таким образом прежде чем на изменении сможет быть обработан? Я полагаю, что это должно работать - но Вы могли бы хотеть выключить состояние отображения!

-1
ответ дан 18 December 2019 в 14:53
поделиться

DropDownLists/ListBoxes привязки данных является болезненным, потому что они часто связывают с неправильными значениями.

Я разочаровался в использовании DataBind () и просто обращаюсь к использованию Цикла foreach:

foreach (Item i in DataSet)
{
     listBox.Items.Add(etc);
}
1
ответ дан 18 December 2019 в 14:53
поделиться

Это смотрит на меня как Вы, создают новый eventhandler на каждой загрузке страницы. Это могло бы вызывать проблему. Почему бы не присоединить eventhandler декларативно:

<asp:ListBox runat="server" id="lbox" autoPostBack="true" OnSelectedIndexChanged="lbox_SelectedIndexChanged" />

также, почему не ссылаются на управление непосредственно, вместо кастинга?

protected void lbox_SelectedIndexChanged(object sender, EventArgs e)
{
    int index = lbox.selectedIndex;
}
0
ответ дан 18 December 2019 в 14:53
поделиться

Работы для меня также. Ваши нечто () возвращают те же значения каждый раз?

Так же, как примечание стороны: если это возможно, необходимо действительно сделать привязку данных в OnInit (каждый раз, не только на ДОБИРАЕТСЯ). Если Вы делаете это перед вызовом для базирования. OnInit (...), содержание Вашего поля списка не должно будет быть сериализировано и десериализовано к и от состояния отображения и отправлено через провод клиенту (да, Вы будете поражать базу данных больше, но Вы будете поражать систему, которая расположена в Вашей локальной подсети, или даже в той же машине. Кроме того, база данных будет, вероятно, кэшировать результат).

Если Вы хотите создать высокоэффективные веб-сайты, необходимо внимательно изучить способ, которым Вы используете ViewState. Я настоятельно рекомендую эту статью: ДЕЙСТВИТЕЛЬНО Понимающий ViewState

0
ответ дан 18 December 2019 в 14:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: