【问题标题】:How can I use ASP.Net UpdatePanels to avoid full postback?如何使用 ASP.Net UpdatePanels 来避免完全回发?
【发布时间】:2014-11-04 18:20:40
【问题描述】:

我有一个名为“ddlCountry”的下拉列表,它只需要更新另一个名为“ddlCity”的下拉列表。 我应该如何使用 UpdatePanel 仅加载第二个下拉列表而不是执行完整的回发?因为我认为如果没有在第一个下拉列表中将回发属性设置为“true”,我将无法获得“SelectedIndexChanged”事件

我试过了

<li>
    <label>Grupo Gestor:</label>
    <asp:DropDownList ID="ddlCountry" runat="server" Width="356px"
        DataTextField="Country" DataValueField="CodCountry" AutoPostBack="False"
        OnSelectedIndexChanged="ddlGrupoGestor_SelectedIndexChanged" />
</li>
<li>
    <label>Gestor:</label>
    <asp:UpdatePanel ID="upd_ddlGroup1" runat="server" UpdateMode="Conditional">
        <ContentTemplate>
            <asp:DropDownList ID="ddlCity" runat="server" Width="356px" DataTextField="City" DataValueField="CodCity" />
        </ContentTemplate>
        <Triggers>
            <asp:AsyncPostBackTrigger ControlID="ddlCountry" EventName="SelectedIndexChanged" />
        </Triggers>
    </asp:UpdatePanel>
</li>

没用

【问题讨论】:

  • 不,您无法避免页面生命周期,UpdatePanel 专门设计用于在部分回发时导致它。此外,在您的第一个列表中将 AutoPostback 设置为 false 将意味着不会触发 SelectedIndexChanged 事件,即不会回发。

标签: c# asp.net ajax triggers updatepanel


【解决方案1】:

在您的场景中,最好的办法是使用 ajax 控件工具包的 Cascaded DropDownList。

看这里如何使用它:

Using a Cascaded DropDownList with Database

Cascaded DropDownList using Database in asp.net

【讨论】:

  • 谢谢你。我以前从未听说过这种级联。用 DropDown 解决了我的问题。但是我觉得还是不知道UpdatePanel的正确用法呵呵
  • 我们将控件放在更新面板中,我们想要更新而不刷新整个页面(没有完整的回发)
  • 问题是 SelectedIndexChanged 在没有回发的情况下无法工作
  • 我做了...但是当我在第一个下拉列表中选择另一个项目时,没有'AutoPostBack="true"',没有任何反应。使用 'AutoPostBack="true"' 代码转到 .cs Page_load、userControl page_load 和 masterPage page_load.. 我想避免这种情况
  • 级联下拉菜单不适合您,文章对您没有帮助
猜你喜欢
  • 2013-10-03
  • 2012-07-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多