ListView Control中的ASP.NET更新面板未更新

时间:2014-01-09 22:06:58

标签: c# asp.net listview updatepanel

基本上我有这种情况

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>

我尝试过不同的排列方式;即在面板外面按钮并添加触发器等但我无法让它更新。

似乎因为用户控件位于父列表视图的项模板中,导致更新面板因某种原因无法更新...

2 个答案:

答案 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>