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>

  • 相关阅读:
    算法
    autoreleasepool和weak
    记录一下锁如何使用
    RunLoop相关知识
    NSTimer内存泄漏的解决方案
    ARC下block循环引用的解决方式
    MGJRouter源码解析及使用方法
    Instruments 中Time Profile的使用
    NSFileManager的基本使用
    Runtime相关知识
  • 原文地址:https://www.cnblogs.com/net520/p/7860728.html
Copyright © 2011-2022 走看看