基本上我有这种情况
Page> 更新面板> 用户控制> 列表视图> 用户控制(在项目模板内)> 更新面板
当我点击最内层更新面板中的按钮时,我希望更新更新面板的内容。这不会发生。但是,单击处理程序被异步命中。更新面板只是不想更新。
代码 - 我创建了一个简单的测试网络应用,可以复制问题,并在我的google驱动器上分享:UpdatePanelInListViewTest.zip,但这里是标记:
页:
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<asp:UpdatePanel ID="ajaxParent" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<uc1:ListUserControl ID="ListUserControl1" runat="server" />
</ContentTemplate>
</asp:UpdatePanel>
列出用户控件:
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="ListUserControl.ascx.cs" Inherits="UpdatePanelInListViewTest.ListUserControl" %>
<%@ Register src="MiniWidget.ascx" tagname="MiniWidget" tagprefix="uc1" %>
<asp:ListView ID="lstTest" runat="server">
<ItemTemplate>
Item
<uc1:MiniWidget ID="MiniWidget1" runat="server" />
</ItemTemplate>
</asp:ListView>
迷你小工具用户控制
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="MiniWidget.ascx.cs" Inherits="UpdatePanelInListViewTest.MiniWidget" %>
<asp:UpdatePanel ID="ajaxWidget" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<asp:LinkButton ID="lnkTest" runat="server" onclick="lnkTest_Click">Test</asp:LinkButton>
<asp:Label ID="lblTest" runat="server" Text=""></asp:Label>
</ContentTemplate>
</asp:UpdatePanel>
我尝试过不同的排列方式;即在面板外面按钮并添加触发器等但我无法让它更新。
似乎因为用户控件位于父列表视图的项模板中,导致更新面板因某种原因无法更新...
答案 0 :(得分:1)
问题与在 ListUserControl 中调用数据绑定方法有关。
移动lstTest.DataBind();
以便在Page_Load
而不是Page_PreRender
内执行,以解决简单测试网络应用的问题。
答案 1 :(得分:0)
你试过了吗?
<asp:UpdatePanel ID="ajaxPanel" runat="server" ChildrenAsTriggers="true" UpdateMode="Conditional">
<Triggers>
<asp:AsyncPostBackTrigger ControlID="btnTest" />
</Triggers>
<ContentTemplate>
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
<asp:Button ID="btnTest" runat="server" Text="Test" onclick="btnTest_Click" />
</ContentTemplate>
</asp:UpdatePanel>