我不擅長sql,但我必須在我的存儲過程中有很多記錄的jqGrid進行分頁。我的asp.net MVC3控制器代碼如下,如何在存儲過程中爲jqGrid尋呼?
[HttpPost]
public JsonResult GetExtraPersons(int cId, long pId, JQGridSettings gridSettings)
{
List<ExtraPerson> extraPersons = new List<ExtraPerson>();
ExtraPersonViewModel extraPersonViewModel = new ExtraPersonViewModel();
extraPersonViewModel.CampId = cId;
extraPersonViewModel.ReferencePatientId = pId;
extraPersons = ExtraPersonService.GetExtraPersons(extraPersonViewModel.CampId, extraPersonViewModel.ReferencePatientId);
int pageIndex = gridSettings.pageIndex;
int pageSize = gridSettings.pageSize;
int totalRecords = extraPersons.Count;
int totalPages = (int)Math.Ceiling((float)totalRecords/(float)pageSize);
int startRow = (pageIndex - 1) * pageSize;
int endRow = startRow + pageSize;
var jsonData = new
{
total = totalPages,
page = pageIndex,
records = totalRecords,
rows =
(
extraPersons.Select(e => new
{
Id = e.ExtraPersonId,
FirstName = e.FirstName,
LastName = e.LastName,
MobilePhone = e.MobileNumber,
Email = e.EmailId,
PersonalNumber = e.PersonNumber,
Diabetes = e.Diabetes,
BloodPressure = e.BloodPressure,
})
).ToArray()
};
return Json(jsonData);
}
以及如下SQL Server 2008中我的存儲過程,
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[GetExtraPerson]
(
@CampId INT,
@ReferencePatientId BIGINT
)
AS
BEGIN
SET NOCOUNT ON
SELECT
PERS.PersonId,
PERS.FirstName,
PERS.LastName,
PERS.MobileNumber,
PERS.EmailId,
PERS.PersonNumber,
E.ExtraPersonId,
E.Diabetes,
E.BloodPressure
FROM
ExtraPerson E
INNER JOIN Person PERS
ON PERS.PersonId=E.PersonId
WHERE [email protected] AND [email protected] AND E.IsDeleted = 0
END
現在的jqGrid是除了分頁正常工作。例如:如果它有15條記錄,第一頁顯示10條記錄,剩餘的位於第二頁,但我不能去它。 任何人都可以建議我,如何爲jqgrid進行分頁?
感謝您的簡要回答。我總是懷疑你的簡短答案。 – prakash2089
@Prakash:不客氣!我希望我的回答能幫助你實現你的要求。 – Oleg
我在控制器中進行了以下更改extraPersonViewModel.PageSize = gridSettings.pageSize; extraPersons = ExtraPersonService.GetExtraPersons(extraPersonViewModel.CampId,extraPersonViewModel.ReferencePatientId,extraPersonViewModel.PageSize); – prakash2089