Нужны советы по отладке: изменение видимости при обратной передаче работает на одной странице, но не на другой - PullRequest
0 голосов
/ 27 сентября 2010

У меня есть веб-форма, содержащая пользовательский элемент управления. На этом пользовательском элементе управления есть набор переключателей. При изменении переключателя панель или текстовое поле отображаются или скрываются в зависимости от того, какой переключатель был выбран.

Я могу привести пример, который работает правильно:

testcontrol.aspx:

<asp:RadioButtonList ID="ChoicesRadioButtonList" AutoPostBack="true" OnSelectedIndexChanged="ChoicesRadioButtonList_SelectedIndexChanged" runat="server">
    <asp:ListItem Text="Show 1"></asp:ListItem>
    <asp:ListItem Text="Show 2"></asp:ListItem>
</asp:RadioButtonList>
<asp:Panel id="Panel1" CssClass="panel1" runat="server"></asp:Panel>
<asp:Panel id="Panel2" CssClass="panel2" runat="server"></asp:Panel>

testcontrol.aspx.cs:

protected void ChoicesRadioButtonList_SelectedIndexChanged(object sender, EventArgs e)
{
    RadioButtonList bob = (RadioButtonList)sender;
    switch (bob.SelectedValue)
    {
        case "Show 1":
            Panel1.Visible = true;
            Panel2.Visible = false;
            break;
        case "Show 2":
            Panel1.Visible = false;
            Panel2.Visible = true;
            break;
    }
}

Как я уже говорил, в тестовой форме это работает правильно. Panel1 и Panel2 отображаются правильно, в зависимости от того, какой переключатель выбран.

У меня есть еще одна веб-страница и пользовательский элемент управления с рядом других полей. Когда этот код находится на этой странице, я могу пошагово пройти через код позади события ChoicesRadioButtonList_SelectedIndexChanged, но ничего не происходит.

Я затрудняюсь в следующих шагах, чтобы отладить это (если не считать восстановления всей страницы с нуля). Может кто-нибудь предложить какие-либо предложения о том, где искать?

Ответы [ 3 ]

0 голосов
/ 27 сентября 2010

Можете ли вы написать тот же код на мероприятии PreRender?Может быть, что-то меняет видимость обратно в состояние по умолчанию, и вы пропускаете это.

0 голосов
/ 27 сентября 2010

Я прошел и начал комментировать разделы кода. Оказывается, CalendarExtender на странице был причиной проблемы. Он выдавал ошибки javascript, которые мешали корректно отображать страницу.

0 голосов
/ 27 сентября 2010

Вы пытались использовать asp: MultiView вместо asp: Panel?

Тогда вместо того, чтобы переключать видимость нескольких панелей, вам просто нужно использовать SetActiveView (view) для отображения требуемого вида.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...