Использование каскадного выпадающего списка на той же странице aspx, что и на панели обновления - PullRequest
2 голосов
/ 04 августа 2011

Я использую ASP.NET 4.0. У меня есть 2 DropDownList, CascadingDropDown (из Ajax Control Toolkit) и UpdatePanel на той же странице.

Раскрывающиеся элементы не находятся на панели обновлений, и их функциональность работает нормально (если один из вариантов выбран из DropDownList, CascadingDropDown делает свое дело и обновляет второй DropDownList).

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

Панель обновлений работает нормально, когда часть кода с раскрывающимися списками закомментирована, но как только раскрывающиеся списки не закомментированы, нажатие кнопки больше не обновляет текстовое поле, не происходит повторной публикации. *

Страница aspx:

<asp:ScriptManager ID="scriptManager" runat="server">
</asp:ScriptManager>

<div>
    <label for="<%= ddOne.ClientID %>" >DD one</label>
    <asp:DropDownList ID="ddOne" runat="server">
        <asp:ListItem Text="" Value="-1" />
        <asp:ListItem Text="Option one" Value="1" />
        <asp:ListItem Text="Option two" Value="2" />
        <asp:ListItem Text="Option three" Value="3" />
    </asp:DropDownList>
</div>

<ajaxToolkit:CascadingDropDown 
        ID="ccdOne"
        runat="server"
        ParentControlID="ddOne"
        TargetControlID="ddTwo" 
        Category="Category" 

        ServicePath="SomeWebService.asmx"
        ServiceMethod="SomeWebMethod"
        EmptyText="None available"
        EmptyValue="-1"
        LoadingText="Loading..." />

<div>
    <label for="<%= ddTwo.ClientID %>">DD two</label>
    <asp:DropDownList ID="ddTwo" runat="server">
    </asp:DropDownList>
</div>

<asp:UpdatePanel runat="server" ID="upPanelOne">

    <ContentTemplate>

        <asp:Button ID="aButton" runat="server" Text="Click me" onclick="aButton_Click" />
        <asp:TextBox ID="txtOne" runat="server" />

    </ContentTemplate>


</asp:UpdatePanel>

Код позади:

    protected void aButton_Click(object sender, EventArgs e)
    {
        txtOne.Text = "Hello world";
    }

Есть идеи?

Примечания:

UpdatePanel сам по себе отлично работает

DropDownList s с каскадным выпадающим списком работает нормально

Когда DropDownList s используется на той же странице, что и панель обновлений, но не на панели обновлений, панель обновлений перестает работать?

Ответы [ 2 ]

0 голосов
/ 10 апреля 2015

У меня была та же проблема, но я последовал комментарию Бена, который говорит, что установка EnableEventValidation="false" очистила мою проблему, и теперь она работает нормально.

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

Добавьте следующие теги к вашему updatepanel

<Triggers>
            <asp:AsyncPostBackTrigger ControlID="aButton" EventName="Click" /
        </Triggers>

Так должно быть что-то вроде этого:

<asp:UpdatePanel runat="server" ID="upPanelOne">
        <Triggers>
            <asp:AsyncPostBackTrigger ControlID="aButton" EventName="Click" /
        </Triggers>
        <ContentTemplate>
            <asp:Button ID="aButton" runat="server" Text="Click me" onclick="aButton_Click" />
            <asp:TextBox ID="txtOne" runat="server" />
        </ContentTemplate>
    </asp:UpdatePanel>
...