国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項超值服

開通VIP
gridview分頁模型

GridView的本身支持分頁,一般情況下我們可以通過如下幾個步驟實現(xiàn)分頁:

1、更改GrdView控件的AllowPaging屬性為true;

2、更改GrdView控件的PageSize屬性為一個數(shù)值(默認(rèn)為10);

3、更改GrdView控件的PageSetting屬性;

4、為GridView添加事件:OnPageIndexChanging

大多數(shù)情況下通過上邊的步驟就可以實現(xiàn)GridView的分頁了,當(dāng)然很多代碼需要你自己來寫。

但是有時候我們需要自定義分頁模板,還希望能通過更統(tǒng)一以及更少的代碼來實現(xiàn)這個分頁功能??紤]到這些問題,我實現(xiàn)了一個通用的GridView分頁模型,發(fā)布出來,僅供大家參考。


1、創(chuàng)建一個基礎(chǔ)頁面類

BasePage,繼承System.Web.UI.Page

在這個基類中,創(chuàng)建幾個通用的分頁屬性和方法,然后需要分頁的頁面都繼承這個基類。

public class BasePage : System.Web.UI.Page
{
    public BasePage()
    {
    }
  
    #region 分頁相關(guān)屬性和方法
    /// <summary>
    /// 總的記錄數(shù),目前僅用于自定義記錄數(shù)
    /// </summary>
    protected int GridView_RecordCount = 0;
  
    /// <summary>
    /// 使用自定義的記錄數(shù)
    /// 需要設(shè)置GridView_RecordCount
    /// 如果一次性綁定全部數(shù)據(jù),不需要使用自定義,GridView可以通過DataSource自己獲取
    /// </summary>
    protected bool IsUseCustomRecordCount = false;
  
    /// <summary>
    /// 實現(xiàn)GridView數(shù)據(jù)綁定的虛方法
    /// 在具體的頁面類中重寫這個方法,在PageTurn方法中就會調(diào)用重寫的方法,以實現(xiàn)分頁后的數(shù)據(jù)重新綁定
    /// </summary>
    protected virtual void GridView_DataBind()
    {
    }
  
    /// <summary>
    /// 分頁頁碼跳轉(zhuǎn)
    /// </summary>
    /// <param name="sender">跳轉(zhuǎn)按鈕</param>
    /// <param name="e"></param>
    protected void GridView_PageTurn(object sender, EventArgs e)
    {
        System.Web.UI.WebControls.Button btnGoPage;
        System.Web.UI.WebControls.GridView GridView1;
        System.Web.UI.WebControls.TextBox txtGoPage;
        try
        {
            btnGoPage = (System.Web.UI.WebControls.Button)sender;
            GridView1 = (System.Web.UI.WebControls.GridView)btnGoPage.NamingContainer.Parent.Parent;
            txtGoPage = (System.Web.UI.WebControls.TextBox)GridView1.BottomPagerRow.FindControl("txtGoPage");
        }
        catch
        {
            MessageBox.Show(this.Page, "頁碼輸入框和跳轉(zhuǎn)按鈕都必須在GridView的分頁模板中!");
            return;
        }
  
        int pageIndex = 1;
        bool goSuccess = false;
  
        if (!string.IsNullOrEmpty(txtGoPage.Text.Trim()))
        {
            if (int.TryParse(txtGoPage.Text.Trim(), out pageIndex))
            {
                pageIndex--;
  
                if (pageIndex >= 0 && pageIndex < GridView1.PageCount)
                {
                    goSuccess = true;
  
                    GridView1.PageIndex = pageIndex;
                    GridView_DataBind();
                }
            }
        }
  
        if (!goSuccess)
        {
            MessageBox.Show(this.Page, "無效的頁碼!");
            return;
        }
    }
  
    /// <summary>
    /// 頁碼改變時觸發(fā)
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    protected void GridView_PageIndexChanging(object sender, System.Web.UI.WebControls.GridViewPageEventArgs e)
    {
        System.Web.UI.WebControls.GridView GridView1 = sender as System.Web.UI.WebControls.GridView;
  
        GridView1.PageIndex = e.NewPageIndex;
        GridView_DataBind();
    }
  
    /// <summary>
    /// GridView數(shù)據(jù)綁定完畢之后觸發(fā),顯示記錄數(shù)
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    protected void GridView_DataBound(object sender, EventArgs e)
    {
        //獲取當(dāng)前GridView
        System.Web.UI.WebControls.GridView GridView1 = sender as System.Web.UI.WebControls.GridView;
  
        if (GridView1.BottomPagerRow == null)
        {
            return;
        }
  
        //總是顯示分頁行
        GridView1.BottomPagerRow.Visible = true;
  
        System.Web.UI.WebControls.Label lblRecorCount = (System.Web.UI.WebControls.Label)GridView1.BottomPagerRow.FindControl("lblRecorCount");
        if (IsUseCustomRecordCount)
        {
            lblRecorCount.Text = GridView_RecordCount.ToString();
        }
        else
        {
            if (GridView1.DataSource == null)
            {
                return;
            }
  
            //根據(jù)數(shù)據(jù)類型,動態(tài)獲取綁定的數(shù)據(jù)源的記錄數(shù)
            if (GridView1.DataSource.GetType() == typeof(DataView))
            {
                lblRecorCount.Text = ((DataView)GridView1.DataSource).Count.ToString();
            }
            else if (GridView1.DataSource.GetType() == typeof(DataTable))
            {
                lblRecorCount.Text = ((DataTable)GridView1.DataSource).Rows.Count.ToString();
            }
            else if (GridView1.DataSource.GetType() == typeof(DataSet))
            {
                lblRecorCount.Text = ((DataSet)GridView1.DataSource).Tables[0].Rows.Count.ToString();
            }
            else if (GridView1.DataSource is Array)
            {
                lblRecorCount.Text = ((Array)GridView1.DataSource).Length.ToString();
            }
            else if (GridView1.DataSource.GetType() is System.Collections.IList)
            {
                lblRecorCount.Text = ((System.Collections.IList)GridView1.DataSource).Count.ToString();
            }
            else if (GridView1.DataSource.GetType() is System.Collections.ICollection)
            {
                lblRecorCount.Text = ((System.Collections.ICollection)GridView1.DataSource).Count.ToString();
            }
            else
            {
                TspOALog.Write("綁定到GridView的數(shù)據(jù)類型未知:" + GridView1.DataSource.GetType());
            }
        }
    }
    #endregion
}

 

2、頁面cs文件繼承基類:BasePage

public partial class NewsList: BasePage

 

3、在頁面添加一個GridView并設(shè)置相關(guān)屬性

 <asp:GridView ID="GridView1" BorderStyle="Solid" BorderWidth="1px" BorderColor="#73B7EA"
                    Width="100%" runat="server" AutoGenerateColumns="False" HorizontalAlign="Center"
                    BackColor="White" CellPadding="4" GridLines="None"   OnPageIndexChanging="GridView_PageIndexChanging" PageSize="10"
                    AllowPaging="true" OnDataBound="GridView_DataBound">
  
<Columns>...</Columns>
  
 <PagerTemplate>
                        <div style="text-align: center;"><span style="color: Blue">
                            共有<asp:label id="lblRecorCount" runat="server"></asp:label>條記錄 
                            第<asp:Label ID="lblcurPage" ForeColor="Blue" runat="server" Text='<%# ((GridView)Container.Parent.Parent).PageIndex+1  %>'></asp:Label>頁/共<asp:Label ID="lblPageCount" ForeColor="blue" runat="server" Text='<%# ((GridView)Container.Parent.Parent).PageCount %>'></asp:Label>頁</span>  
                            <asp:LinkButton ID="cmdFirstPage" runat="server" CommandName="Page" CommandArgument="First"  Enabled="<%# ((GridView)Container.Parent.Parent).PageIndex!=0 %>">首頁</asp:LinkButton
                            <asp:LinkButton ID="cmdPreview" runat="server" CommandArgument="Prev" CommandName="Page"  Enabled="<%# ((GridView)Container.Parent.Parent).PageIndex!=0 %>">上一頁</asp:LinkButton
                            <asp:LinkButton ID="cmdNext" runat="server" CommandName="Page" CommandArgument="Next"  Enabled="<%# ((GridView)Container.Parent.Parent).PageIndex!=((GridView)Container.Parent.Parent).PageCount-1 %>">下一頁</asp:LinkButton
                            <asp:LinkButton ID="cmdLastPage" runat="server" CommandArgument="Last" CommandName="Page"  Enabled="<%# ((GridView)Container.Parent.Parent).PageIndex!=((GridView)Container.Parent.Parent).PageCount-1 %>">尾頁</asp:LinkButton>  
                            到<asp:TextBox ID="txtGoPage" runat="server" Text='<%# ((GridView)Container.Parent.Parent).PageIndex+1 %>'  Width="30px" CssClass="simpletextbox"></asp:TextBox>頁
                            <asp:Button ID="Button3" runat="server" Width="40px"  OnClick="GridView_PageTurn" Text="跳轉(zhuǎn)" CssClass="simplebutton" /></div>
                    </PagerTemplate>
  
</asp:GridView>

主要是:

AllowPaging:允許GridView分頁

PageSize:默認(rèn)10

OnDataBound:綁定到基類的事件,用于顯示總記錄數(shù)

OnPageIndexChanging:綁定到基類的事件,用于分頁的數(shù)據(jù)處理

PagerTemplate:包括記錄數(shù),當(dāng)前頁,總頁數(shù),首頁,尾頁,上一頁,下一頁,頁碼跳轉(zhuǎn)

其中頁碼跳轉(zhuǎn)事件綁定到基類中的:GridView_PageTurn

 

4、最后編寫獲取數(shù)據(jù)的方法

重寫基類的GridView_DataBind方法:其中查詢數(shù)據(jù),然后綁定到GridView。

 protected override void GridView_DataBind()
{
  
//獲取數(shù)據(jù),可以是獲取全部,也可以是只獲取當(dāng)前頁數(shù)據(jù)
  
...
  
//如果你想自己設(shè)置總記錄數(shù),可以使用IsUseCustomRecordCount
  
//這種情況適合分頁獲取少量數(shù)據(jù)的情況
  
IsUseCustomRecordCount=true;
  
GridView_RecordCount=10000;
  
 
//綁定數(shù)據(jù)到GridView
  
GridView1.DataSource = dv;
GridView1.DataBind();
  
}

以后只要有需要分頁的列表,繼承BasePage,然后設(shè)置相關(guān)屬性,編寫數(shù)據(jù)獲取代碼就可以了。不必在每個頁面都編寫OnPageIndexChanging,OnDataBound,以及頁碼跳轉(zhuǎn)的代碼,統(tǒng)一實現(xiàn),節(jié)省工作量。

你還可以使用統(tǒng)一的PageSize,只需要在BasePage添加一個屬性,然后在GridView中設(shè)置PageSize的屬性。

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
為datagrid的自帶分頁添加首頁、尾頁及狀態(tài)功能
GridView激發(fā)了未處理事件PageIndexChanging
GridView的分頁-萬能分頁代碼
asp.net gridview 分頁
DataList分頁方法
ASP.NET 2.0數(shù)據(jù)處理之高級分頁與排序
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服