【问题标题】:Dropdowns in repeater full page postback转发器整页回发中的下拉菜单
【发布时间】:2015-04-19 20:06:45
【问题描述】:

我遇到了一个我很难解释的问题。

我正在努力改进现有的解决方案,并且我看到我的下拉菜单出现了我没有预料到的行为。即使它们设置为异步,它们似乎总是在进行整页回发。它们位于中继器内。

这是我更新面板中的中继器。

 <asp:UpdatePanel runat="server" ID="upnlPartSelector" ChildrenAsTriggers="true" UpdateMode="Always" Visible="false">
<ContentTemplate>
    <div class="product-page">
        <div class="row">

            <asp:Repeater runat="server" ID="rptFilterCategories" OnItemDataBound="RptCategories_ItemDataBound" OnItemCreated="rptFilterCategories_ItemCreated">
                <HeaderTemplate>
                    <div class="filter-selection">
                </HeaderTemplate>
                <ItemTemplate>
                    <div class="title">
                        <%# Eval("CategoryName") %>
                    </div>
                    <div class="select">
                        <asp:DropDownList CssClass="form-control" runat="server" ID="ddlFilterItems" AutoPostBack="true" DataTextField="Display" DataValueField="Value" OnSelectedIndexChanged="ddlFilterItems_SelectedIndexChanged"/>
                    </div>
                </ItemTemplate>
                <FooterTemplate>
                    </div>
                </FooterTemplate>
            </asp:Repeater>
    </div>
</ContentTemplate>

我正在将下拉列表注册为转发器 OnItemCreated 方法上的异步触发器。

 protected void rptFilterCategories_ItemCreated(object sender, RepeaterItemEventArgs e)
    {
        if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
        {
            var control = e.Item.FindControl("ddlFilterItems");
            ScriptManager.GetCurrent(Page).RegisterAsyncPostBackControl(control);
        }
    }

但他们仍然在进行整页回发,而不仅仅是更新面板。我需要将中继器设置为更新面板的触发器吗?或者具体说一下异步回发控件连接到哪个更新面板?

【问题讨论】:

    标签: c# asp.net updatepanel repeater partial-postback


    【解决方案1】:

    您是否尝试过在 html 中添加触发器以查看它是否可以正常工作?并暂时注释掉后面代码中的RegisterAsyncPostBackControl

    </ContentTemplate>
    <Triggers> 
        <asp:AsyncPostBackTrigger ControlID="ddlFilterItems" EventName="SelectedIndexChanged" /> 
    </Triggers> 
    

    【讨论】:

    • 想通了。似乎我一直在尝试改进的解决方案覆盖了默认的脚本管理器(谁知道是什么原因)。所以我不得不调用自定义代码来让脚本管理器实际注册触发器。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-28
    • 1970-01-01
    相关资源
    最近更新 更多