ASP.NET панель обновления в элементе управления ListView не обновляется
В основном у меня такая ситуация
Страница > Панель Обновления > пользовательский элемент управления > Представление Списка > Пользовательский контроль (внутри шаблона элемента) > Панель Обновления
Когда я нажимаю на кнопку в самой внутренней панели обновления, я хочу, чтобы содержимое панели обновления обновилось. Этого не может быть. Тем не менее обработчик щелчка выполняется нормально асинхронно. Панель обновления просто не хочет обновляться.
Код - у меня создал простое тестовое веб-приложение, которое воспроизводит проблему, и поделился им на моем 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 ответа:
Проблема заключается в том, когда вы вызываете методdatabind вListUserControl .
Перемещение
lstTest.DataBind();
так, чтобы он выполнялся внутриPage_Load
, а неPage_PreRender
, устраняет проблему для вашегопростого тестового веб-приложения .
Пробовали ли вы:
<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>