嵌套Listview中的Ajax更新面板无法正常工作

时间:2011-07-01 10:53:53

标签: asp.net ajax listview updatepanel nested

我在嵌套的listview中有一个Ajax更新面板,如下所示。

<%@ Page Title =“LV Ajax”Language =“VB”MasterPageFile =“〜/ MasterPages / SimpleMasterPage.master”     AutoEventWireup =“false”CodeFile =“LV Ajax.aspx.vb”Inherits =“LV_Ajax”%>

        ListView 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>

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

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

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

非常感谢您的期待。

2 个答案:

答案 0 :(得分:1)

也许如果您添加ChildrenAsTriggers =“true并将UpdateMode设置为Conditional,它将适合您。

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

答案 1 :(得分:0)

您的<ASP:UpdatePanel>标记缺少其<Triggers>元素。

我认为它应该像

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