簡體   English   中英

使用MVC 5 ADO.NET進行排序和分頁

[英]Sorting and Paging with MVC 5 ADO.NET


我有以下代碼:

  1. 模型

     public int ManufactureID { get; set; } public string Manufacture { get; set; } public string ManufactureDescription { get; set; } public bool IsActive { get; set; } 
  2. 控制者

     public ActionResult ManufactureIndex(string manufacture = "") { ManufactureRepository ManufactureRepo = new ManufactureRepository(); ModelState.Clear(); ViewBag.sManufacture = manufacture; return View(ManufactureRepo.ManufactureGetAll(manufacture)); } 
  3. 資料庫

     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; } 
  4. 存放程序

     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條記錄。

感謝您的所有答復。 我有自己的答案。 我在下面的教程中創建排序和分頁。

在ASP.NET MVC應用程序中使用實體框架進行排序,篩選和分頁

非常感謝。
謝謝。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM