我遇到了一个问题,我很难解释。
我正在努力改进现有的解决方案,而且我看到了我没想到的下拉行为。看起来他们总是做一整页回发,即使他们被设置为异步。他们在转发器内。
这是我的更新面板中的转发器。
<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);
}
}
然而他们仍在进行整页回发,而不仅仅是更新面板。我是否需要将转发器设置为更新面板的触发器?或者具体说一下Async Postback Control连接哪个更新面板?
答案 0 :(得分:0)
您是否尝试在html中添加触发器以查看是否可以使其正常工作?并暂时注释掉后面代码中的RegisterAsyncPostBackControl
。
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="ddlFilterItems" EventName="SelectedIndexChanged" />
</Triggers>