LINQ自定义真分页(尚未添加多字段动态查询与多字段排序)

 

前台:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="LinqCustomPager._Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <style type="text/css">
        tr td
        {
            font-size: small;
            font-family: @宋体;
            text-align: center;
            border-left: solid thin Black;
            border-right: solid thin Black;
            border-collapse: collapse;
        }
        .tr_title
        {
            font-weight: bold;
            border-left: solid thin Black;
            border-right: solid thin Black;
            border-top: solid thin Black;
            border-bottom: solid thin Black;
            border-collapse: collapse;
        }
        .tr_content
        {
            border-left: solid thin Black;
            border-right: solid thin Black;
            border-top: solid thin Black;
            border-bottom: solid thin Black;
            border-collapse: collapse;
        }
    </style>
</head>
<body>
    <form id="form1" runat="server">
    <center>
        <div align="center">
            LINQ自定义真分页测试<asp:ScriptManager ID="ScriptManagerRepeater" runat="server">
            </asp:ScriptManager>
            &nbsp;
            <table width="1000px" style="border-color: Black; border-style: solid; border-width: thin;
                border-collapse: collapse">
                <tr>
                    <td colspan="10">
                        查询条件
                    </td>
                </tr>
                <tr class="tr_title">
                    <td style="width: 100px">
                        姓名
                    </td>
                    <td style="width: 100px">
                        <asp:TextBox ID="txtQueryName" runat="server"></asp:TextBox>
                    </td>
                    <td style="width: 100px">
                        公司
                    </td>
                    <td style="width: 100px">
                        <asp:TextBox ID="txtQueryCompany" runat="server"></asp:TextBox>
                    </td>
                    <td style="width: 100px">
                        职位
                    </td>
                    <td style="width: 100px">
                        <asp:TextBox ID="txtQueryJob" runat="server"></asp:TextBox>
                    </td>
                    <td style="width: 100px">
                        邮编
                    </td>
                    <td style="width: 100px">
                        <asp:TextBox ID="txtQueryZipcode" runat="server"></asp:TextBox>
                    </td>
                    <td colspan="2" style="width: 200px">
                        <asp:Button ID="btnQuery" runat="server" Text="查询" Font-Size="Small" BorderStyle="Solid"
                            OnClick="btnQuery_Click" />
                    </td>
                </tr>
            </table>
            <br />
            <asp:UpdatePanel ID="upGuideTeacher" runat="server" UpdateMode="Always">
                <ContentTemplate>
                    <table width="1000px" style="border-color: Black; border-style: solid; border-width: thin;
                        border-collapse: collapse">
                        <tr class="tr_title">
                            <td style="width: 30px">
                                序号
                            </td>
                            <td style="width: 30px">
                                类型
                            </td>
                            <td style="width: 50px">
                                姓名
                            </td>
                            <td style="width: 120px">
                                公司
                            </td>
                            <td style="width: 200px">
                                职位
                            </td>
                            <td style="width: 180px">
                                地址
                            </td>
                            <td style="width: 60px">
                                邮编
                            </td>
                            <td style="width: 80px">
                                联系电话
                            </td>
                            <td style="width: 80px">
                                联系手机
                            </td>
                            <td style="width: 170px">
                                邮箱
                            </td>
                        </tr>
                        <asp:Repeater ID="rpGuideTeacher" runat="server">
                            <ItemTemplate>
                                <tr class="tr_content">
                                    <td>
                                        <%#Container.ItemIndex + 1 %>
                                    </td>
                                    <td>
                                        <%#Eval("GuideTeacherType")%>
                                    </td>
                                    <td>
                                        <%#Eval("GuideTeacherName")%>
                                    </td>
                                    <td>
                                        <%#Eval("GuideTeacherCompany")%>
                                    </td>
                                    <td>
                                        <%#Eval("GuideTeacherJob")%>
                                    </td>
                                    <td>
                                        <%#Eval("GuideTeacherAddress")%>
                                    </td>
                                    <td>
                                        <%#Eval("GuideTeacharZipCode")%>
                                    </td>
                                    <td>
                                        <%#Eval("GuideTeacherPhone")%>
                                    </td>
                                    <td>
                                        <%#Eval("GuideTeacherMobile")%>
                                    </td>
                                    <td>
                                        <%#Eval("GuideTeacherEmail")%>
                                    </td>
                                </tr>
                            </ItemTemplate>
                        </asp:Repeater>
                    </table>
                    <div style="font-size: small" align="center">
                        共<asp:Label ID="lblTotalPageCount" runat="server" ForeColor="Red"></asp:Label>页&nbsp;当前第<asp:Label
                            ID="lblCurrentPage" runat="server" ForeColor="Red"></asp:Label>页&nbsp;共<asp:Label
                                ID="lblTotalRecordCount" runat="server" ForeColor="Red"></asp:Label>条记录&nbsp;<asp:LinkButton
                                    ID="lkbtnFirst" runat="server" Text="首页" OnClick="lkbtnFirst_Click"></asp:LinkButton>&nbsp;<asp:LinkButton
                                        ID="lkbtnPrev" runat="server" Text="上一页" OnClick="lkbtnPrev_Click"></asp:LinkButton>&nbsp;
                        <asp:LinkButton ID="lkbtnNext" runat="server" Text="下一页" OnClick="lkbtnNext_Click"></asp:LinkButton>&nbsp;<asp:LinkButton
                            ID="lkbtnLast" runat="server" Text="尾页" OnClick="lkbtnLast_Click"></asp:LinkButton>&nbsp;每页显示<asp:DropDownList
                                ID="ddlPageSize" runat="server" OnSelectedIndexChanged="ddlPageSize_SelectedIndexChanged"
                                AutoPostBack="true">
                            </asp:DropDownList>
                        条&nbsp;转跳至第<asp:DropDownList ID="ddlGo" runat="server" OnSelectedIndexChanged="ddlGo_SelectedIndexChanged"
                            AutoPostBack="true">
                        </asp:DropDownList>
                        页</div>
                </ContentTemplate>
                <Triggers>
                    <asp:AsyncPostBackTrigger ControlID="lkbtnFirst" EventName="Click" />
                    <asp:AsyncPostBackTrigger ControlID="lkbtnPrev" EventName="Click" />
                    <asp:AsyncPostBackTrigger ControlID="lkbtnNext" EventName="Click" />
                    <asp:AsyncPostBackTrigger ControlID="lkbtnLast" EventName="Click" />
                    <asp:AsyncPostBackTrigger ControlID="ddlPageSize" EventName="SelectedIndexChanged" />
                    <asp:AsyncPostBackTrigger ControlID="ddlGo" EventName="SelectedIndexChanged" />
                </Triggers>
            </asp:UpdatePanel>
        </div>
    </center>
    </form>
</body>
</html>

 


 


后台:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace LinqCustomPager
{
    public partial class _Default : System.Web.UI.Page
    {
        private int pageIndex = 1;
        private int pageSize = 10;

        /// <summary>
        /// 选取需要显示的分页数
        /// </summary>
        /// <param name="pageIndex"></param>
        /// <param name="pageSize"></param>
        private int GuideTeacherDataBind(int pageIndex, int pageSize)
        {
            DavidContextDataContext davidcontext = new DavidContextDataContext();
            int totalCount = davidcontext.BIGuideTeacher.Count();
            int pageCount = totalCount % pageSize == 0 ? (totalCount / pageSize) : ((totalCount / pageSize) + 1);
            pageIndex = pageIndex <= pageCount ? pageIndex : 1;//防止在10条情况下选中11页在选50条情况
            var items = davidcontext.BIGuideTeacher.Skip((pageIndex - 1) * pageSize).Take(pageSize);
            lblTotalPageCount.Text = pageCount.ToString();
            lblCurrentPage.Text = pageIndex.ToString();
            lblTotalRecordCount.Text = totalCount.ToString();

            //绑定每页条数
            ddlPageSize.Items.Clear();
            ddlPageSize.SelectedValue = pageSize.ToString();
            for (int i = 10; i <= 50; i = i + 10)
            {
                ddlPageSize.Items.Add(new ListItem(i.ToString(), i.ToString()));
            }
            ddlPageSize.DataBind();

            //绑定对应页数
            ddlGo.Items.Clear();
            ddlGo.SelectedValue = pageIndex <= pageCount ? pageIndex.ToString() : "1";
            for (int i = 1; i <= pageCount; i++)
            {
                ddlGo.Items.Add(new ListItem(i.ToString(), i.ToString()));
            }
            ddlGo.DataBind();

            lkbtnFirst.Enabled = lkbtnPrev.Enabled = lkbtnNext.Enabled = lkbtnLast.Enabled = true;
            if (lblCurrentPage.Text == "1")
            {
                lkbtnFirst.Enabled = lkbtnPrev.Enabled = false;
            }
            else if (lblCurrentPage.Text == pageCount.ToString())
            {
                lkbtnNext.Enabled = lkbtnLast.Enabled = false;
            }
            rpGuideTeacher.DataSource = items;
            rpGuideTeacher.DataBind();
            return pageCount;
        }
  
  //首页
        protected void lkbtnFirst_Click(object sender, EventArgs e)
        {
            pageSize = int.Parse(ddlPageSize.SelectedValue);
            GuideTeacherDataBind(1, pageSize);
        }
  //上一页
        protected void lkbtnPrev_Click(object sender, EventArgs e)
        {
            pageSize = int.Parse(ddlPageSize.SelectedValue);
            int currentPageIndex = int.Parse(lblCurrentPage.Text) - 1;
            GuideTeacherDataBind(currentPageIndex, pageSize);
        }
  //下一页
        protected void lkbtnNext_Click(object sender, EventArgs e)
        {
            pageSize = int.Parse(ddlPageSize.SelectedValue);
            int currentPageIndex = int.Parse(lblCurrentPage.Text) + 1;
            GuideTeacherDataBind(currentPageIndex, pageSize);
        }
  //尾页
        protected void lkbtnLast_Click(object sender, EventArgs e)
        {
            pageSize = int.Parse(ddlPageSize.SelectedValue);
            int pageCount = GuideTeacherDataBind(1, pageSize);
            GuideTeacherDataBind(pageCount, pageSize);
        }
        //转跳至XX页
        protected void ddlGo_SelectedIndexChanged(object sender, EventArgs e)
        {
            pageIndex = int.Parse(ddlGo.SelectedValue);
            pageSize = int.Parse(ddlPageSize.SelectedValue);
            GuideTeacherDataBind(pageIndex, pageSize);
        }
  //每页显示XX条
        protected void ddlPageSize_SelectedIndexChanged(object sender, EventArgs e)
        {
            pageIndex = int.Parse(ddlGo.SelectedValue);
            pageSize = int.Parse(ddlPageSize.SelectedValue);
            GuideTeacherDataBind(pageIndex, pageSize);
        }
    }
}

小弟初稿~LINQ自定义真分页~求改进求指导~准备改到用户控件中做成一个分页控件~有高手能给下思路否~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值