C#ASP.NET,DataPager在我第一次点击时不改变页面

jhiyze9q  于 2023-04-13  发布在  .NET
关注(0)|答案(3)|浏览(161)

我有个问题
我写了这段代码:

<asp:ListView ID="ListComment" runat="server">
        <LayoutTemplate>
            <asp:PlaceHolder ID="itemPlaceHolder" runat="server"></asp:PlaceHolder>
        </LayoutTemplate>
        <ItemTemplate>
            <div class="CommentArea" id='Comment<%#Eval("Id")%>'>
                <div class="UserDate">
                    <span class="font07em fontunderline"><b>Inviato da: </b></span><span class="font07em"><b><a href="#"><%#Eval("Autore") %></a></b></span><span class="font07em fontunderline"><b> alle <%#Eval("Orario", "{0:hh':'mm}") %></b></span>
                </div>
                <div class="LikeDontLike">
                    <span class="font07em"><b>
                        <asp:LinkButton runat="server" ID="Like" CommandArgument='<%#Eval("Id")%>' OnClick="Mipiace_Click" >Like</asp:LinkButton>: <%#Eval("Mipiace") %> /
                        <asp:LinkButton runat="server" ID="DontLike" CommandArgument='<%#Eval("Id")%>' OnClick="Nonmipiace_Click" >Don't Like</asp:LinkButton>: <%#Eval("Nonmipiace") %></b></span>
                </div>
                <div class="UserComment">
                    <span class="font07em"><%#Eval("Commento") %></span>
                </div>
            </div>
        </ItemTemplate>
    </asp:ListView>
    <asp:DataPager runat="server" ID="PageComment" PagedControlID="ListComment" PageSize="2">
        <Fields>
            <asp:NumericPagerField />
        </Fields>
    </asp:DataPager>

当我运行它时,我点击DataPager的页面,它不会改变视图。如果我点击第二次,它会改变。我试图把DataPager放入LayoutTemplate,但我总是遇到同样的问题。我如何解决它?谢谢大家!

pxy2qtax

pxy2qtax1#

我想你正在使用page_load事件来绑定你的列表视图到你的数据源。你需要添加一个新的句柄列表视图的PagePropertysChanged事件来重新绑定你的列表视图。最后,你的数据绑定代码将在page_load事件(不需要检查回发)和listview_PagePropertysChanged事件中重复。

e4yzc0pl

e4yzc0pl2#

我也遇到了同样的问题,并且发现我在Page_Load事件上渲染数据会扰乱List视图上渲染的数据。我的解决方案是为数据分页器添加OnPreRender事件,并在那里而不是Page_Load上渲染我的数据。
这是一个很好的例子:ASP.Net : DataPager Control always a step behind with paging

qncylg1j

qncylg1j3#

你需要加上

<asp:ListView ID="ListComment" runat="server" OnPagePropertiesChanging="Listcomment_PagePropertiesChanging">

然后在代码隐藏中

protected void Listcomment_PagePropertiesChanging(object sender, PagePropertiesChangingEventArgs e)
{
    this.ListComment.SetPageProperties(e.StartRowIndex, e.MaximumRows, false);

    // Rebind your ListComment
}

相关问题