数据库的存储

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='width: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>

 

posted on 2017-11-19 19:00  过客s  阅读(157)  评论(0编辑  收藏  举报