简单寻呼逻辑的解决方案。 ASP.NET MVC3

时间:2013-12-12 06:58:20

标签: jquery ajax asp.net-mvc-3 stored-procedures custompaging

我想在我的项目中添加简单的分页程序。到目前为止,我已经创建了一个存储过程:

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);
}

1 个答案:

答案 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更新它,而只是在客户端进行修改。但我认为这是起点的足够信息。祝你好运!