我想在我的项目中添加简单的分页程序。到目前为止,我已经创建了一个存储过程:
CREATE PROCEDURE getStudent_Paging
(
@PageIndex INT,
@PageSize INT,
)
AS
BEGIN
SET NOCOUNT ON;
DECLARE @minIndex int,
@maxIndex int
SET @minIndex = (@PageIndex * @PageSize) + 1;
SET @maxIndex = (@PageIndex +1) * @PageSize;
SELECT ROW_NUMBER() OVER (ORDER BY ID ASC)AS RowNumber, * INTO #Results
FROM dbStudent;
SELECT @TotalRows = COUNT(*) FROM #Results;
SELECT * FROM #Results WHERE RowNumber BETWEEN' +
@minIndex + 'AND' + @maxIndex + ';
DROP TABLE #Results
END
我也展示了前5条记录。但是在导航按钮中应该做什么来导航到另一个页面。
我的控制器逻辑:
public ActionResult Index()
{
DatabaseConnString db = new DatabaseConnString();
SqlConnection conn = db.ConnectDB();
List<StudentClass> list = new List<StudentClass>();
SqlCommand myCommand = new SqlCommand("getStudent_Paging", conn);
myCommand.CommandType = CommandType.StoredProcedure;
myCommand.Parameters.AddWithValue("@PageIndex", pageIndex);
myCommand.Parameters.AddWithValue("@PageSize", pageSize);
SqlDataReader reader = myCommand.ExecuteReader();
while (reader.Read())
{
int ID = Int32.Parse(reader["ID"].ToString());
string Name = reader["Name"].ToString();
string Address = reader["Address"].ToString();
string PhoneNumber = reader["PhoneNumber"].ToString();
StudentClass model = new StudentClass
{
ID = ID,
Name = Name,
Address = Address,
PhoneNumber = PhoneNumber
};
list.Add(model);
}
return View(list);
}
答案 0 :(得分:0)
使用表格数据的占位符创建基页(例如Index.cshtml):
<div id="tableData"></div>
使用url / items为控制器创建控制器操作GetData(int skip,int take)。它应该像这样返回部分视图:
@foreach (var item in this.Model.rows)
{
<div>@item.property</div>
}
<div onclick="loadPage(@Model.pageIndex)">Next page</div>
在Index.cshtml加载调用loadPage(0)以将第一页加载到占位符#tableData之后。 点击“下一页”项以加载下一页。 'loadPage'javascript函数可能看起来像:
function loadPage(pageIndex) {
$("#tableData").load("/items?skip=" + (pageIndex * 10) + "&take=10");
}
如果您熟悉javascript,那么您当然不应该将“下一页”项添加到局部视图中,并且每次都通过http更新它,而只是在客户端进行修改。但我认为这是起点的足够信息。祝你好运!