2022年4月2日 星期六

[研究][ASP.NET]ListView客製化分頁顯示DataPager控制項(一)

[研究][ASP.NET]ListView客製化分頁顯示DataPager控制項(一)

2022-04-01

********************************************************************************

2022-04-06新增

[研究][ASP.NET]ListView客製化分頁顯示DataPager控制項(二)
https://shaurong.blogspot.com/2022/04/aspnetlistviewdatapager.html

********************************************************************************

環境:Visual Studio 2022 + ASP.NET + WebForm + Web Application + C#

ListView 中部份內容,DataPager可不放 ListView 中,若放 ListView 外,要加上 PagedControlID;另外可以設定多個 DataPager 指向同一個ListView,不管是在 ListView 內或外,都同時可以顯示和作用。 

DataPager 預設提供兩種頁面巡覽區樣式:「下一頁/上一頁頁面巡覽區」和「數字頁面巡覽區」。

*******************************************************************************

DataPager 預設的「下一頁/上一頁頁面巡覽區」

Default.aspx 中 ListView 的部份


<LayoutTemplate>
    <table runat="server">
        <tr runat="server">
            <td runat="server">
                <table id="itemPlaceholderContainer" runat="server" border="0" style="">
                    <tr runat="server" style="">
                        <th runat="server">id</th>
                        <th runat="server">欄位名稱1</th>
                    </tr>
                    <tr id="itemPlaceholder" runat="server">
                    </tr>
                </table>
            </td>
        </tr>
        <tr runat="server">
            <td runat="server" style="">
              <asp:DataPager ID="DataPager1" runat="server" PagedControlID="ListView1">
                <Fields>
                    <asp:NextPreviousPagerField ButtonType="Button" ShowFirstPageButton="True" ShowLastPageButton="True" />
                </Fields>
              </asp:DataPager>
            </td>
        </tr>
    </table>
</LayoutTemplate>


DataPager 可以在 ListView 中,也可以搬出 ListView 外,後者在 FindControl 時會方便些。

*******************************************************************************

DataPager 預設的「數字頁面巡覽區」


Default.aspx 中 ListView 的部份


<LayoutTemplate>
    <table runat="server">
        <tr runat="server">
            <td runat="server">
                <table id="itemPlaceholderContainer" runat="server" border="0" style="">
                    <tr runat="server" style="">
                        <th runat="server">id</th>
                        <th runat="server">欄位名稱1</th>
                    </tr>
                    <tr id="itemPlaceholder" runat="server">
                    </tr>
                </table>
            </td>
        </tr>
        <tr runat="server">
            <td runat="server" style="">
                <asp:DataPager ID="DataPager1" runat="server" PagedControlID="ListView1">
                <Fields>
                    <asp:NextPreviousPagerField ButtonType="Button" ShowFirstPageButton="True" ShowNextPageButton="False" ShowPreviousPageButton="False" />
                    <asp:NumericPagerField />
                    <asp:NextPreviousPagerField ButtonType="Button" ShowLastPageButton="True" ShowNextPageButton="False" ShowPreviousPageButton="False" />
                </Fields>
            </asp:DataPager>
            </td>
        </tr>
    </table>
</LayoutTemplate>


*******************************************************************************

強化改良1:結合上面2種,再多上10頁、下10頁


<LayoutTemplate>
    <table runat="server">
        <tr runat="server">
            <td runat="server">
                <table id="itemPlaceholderContainer" runat="server" border="0" style="">
                    <tr runat="server" style="">
                        <th runat="server">id</th>
                        <th runat="server">欄位名稱1</th>
                    </tr>
                    <tr id="itemPlaceholder" runat="server">
                    </tr>
                </table>
            </td>
        </tr>
        <tr runat="server">
            <td runat="server" style="">
                <asp:DataPager ID="DataPager1" runat="server">
                    <Fields>
                        <asp:NextPreviousPagerField ButtonType="Button" ShowFirstPageButton="True" ShowNextPageButton="False" ShowPreviousPageButton="True" />
                        <asp:NumericPagerField PreviousPageText="上10頁" ButtonCount="10" NextPageText="下10頁" />
                        <asp:NextPreviousPagerField ButtonType="Button" ShowLastPageButton="True" ShowNextPageButton="True" ShowPreviousPageButton="False" />
                    </Fields>
                </asp:DataPager>
            </td>
        </tr>
    </table>
</LayoutTemplate>


*******************************************************************************

強化改良2:再多顯示目前第幾頁、共幾頁、共幾筆。


<LayoutTemplate>
    <table runat="server">
        <tr runat="server">
            <td runat="server">
                <table id="itemPlaceholderContainer" runat="server" border="0" style="">
                    <tr runat="server" style="">
                        <th runat="server">id</th>
                        <th runat="server">欄位1</th>
                    </tr>
                    <tr id="itemPlaceholder" runat="server">
                    </tr>
                </table>
            </td>
        </tr>
        <tr runat="server">
            <td runat="server" style="">
                <asp:DataPager ID="DataPager1" runat="server">
                    <Fields>
                        <asp:NextPreviousPagerField ButtonType="Button" ShowFirstPageButton="True" ShowNextPageButton="False" ShowPreviousPageButton="True" />
                        <asp:NumericPagerField PreviousPageText="上10頁" ButtonCount="10" NextPageText="下10頁" />
                        <asp:NextPreviousPagerField ButtonType="Button" ShowLastPageButton="True" ShowNextPageButton="True" ShowPreviousPageButton="False" />
                        <asp:TemplatePagerField>
                            <PagerTemplate>
                                <%--<td class="info">--%>
                                目前在第 <b>
                                <%# Container.TotalRowCount > 0 ? Math.Ceiling(((double)(Container.StartRowIndex + Container.MaximumRows) / Container.MaximumRows)) : 0 %>
                                </b>頁,共 <b>
                                <%# Math.Ceiling((double)Container.TotalRowCount / Container.MaximumRows)%>
                                </b>頁(共 <%# Container.TotalRowCount %> 筆)
                                <%--</td>--%>
                            </PagerTemplate>
                        </asp:TemplatePagerField>
                    </Fields>
                </asp:DataPager>
            </td>
        </tr>
    </table>
</LayoutTemplate>



(完)

相關

[研究][ASP.NET]ListView客製化分頁顯示DataPager控制項(三)
https://shaurong.blogspot.com/2022/04/aspnetlistviewdatapager_8.html

[研究][ASP.NET]ListView客製化分頁顯示DataPager控制項(二)
https://shaurong.blogspot.com/2022/04/aspnetlistviewdatapager.html

[研究][ASP.NET]ListView客製化分頁顯示DataPager控制項(一)
https://shaurong.blogspot.com/2022/04/aspnetlistviewpager.html

[研究][ASP.NET]設定 Gridview 分頁樣式為:第X頁,共X頁,第一頁 上一頁 下一頁 最後一頁 跳到第X頁 每頁顯示X筆
https://shaurong.blogspot.com/2020/04/aspnet-gridview-xx-x-x.html


沒有留言:

張貼留言