zoukankan      html  css  js  c++  java
  • 分页的存储过程的用法

    数据库的存储

    alter PROCEDURE Proc_stu
    @PageIndex int, //页数
    @PageSize int,//显示条数
    @where nvarchar(50),//条件

    @Tocount int output, //返回值

    @totName nvarchar(50),//表名
    @order nvarchar(50)//排序
    AS
    BEGIN

    SET NOCOUNT ON;

    -- Insert statements for procedure here
    declare @sqlcount nvarchar(2000)='';
    set @sqlcount+='select @Tocount=count(1) from '+@totName+' '+@where+' ';
    exec sp_executesql @sqlcount,N'@Tocount int output',@Tocount output

    declare @sqltable nvarchar(1000)='';
    set @sqltable+='
    select top('+cast(@PageSize as nvarchar(50))+') * from(
    select row_number() over(order by '+@order+') as s,* from '+@totName+' where 1=1 '+@where+' ) a
    where s>'+cast((@PageIndex-1)* @PageSize as nvarchar(50))
    exec sp_executesql @sqltable
    END

    数据库的存储两个表

    ALTER PROCEDURE [dbo].[Pro_page]
    @pageindex INT=1,
    @pagesize INT=2,
    @Totcount INT OUTPUT,--总数
    @totName NVARCHAR(50),--表名
    @order NVARCHAR(50),--排序
    @where NVARCHAR(50) --查询
    AS
    BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;

    -- Insert statements for procedure here
    DECLARE @sqlcount NVARCHAR(2000)='';

    SET @sqlcount+='SELECT @Totcount= COUNT(1) FROM ' +@totName+' '+@where+'';

    EXEC sp_executesql @sqlcount,N'@Totcount INT OUTPUT',@Totcount OUTPUT

    DECLARE @sqldata NVARCHAR(2000)='';

    --两个表 直接写两表的查询名stu s INNER JOIN stutype p ON s.TypeID=p.TypeID
    SET @sqldata+='SELECT TOP('+CAST(@pagesize AS NVARCHAR(100))+') * FROM
    (SELECT ROW_NUMBER() OVER(ORDER BY '+@order+') AS rownum ,s.*,p.TypeName FROM

    '+@totName+' where 1=1 ' +@where+') a WHERE a.rownum>'+CAST((@pageindex-1)*@pagesize AS nvarchar(50))
    EXEC sp_executesql @sqldata
    END

    后台

    namespace Model
    {
    public class PageList<T>
    {
    public int Pageindex { get; set; }
    public int Pagesize { get; set; }
    public int Totcountss { get; set; }

    public List<T> page { get; set; }
    }
    }

    namespace DAL

    /// <summary>
    /// 万能
    /// </summary>
    /// <param name="Pageindex"></param>
    /// <param name="Pagesize"></param>
    /// <returns></returns>
    public PageList<stuModel> Getlist2(int pageindex, int pagesize, string totName,string order,string where,int type=0)
    {
    var Totcount = 0;
    //var pp = db.GetpageList(Pageindex, Pagesize,out Totcount);

    SqlCommand cmd = new SqlCommand("Pro_page", conn);
    cmd.CommandType = CommandType.StoredProcedure;

    cmd.Parameters.Add(new SqlParameter("@pageindex", SqlDbType.Int)).Value = pageindex;

    cmd.Parameters.Add(new SqlParameter("@pagesize", SqlDbType.Int)).Value = pagesize;
    cmd.Parameters.Add(new SqlParameter("@order", SqlDbType.NVarChar,100)).Value = order;
    cmd.Parameters.Add(new SqlParameter("@totName", SqlDbType.NVarChar,100)).Value = totName;
    var name = "";
    if (where != "")//判断
    {
    name += " and Name like '%" + where + "%' ";
    }
    if (type > 0)//判断
    name += " AND s.TypeID=" + type;

    cmd.Parameters.Add(new SqlParameter("@where", SqlDbType.NVarChar,100)).Value = name;

    cmd.Parameters.Add(new SqlParameter("@Totcount", SqlDbType.Int));
    //参数
    cmd.Parameters["@Totcount"].Direction = ParameterDirection.Output;

    SqlDataAdapter dr = new SqlDataAdapter(cmd);
    DataTable ds = new DataTable();
    dr.Fill(ds);
    Totcount = Convert.ToInt32(cmd.Parameters["@Totcount"].Value);//接收存储过程返回的总条数

    var reust = JsonConvert.SerializeObject(ds);
    var reust2 = JsonConvert.DeserializeObject<List<stuModel>>(reust);

    PageList<stuModel> ss = new PageList<stuModel>();
    ss.page = reust2;
    ss.Pageindex = pageindex;
    ss.Pagesize = pagesize;
    if (Totcount % pagesize == 0)
    {
    ss.Totcountss = Totcount / pagesize;
    }
    else
    {
    ss.Totcountss = Totcount / pagesize + 1;
    }
    return ss;
    }

    namespace BLL

    /// <summary>
    /// 分页
    /// </summary>
    /// <param name="pageindex"></param>
    /// <param name="pagesize"></param>
    /// <param name="totName"></param>
    /// <param name="order"></param>
    /// <param name="where"></param>
    /// <param name="type"></param>
    /// <returns></returns>
    public PageList<stuModel> Getlist2(int pageindex, int pagesize, string totName, string order, string where, int type = 0)
    {
    return dal.Getlist2(pageindex,pagesize,totName,order, where,type);
    }

    控制器

    public ActionResult Index()
    {

    return View();
    }
    /// <summary>
    /// 分页ajax
    /// </summary>
    /// <param name="Pageindex"></param>
    /// <returns></returns>
    [HttpPost]
    public ActionResult Index( int Pageindex)
    {

    //显示

    var resut = client.Getlist(Pageindex, 3);

    return Json(resut);
    }

    /// <summary>
    /// 万能
    /// </summary>
    /// <returns></returns>
    [HttpPost]
    public ActionResult wan(int pageindex, string totName= "stu s INNER JOIN stutype p ON s.TypeID=p.TypeID ", string order="ID", string where="", int type = 0)
    {

    var resut = client.Getlist2( pageindex,3,totName,order,where,type);


    return Json(resut);
    }

    前台

    @{
    Layout = null;
    }
    @*@model List<Model.stuModel>*@
    <!DOCTYPE html>

    <html>
    <head>
    <meta name="viewport" content="width=device-width" />
    <title>Index</title>
    <script src="~/Scripts/jquery-1.10.2.min.js"></script>
    </head>
    <body>


    <div>

     
    <a href="/show/wan" style="text-decoration:none">万能分页,显示</a>
    <input id="Button1" type="button" value="批量删除" onclick="pi()"/>
    <table>
    <tr>
    <td><input id="Checkbox1" type="checkbox" />全选</td>
    <td>名称</td>
    <td>密码</td>
    <td>性别</td>
    <td>类型</td>
    <td>爱好</td>
    <td>描述</td>
    <td>图片</td>
    <td>操作</td>
    </tr>
    <tbody id="idname">

    </tbody>
    </table>
    </div>
    <div id="pageHtml"></div>

    <script>
    show(1, "pageHtml");
    function show(Pageindex, pageHtml) {
    debugger;
    $.ajax({
    url: "/show/Index",
    type: "post",
    data: { Pageindex: Pageindex },
    dataType: "json",
    success: function (data) {
    alert(data);
    var str = "";
    for (var i = 0; i < data.page.length; i++) {
    str += "<tr>";
    str += "<td><input type="checkbox" value=""+data.page[i].ID+"" /></td>";
    str += "<td>" + data.page[i].Name + "</td>";
    str += "<td>" + data.page[i].Pwd + "</td>";
    str += "<td>" + (data.page[i].Sex==true?"男":"女") + "</td>";
    str += "<td>" + data.page[i].TypeName + "</td>";
    str += "<td>" + data.page[i].Aihao + "</td>";
    str += "<td>" + data.page[i].miaoshu + "</td>";
    str += "<td><img src=" + data.page[i].Tu + " alt='' style='30px;height:30px' /></td>";
    str += "<td><a href='/show/xiu/"+data.page[i].ID+"' style="text-decoration:none">修改</a></td>";
    str += "</tr>";
    }
    $("#idname").html(str);

    // 没有页码的分页
    //分页按钮
    var totalPage = data.Totcountss
    var page = "";
    // //计算上一页
    var lastPage = Pageindex < 2 ? 1 : Pageindex - 1;
    // //计算下一页
    var nextPage = Pageindex == totalPage ? totalPage : Pageindex + 1;

    page += " 当前页:<span style="color:red;font-size:18px;" >" + Pageindex + "/" + totalPage + "</span>总页数";
    page += " <span onclick="show(1)">首页</span>";
    page += " <span onclick="show(" + lastPage + ")">上一页</span>";
    page += " <span onclick="show(" + nextPage + ")">下一页</span>";
    page += " <span onclick="show(" + totalPage + ")">尾页</span>";

    $("#pageHtml").html(page);
    }

    })


    }
    //全选
    $("#Checkbox1").click(function () {
    $("input[type='checkbox']").prop("checked", this.checked);

    })
    //批量删除
    function pi() {
    var id="";
    $("input[type='checkbox']:checked").each(function () {
    id += $(this).val() + ",";
    })
    id = id.substring(0, id.length - 1);
    $.ajax({
    url: "/show/shan",
    type: "post",
    data: { id: id },
    dataType: "json",
    success: function (data) {
    if (data > 0) {
    alert("删除成功");
    location.href = '/show/Index';
    }
    else {
    alert("删除失败");
    }
    }


    })
    }
    </script>
    </body>
    </html>

  • 相关阅读:
    web服务器-Apache
    nginx优化
    nginx下载限速
    nginx-URL重写
    HDU 5358 First One 求和(序列求和,优化)
    HDU 5360 Hiking 登山 (优先队列,排序)
    HDU 5353 Average 糖果分配(模拟,图)
    UVALive 4128 Steam Roller 蒸汽式压路机(最短路,变形) WA中。。。。。
    HDU 5348 MZL's endless loop 给边定向(欧拉回路,最大流)
    HDU 5344 MZL's xor (水题)
  • 原文地址:https://www.cnblogs.com/net520/p/7860728.html
Copyright © 2011-2022 走看看