【问题标题】:Ajax Update Panel in Nested Listview not working嵌套列表视图中的 Ajax 更新面板不起作用
【发布时间】:2011-07-01 10:53:52
【问题描述】:

我在嵌套列表视图中有一个 Ajax 更新面板,如下所示。

列表视图 Ajax

<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
    <asp:ListView ID="OuterListView" runat="server" DataSourceID="SqlDataSource1">
    <EmptyDataTemplate>

        No Data Available.
    </EmptyDataTemplate>
    <ItemTemplate>
        <asp:Label ID="PhotoAlbumIdLabel" runat="server" Text='<%# Eval("PhotoAlbumId") %>'
            Visible="false" />
        <asp:UpdatePanel ID="UpdatePanel1" runat="server">
            <ContentTemplate>
                <asp:ListView ID="InnerListView" runat="server" DataSourceID="SqlDataSource2">
                    <EmptyDataTemplate>
                        <span>No data was returned.</span>
                    </EmptyDataTemplate>
                    <ItemTemplate>
                        <br />
                        <asp:Image ID="Image1" runat="server" ImageUrl='<%# Eval("ImageUrl") %>' ToolTip='<%# Eval("ToolTip") %>'
                            Width="400px" Height="300px" />
                        <br />
                    </ItemTemplate>
                    <LayoutTemplate>
                        <div id="itemPlaceholderContainer" runat="server" style="">
                            <span runat="server" id="itemPlaceholder" />
                        </div>
                        <asp:DataPager ID="DataPager1" runat="server" PageSize="1">
                            <Fields>
                                <asp:NextPreviousPagerField FirstPageText="&lt;&lt;" ShowFirstPageButton="True" ShowNextPageButton="False"
                                    PreviousPageText="&lt&nbsp" ShowPreviousPageButton="True" />
                                <asp:NumericPagerField />
                                <asp:NextPreviousPagerField LastPageText="&gt;&gt;" ShowLastPageButton="True" NextPageText="&nbsp&gt"
                                    ShowNextPageButton="True" ShowPreviousPageButton="False" />
                            </Fields>
                        </asp:DataPager>
                        </span>
                    </LayoutTemplate>
                </asp:ListView>
            </ContentTemplate>
        </asp:UpdatePanel>
        <asp:SqlDataSource ID="SqlDataSource2" runat="server" ConnectionString="<%$ ConnectionStrings:RenaissanceConnectionString1 %>"
            SelectCommand="SELECT [ToolTip], [ImageUrl], [Description], [PhotoAlbumId], [SortOrder] FROM [Picture] WHERE ([PhotoAlbumId] = @PAId) ORDER BY [SortOrder]">
            <SelectParameters>
                <asp:ControlParameter ControlID="PhotoAlbumIdLabel" DefaultValue="0" Name="PAId"
                    PropertyName="Text" Type="Int32" />
            </SelectParameters>
        </asp:SqlDataSource>
        <br />
        </span>
    </ItemTemplate>
</asp:ListView>

不幸的是,当我单击数据分页器按钮时,虽然图片正确更改,但浏览器从顶部显示页面。如果我删除外部列表视图,它可以完美地保持其在页面上的位置。

这工作正常,所以如果您认为代码正确,也许您可​​以建议一些其他更改。

如果有任何天才可以提出解决方案,将不胜感激。

非常感谢期待。

【问题讨论】:

    标签: asp.net ajax listview updatepanel nested


    【解决方案1】:

    也许如果您添加 ChildrenAsTriggers="true 并将 UpdateMode 设置为 Conditional 它会为您工作。

    <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional" ChildrenAsTriggers="true">
    

    【讨论】:

      【解决方案2】:

      您的&lt;ASP:UpdatePanel&gt; 标记缺少其&lt;Triggers&gt; 元素。

      我觉得应该是这样的

       <asp:UpdatePanel ... >
       <Triggers>
        <AsyncPostBackTrigger ControlID='DataPager1'>
       </Triggers>
        <ContentTemplate> .....
      

      【讨论】:

      • 感谢您的建议。我添加了: 并且我收到一条消息无法找到控件 DataPager1 也许它看不到它,因为它在列表视图内?任何想法
      • 只是为了重申我原来的问题,我在更新面板内的列表视图中有一个数据分页器,它工作得很好。仅当我将列表视图放入另一个列表视图时才会出现此问题。
      猜你喜欢
      • 1970-01-01
      • 2014-08-20
      • 1970-01-01
      • 2014-04-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多