如何在DataGrid控件上实现分页

程序word+ 专栏收录该内容
11 篇文章 0 订阅

1:页面图片显示

 2:布局图片显示。DataGrid控件自行布局

我还是附上吧,哈哈,这样比较方便

 <tr valign="top">
            <td valign="middle" colspan="2">
                <table cellspacing="0" cellpadding="0" width="100%" align="center" border="0" style="height:30px">
                    <tr valign="top">
                        <td valign="middle" align="left">
                            <asp:Label ID="pageInfo" runat="server">共0条,分1页,第1页</asp:Label>&nbsp;&nbsp;
                            其中每页:<asp:TextBox
                                ID="PageSize" runat="server" Text="30" Width="40px"></asp:TextBox>条记录
                        </td>
                        <td align="right" valign="middle">
                            <asp:LinkButton ID="Linkbutton1" runat="server" ForeColor="#218fee" 
                                onclick="Linkbutton1_Click" >首&nbsp;&nbsp;页</asp:LinkButton>&nbsp;
                            <asp:LinkButton ID="Linkbutton2" runat="server" ForeColor="#218fee" 
                                onclick="Linkbutton1_Click" >上一页</asp:LinkButton>&nbsp;
                            <asp:LinkButton ID="Linkbutton3" runat="server" ForeColor="#218fee" 
                                onclick="Linkbutton1_Click" >下一页</asp:LinkButton>&nbsp;
                            <asp:LinkButton ID="Linkbutton4" runat="server" ForeColor="#218fee" 
                                onclick="Linkbutton1_Click" >尾&nbsp;&nbsp;页</asp:LinkButton>&nbsp;
                            跳转<input id="newpage" type="text" size="4" name="newpage" runat="server"/>页
                            <asp:LinkButton ID="Linkbutton5" runat="server" ForeColor="#218fee" 
                                onclick="Linkbutton1_Click" >GO</asp:LinkButton>
                        </td>
                    </tr>
                </table>
            </td>
        </tr> 

 

 3:分页的点击事件代码

 protected void Linkbutton1_Click(object sender, EventArgs e)
        {
            int nIndex2 = -1;
            LinkButton b = null;
            if (sender.GetType() != typeof(LinkButton)) return;
            b = sender as LinkButton;
            int nCurrentPageIndex = 1;
            int nPageCount = 0;
            string str1 = ViewState["CurPageIndex"] != null ? ViewState["CurPageIndex"].ToString() : "";
            string str2 = ViewState["PageCount"] != null ? ViewState["PageCount"].ToString() : "";
            if (str1 == "" || !int.TryParse(str1, out nCurrentPageIndex)) nCurrentPageIndex = 1;
            if (str2 == "" || !int.TryParse(str2, out nPageCount)) nPageCount = 1;
            switch (b.ID)
            {
                case "Linkbutton1":   //定位第一页
                    newpage.Value = "";
                    nIndex2 = 1;
                    break;
                case "Linkbutton2":  //定位上一页
                    newpage.Value = "";
                    nIndex2 = nCurrentPageIndex - 1;
                    if (nIndex2 == 0) nIndex2 = 1;
                    break;
                case "Linkbutton3":   //定位下一页
                    newpage.Value = "";
                    nIndex2 = nCurrentPageIndex + 1;
                    if (nIndex2 >= nPageCount + 1) nIndex2 = nPageCount;
                    break;
                case "Linkbutton4":   //定位最末页
                    newpage.Value = "";
                    nIndex2 = nPageCount;
                    break;
                case "Linkbutton5"://导航到某一页
                    if (!int.TryParse(newpage.Value.Trim(), out nIndex2)) nIndex2 = nCurrentPageIndex;
                    if (nIndex2 > nPageCount) nIndex2 = nPageCount;
                    if (nIndex2 == 0)
                    {
                        newpage.Value = "1";
                        nIndex2 = 1;
                    }
                    break;
                default:
                    nIndex2 = nCurrentPageIndex;
                    break;
            }
            if (nIndex2 < 0) return;
            GetPageIndex(nIndex2); //取分页的数据
        }

 private void GetPageIndex(int pageIndex)
        {
            
            pageInfo.Text = "第1页/共10页,共150条记录 每页15条";
            newpage.Value = "0";

            //下面是正式的代码
            int nPageSize = 30;     //每页显示多少条
            int nCurPageIndex = 0;
            int nPageCount = 0;        //共多少页
            int nPageIndex = pageIndex;//第几页
            int nRecordSetCount = 0;        //共多少记录
            string strPageInfo = "第{2}页/共{1}页,共{0}条记录,每页{3}条";
            string strErrMsg = "";
           
            string strFilter = GetFileter();
           
            string strSort = ViewState["SortString"] != null ? ViewState["SortString"].ToString() : "";

            if (PageSize.Text.Trim() != "")
            {
                if (!int.TryParse(PageSize.Text.Trim(), out nPageSize)) nPageSize = 30;
            }
            PageSize.Text = nPageSize.ToString();


            DbHelper db= new DbHelper();
            DataTable dt = db.GetProjectBasicTable(strFilter, strSort, nPageSize, ref nPageIndex, ref nRecordSetCount, ref nPageCount, out strErrMsg);
            if (dt == null)
            {
                (Context.ApplicationInstance as Global).MessageBox(strErrMsg);
                 return;
            }
            nCurPageIndex = nPageIndex;//当前页数

            //显示分页信息
            pageInfo.Text = String.Format(strPageInfo, nRecordSetCount, nPageCount, nPageIndex, nPageSize);
            if (nPageIndex <= nPageCount) newpage.Value = nPageIndex.ToString();
            else newpage.Value = "0";

            ViewState["CurPageIndex"] = nCurPageIndex.ToString();//当前页面
            ViewState["PageCount"] = nPageCount.ToString();//所有页数

。。。。。。后面是自己想要实现的一些程序判断 

}

 

 

4:DbHelper 类     

  public DataTable GetProjectBasicTable(string strFilter, string strSort, int nPageSize, ref int nPageIndex, ref int nRecordSetCount, ref int nPageCount, out string strErrMsg)
        {

//看个人的程序代码而定,我这里是需要判断是否登录
            if (HttpContext.Current.Session["QciWeb"] == null)
            {
                strErrMsg = "会话意外丢失!请重新登录。";
                return null;
            }
            strErrMsg = "";
            nRecordSetCount = 0;
            nPageCount = 0;
            SqlConnection conn = null;
            SqlCommand comm = null;
            SqlDataAdapter da = null;
            DataTable dt = null;
            object objResult = null;
            int nFirstIndex = 0;

//这里是web.config连数据库的连接字符串
            string strConnection = WebConfigurationManager.ConnectionStrings["ConnStr"].ConnectionString;

            string strSQL1 = @"查询所有的sql数据的总数(count) {0}";

            string strSQL2 = @" 查询所有的sql数据  {0}{1}";

            if (strSort != "") strSort = "order by " + strSort;
            else strSort = "order by 时间排序 desc";
            strSQL1 = string.Format(strSQL1, strFilter);
            strSQL2 = string.Format(strSQL2, strFilter, strSort);
            try
            {
                conn = new SqlConnection(strConnection);
                conn.Open();
                comm = new SqlCommand(strSQL1, conn);
                objResult = comm.ExecuteScalar();
                nRecordSetCount = int.Parse(objResult.ToString());

                //修正总的页数
                nPageCount = nRecordSetCount / nPageSize;
                if (nPageCount * nPageSize < nRecordSetCount) nPageCount++;

                //修正开始页数
                if (nPageIndex > nPageCount) nPageIndex = nPageCount;
                else if (nPageIndex == 0) nPageIndex = 1;

                //修正开始记录数
                nFirstIndex = (nPageIndex - 1) * nPageSize;
                if (nFirstIndex < 0) nFirstIndex = 0;

                dt = new DataTable();
                da = new SqlDataAdapter(comm);
                da.SelectCommand.CommandText = strSQL2;
                da.Fill(dt);
                return dt;
            }
            catch (Exception oe)
            {
                strErrMsg = oe.Message;
                return null;
            }
            finally
            {
                if (dt != null) dt.Dispose();
                if (comm != null) comm.Dispose();
                if (da != null) da.Dispose();
                if (conn != null)
                {
                    if (conn.State == ConnectionState.Open) conn.Close();
                    conn.Dispose();
                }
                da = null;
                conn = null;
                dt = null;
                comm = null;
            }
        }

 5:运行的效果显示

 

 分页代码比较旧式,将就看吧。

 

  • 0
    点赞
  • 1
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值