在同一个aspx页面上使用级联下拉列表作为更新面板

时间:2011-08-03 21:43:37

标签: asp.net asp.net-ajax ajaxcontroltoolkit

我正在使用ASP.NET 4.0。我在同一页面上有2 DropDownList个,CascadingDropDown(来自Ajax Control Toolkit)和UpdatePanel

下拉列表不在更新面板中,并且它们的功能正常工作(从DropDownList中选择一个选项后,CascadingDropDown执行其操作并更新第二个{{1} })。

更新面板只包含一个按钮和一个文本框。单击该按钮时,将使用事件处理程序在文本框中设置文本。

当带有下拉列表的代码部分被注释掉时,更新面板工作正常,但是一旦取消注释下拉菜单,单击该按钮就不再刷新文本框,也不会发回帖。

aspx页面:

DropDownList

背后的代码:

<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与更新面板在同一页面上使用,但在更新面板中没有,则更新面板会停止工作吗?

2 个答案:

答案 0 :(得分:0)

将以下标记添加到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>

答案 1 :(得分:0)

我遇到了同样的问题,但是我遵循了Ben的评论,该评论说明EnableEventValidation="false"已经解决了我的问题并且现在工作正常。