[英]Sorting and Paging with MVC 5 ADO.NET
我有以下代碼:
模型
public int ManufactureID { get; set; } public string Manufacture { get; set; } public string ManufactureDescription { get; set; } public bool IsActive { get; set; }
控制者
public ActionResult ManufactureIndex(string manufacture = "") { ManufactureRepository ManufactureRepo = new ManufactureRepository(); ModelState.Clear(); ViewBag.sManufacture = manufacture; return View(ManufactureRepo.ManufactureGetAll(manufacture)); }
資料庫
private SqlConnection con; //To Handle connection related activities private void Connection() { con = new SqlConnection(ConfigurationManager.ConnectionStrings["ITPCNMSCon"].ToString()); } //To view employee details with generic list public List<Manufactures> ManufactureGetAll(string manufacture = "") { Connection(); List<Manufactures> EmpList = new List<Manufactures>(); SqlCommand com = new SqlCommand("_spManufactureGet", con) { CommandType = CommandType.StoredProcedure }; if (string.IsNullOrEmpty(manufacture)) { com.Parameters.AddWithValue("@Manufacture", DBNull.Value); } else { com.Parameters.AddWithValue("@Manufacture", manufacture); } SqlDataAdapter da = new SqlDataAdapter(com); DataTable dt = new DataTable(); con.Open(); da.Fill(dt); con.Close(); //Bind EmpModel generic list using LINQ EmpList = (from DataRow dr in dt.Rows select new Manufactures() { ManufactureID = Convert.ToInt32(dr["ManufactureId"]), Manufacture = Convert.ToString(dr["Manufacture"]), ManufactureDescription = Convert.ToString(dr["ManufactureDescription"]), IsActive = Convert.ToBoolean(dr["IsActive"]) }).ToList(); return EmpList; }
存放程序
SELECT * FROM _Manufacture WHERE Manufacture = ISNULL(@Manufacture,Manufacture) ORDER BY Manufacture
我的問題是,我想使用sql連接在視圖上提供排序和分頁。 我怎樣才能做到這一點? 請指教。
謝謝。
int pageSize = 10;
int skip = 0;
int recordsTotal = 0;
其中pagesize是要在網格中顯示的記錄數,其中skip是選擇記錄的起點, recordsTotal在網格中的記錄總數。
recordsTotal = EmpList.Count();
EmpList= EmpList.Skip(skip).Take(pageSize).ToList();
您需要傳遞頁碼以及每個請求要獲取的記錄數和數量。
@PageNumber int
@Records int
Declare @StartingPoint int, @EndingPoint int
Set @StartingPoint = ((@PageNumber -1 ) * @Records)+1
Set @EndingPoint = @PageNumber * @Records
Select * from (
Select Dense_Rank() over(order by <PK>) Order,* from <Table>
)TempRecord where [Order]>= @StartingPoint and [Order]<=@EndingPoint
所以現在當您調用此存儲過程時,請傳遞PageNumber和Records參數值
當您為PageNumber傳遞1並為記錄傳遞10時,StartingPoint將為1,EndingPoint將為10,因此您將獲得10條記錄。對於第2頁,StartingPoint將為11,EndingPoint將為20,因此您將獲得10條記錄。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.