用GridView 不用写代码,点点就OK

解决方案 »

  1.   

    存储过程
    CREATE PROCEDURE [dbo].[sp_CommonPage] 
    (@sql nvarchar(4000), @pagesize int, @page int)
    AS
    BEGINDECLARE @ResultSql nvarchar(4000); 
    DECLARE @OrderStr nvarchar(400); 
    DECLARE @SelectStr nvarchar(3000); 
    DECLARE @OtherStr nvarchar(1000); 
    DECLARE @ColumnsStr nvarchar(2000); 
    DECLARE @OrderIndex int; 
    DECLARE @FromIndex int; SET @OrderIndex = Charindex('Order',@sql,0); 
    SET @FromIndex= Charindex('From',@sql,0); 
    SET @SelectStr = Left(@sql,@FromIndex-1); 
    SET @ColumnsStr = Substring(@Sql,7,@FromIndex-7); 
    SET @OtherStr = Substring(@sql, @FromIndex,@OrderIndex-@FromIndex); 
    SET @ORderStr = Right(@sql,len(@sql)-@OrderIndex+1); SET @ResultSql = @SelectStr + ',row_number() Over('+@OrderStr+') As RowNumber '
    +@OtherStr; Set @ResultSql = 'Select '+@ColumnsStr+' from('+@ResultSql+') As Temp where Temp.RowNumber between '
    +Str(@pagesize*@page) + ' AND ' + Str(@pagesize*@page+@pagesize)EXEC(@ResultSql)END
    GO
    CREATE PROCEDURE [dbo].[sp_CountPage]
    @sql nvarchar(4000)
    AS
    BEGINDECLARE @ResultSql nvarchar(4000)
    DECLARE @ColumnsStr nvarchar(2000); 
    DECLARE @OtherStr nvarchar(1000); 
    DECLARE @OrderIndex int; 
    DECLARE @FromIndex int;SET @OrderIndex = Charindex('Order',@sql,0); 
    SET @FromIndex= Charindex('From',@sql,0); 
    SET @ColumnsStr = Substring(@Sql,7,@FromIndex-7); 
    SET @OtherStr = Substring(@sql, @FromIndex,@OrderIndex-@FromIndex); Set @ResultSql='Select '+@ColumnsStr+' '+@OtherStr
    EXEC(@ResultSql)
    END
      

  2.   

    数据层
     /// <summary>
            /// 得到总页数
            /// </summary>
            public IList<Model.UserInfo> CountPage(string strwhere)
            {
                string sql = "select * from UserInfo";
                if (strwhere.Length > 0)
                {
                    sql += " " + strwhere;
                }
                sql += " order by UserId";
                SqlParameter[] parameters = {
                        new SqlParameter("@sql",SqlDbType.NVarChar,4000)
                };
                parameters[0].Value = sql;
                DataSet ds = DBUtility.SqlHelper.RunProcedure(DBUtility.SqlHelper.Connection, "sp_CountPage", parameters, "ds");
                return GetList(ds);
            }        /// <summary>
            /// 分页获取泛型数据列表
            /// </summary>
            public IList<Model.UserInfo> GetList(int pageSize, int pageIndex, string strwhere, string order, string fag)
            {
                string sql = "select * from UserInfo";
                if (strwhere.Length > 0)
                {
                    sql += " " + strwhere;
                }
                sql += " order by " + order;
                sql += " " + fag;
                SqlParameter[] parameters = {
                        new SqlParameter("@sql",SqlDbType.NVarChar,4000),
                        new SqlParameter("@pagesize", SqlDbType.Int),
                        new SqlParameter("@page",SqlDbType.Int) 
                };
                parameters[0].Value = sql;
                parameters[1].Value = pageSize;
                parameters[2].Value = pageIndex;
                DataSet ds = DBUtility.SqlHelper.RunProcedure(DBUtility.SqlHelper.Connection, "sp_CommonPage", parameters, "ds");
                return GetList(ds);
            }
    业务层
      /// <summary>
            /// 得到总页数
            /// </summary>
            public int CountPage(int pageSize)
            {
                string strwhere = String.Empty;
                IList<Model.UserInfo> list = dal.CountPage(strwhere);
                if (list.Count % pageSize == 0)
                {
                    return (list.Count / pageSize);
                }
                else
                {
                    return ((list.Count / pageSize) + 1);
                }
            }        /// <summary>
            /// 分页获取泛型数据列表,不建议直接使用此方法,请根据业务逻辑重写
            /// </summary>
            public IList<Model.UserInfo> GetList(int pageSize, int pageIndex, string order, string fag)
            {
                string strwhere = String.Empty;
                return dal.GetList(pageSize, pageIndex, strwhere, order, fag);
            }
      

  3.   

    界面后台public partial class PersonManage_UserManage : System.Web.UI.Page
    {
        Model.UserInfo user = new Model.UserInfo();
        Model.DepartInfo depart = new Model.DepartInfo();
        Model.OperateLog operate = new Model.OperateLog();    BLL.UserInfo bll_user = new BLL.UserInfo();
        BLL.DepartInfo bll_depart = new BLL.DepartInfo();
        BLL.OperateLog bll_operate = new BLL.OperateLog();    const int pageSize =12;    protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                //首次加载,赋初值
                ViewState["Page"] = 0;
                
                DisplayUserInfo();        }
        }    protected void DisplayUserInfo()
        {
            List<Model.UserInfo> list = bll_user.GetList(pageSize, this.Pager, "UserId", "ASC") as List<Model.UserInfo>;
    ViewState["countPage"] = bll_user.CountPage(pageSize);
            this.lblCurrentPage.Text = "当前第 " + (Pager + 1) + " 页 ";
            this.lblCommon.Text = "共 " + (Convert.ToInt32(ViewState["countPage"])) + " 页";
            this.ddlJump.Items.Clear();
            for (int i = 0; i < Convert.ToInt32(ViewState["countPage"]);i++ )
            {
                this.ddlJump.Items.Add((i+1).ToString());
            }
            this.ddlJump.SelectedValue =(Pager+1).ToString();
            SetEnable(list);        this.gvUserInfo.DataSource = list;
            this.gvUserInfo.DataBind();
        }    /// <summary>
        /// 当前页数
        /// </summary>
        private int Pager
        {
            get
            {
                return (int)ViewState["Page"];
            }
            set
            {
                ViewState["Page"] = value;
            }
        }    /// <summary>
        /// 按钮状态设置
        /// </summary>
        private void SetEnable(IList<Model.UserInfo> list)
        {
            if (list.Count > 0)
            {
                btnPrev.Enabled = true;
                btnNext.Enabled = true;
                if (Pager == 0)
                    this.btnPrev.Enabled = false;
                if ((Pager + 1) == (Convert.ToInt32(ViewState["countPage"])))
                    this.btnNext.Enabled = false;
            }
            else
            {
                btnPrev.Enabled = false;
                btnNext.Enabled = false;
            }
        }    /// <summary>
        /// 首页
        /// </summary>
        protected void btnFrist_Click(object sender, EventArgs e)
        {
            Pager=0;
            DisplayUserInfo();
        }    /// <summary>
        /// 上一页
        /// </summary>
        protected void btnPrev_Click(object sender, EventArgs e)
        {
            Pager--;
            DisplayUserInfo();
        }    /// <summary>
        /// 下一页
        /// </summary>
        protected void btnNext_Click(object sender, EventArgs e)
        {
            Pager++;
            DisplayUserInfo();
        }    /// <summary>
        /// 未页
        /// </summary>
        protected void btnLast_Click(object sender, EventArgs e)
        {
            Pager=(Convert.ToInt32(ViewState["countPage"])-1);
            DisplayUserInfo();
        }    /// <summary>
        /// 跳转页
        /// </summary>
        protected void ddlJump_SelectedIndexChanged(object sender, EventArgs e)
        {
            Pager = Convert.ToInt32(this.ddlJump.SelectedValue.ToString())-1;
            DisplayUserInfo();
        }
    }界面
    <div id="pagger">
                            <br />
                            <asp:Label ID="lblCurrentPage" runat="server"></asp:Label>
                            <asp:Button ID="btnFrist" OnClick="btnFrist_Click" runat="server" Text="首 页" Width="57px"
                                Height="16px" ForeColor="white" Font-Size="10px" BorderWidth="1px" BorderStyle="Solid"
                                BorderColor="SeaGreen" BackColor="#6375DE"></asp:Button>
                            <asp:Button ID="btnPrev" OnClick="btnPrev_Click" runat="server" Text="上一页" Width="57px"
                                Height="16px" ForeColor="white" Font-Size="10px" BorderWidth="1px" BorderStyle="Solid"
                                BorderColor="SeaGreen" BackColor="#6375DE"></asp:Button>
                            <asp:Button ID="btnNext" OnClick="btnNext_Click" runat="server" Text="下一页" Width="57px"
                                Height="16px" ForeColor="white" Font-Size="10px" BorderWidth="1px" BorderStyle="Solid"
                                BorderColor="SeaGreen" BackColor="#6375DE"></asp:Button>
                            <asp:Button ID="btnLast" OnClick="btnLast_Click" runat="server" Text="未 页" Width="57px"
                                Height="16px" ForeColor="white" Font-Size="10px" BorderWidth="1px" BorderStyle="Solid"
                                BorderColor="SeaGreen" BackColor="#6375DE"></asp:Button>
                            跳转到<asp:DropDownList ID="ddlJump" runat="server" Width="60px" AutoPostBack="True"
                                OnSelectedIndexChanged="ddlJump_SelectedIndexChanged">
                            </asp:DropDownList>页
                            <asp:Label ID="lblCommon" runat="server" Text="Label"></asp:Label>
                        </div>