Datagridview là gì, trình bày dữ liệu với datagridview và combobox
Tại sao nên phân trang?
Với những ứng dụng trên web vấn đề phân trang vô cùng quan trọng đặc biệt nhằm tăng hiệu năng khi load trang. Trên WinForm, thường xuyên các ứng dụng chạy xe trên local hoặc vào mạng toàn thể bắt buộc thỉnh thoảng ta không quyên tâm đến việc phân trang. Nhưng với rất nhiều bảng dữ liệu hàng vạn phiên bản ghi, sẽ không còn tác dụng vào Việc hiển thị, việc nạp dữ liệu hàng chục ngàn phiên bản ghi lên lưới (Grid) vẫn làm cho hiệu năng của áp dụng sút cùng tiêu hao bộ nhớ.Phân trang thực hiện chia tài liệu thành các phần nhỏ tuổi trên từng trang với con số phiên bản ghi khẳng định. Khi đề nghị vẫn hấp thụ số lượng bạn dạng ghi của từng trang tương xứng. Số trang được xem toán thù trên tổng số lượng phiên bản ghi.Trung tâm dữ liệu
Tạo cửa hàng dữ liệu QLBanHang trong Squốc lộ Server, trong số ấy gồm bảng:tblMatHang(MaSP nchar(5), TenSP.. nvarchar(30), NgaySX Date, NgayHH Date, DonVi nvarchar(10), DonGia Float , GhiChu nvarchar(200))
Bạn đang xem: Datagridview là gì, trình bày dữ liệu với datagridview và combobox
Cách thức thực hiện
Đếm số lượng phiên bản ghi RecordCount vào bảng tài liệu, sử dụng câu lệnh SELECT COUNT(*)Giả sử số lượng bạn dạng ghi hiển thị trên trang là PageSize, mang sử PageSize = 5Giả sử trang hiện tại đang hiển thị là PageIndex, ban sơ PageIndex = 1.Lấy các bản ghi nằm trong vòng (PageIndex-1)*PageSize+1 tới PageIndex*PageSize. Từ phiên phiên bản SQL Server 2005 cung ứng hàm ROW_NUMBER() nhằm chất nhận được chúng ta cung cấp số mẫu tới các bản ghi được lựa chọn trường đoản cú bảng dữ liệu. Để tối ưu chúng ta cũng có thể sinh sản Stored Procedure trong Squốc lộ Server với việc tàng trữ PageIndex, PageSize như những đổi thay đầu vào cùng RecordCount là trở nên đầu ra output.Tạo Stored ProcedureMlàm việc Server Explorer> Chọn Database của người tiêu dùng > Kích chuột vào Stored Procedure > Add New Stored ProcedureCopy câu lệnh Squốc lộ sống bên dưới rồi lưu giữ lại
Tạo Stored Procedure trong Visual Studio
RecordCount INT OUTPUTASBEGIN SET NOCOUNT ON; -- Lấy lữ liệu tự bảng tài liệu MatHang với giữ vào bảng lâm thời tblTemp cùng rất số loại SELECT ROW_NUMBER() OVER ( ORDER BY MaSPhường. ASC )AS Hang , * INTO #tblTemp FROM tblMatHang --Đếm con số bản ghi SELECT
PageSize) - 1 --Xóa bảng trợ thì tblTemp DROPhường TABLE #tblTempEND
Thiết kế giao diện
Thêm size vào Project, rồi kéo các control bên trên thanh hao Toolbox vào FormControl Panel: Name = pnlDieuHuong, Dock = BottomControl DataGridView: Name = dgvKetQua, Dock = Fill
Giao diện phân trang với DataGridView
Code cmùi hương trình
1. Imports các Namespacesusing System;using System.Data;using System.Linq;using System.Windows.Forms;using System.Data.SqlClient;using System.Collections.Generic;2. Phân trang mang đến DataGridViewTrong sự khiếu nại Form Load, thủ tục LoadData hotline triển khai Stored Procedure được viết sinh sống trên cùng đem những phiên bản ghi trường đoản cú bảng tblMatHang thực hiện đối tượng DataReader (SqlDataReader).Đối tượng SqlDataReader đượng hấp thụ vào DataTable với ở đầu cuối gắn thêm tài liệu vào DataTable vào DataGridView.Khởi tạo thành quý hiếm PageSize = 5 cùng PageIndex = 1. Và đem cực hiếm áp ra output RecordCount cùng PageIndex đặt vào cách thức HienThiThanhDieuHuong được viết sinh sống bên dưới. //Thiết lập số phiên bản ghi bên trên 1 trang. int PageSize = 5; public frmPhanTrang() InitializeComponent(); private void frmPhanTrang_Load(object sender, EventArgs e) //Ban đầu nạp trang đầu tiên this.LoadData(1); private void LoadData(int pageIndex) //Chuỗi liên kết string constring =
"QLBanHang.mdf;Integrated Security=True;User Instance=True"; using (SqlConnection nhỏ = new SqlConnection(constring)) //gọi câu lệnh Squốc lộ lưu trữ trong Stored Procedure mang tên GetMatHangPaging using (SqlCommand cmd = new SqlCommand("GetMatHangPaging", con)) //Truyền vào những tđắm say số PageIndex, PageSize cho Stored Procedure cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.AddWithValue("
PageIndex", pageIndex); cmd.Parameters.AddWithValue("
Xem thêm: " Wield Là Gì ? Nghĩa Của Từ Wielding Trong Tiếng Việt Wield In Vietnamese
PageSize", PageSize); //Lấy ra tđê mê số RecordCount của Store Procedured cmd.Parameters.Add("
RecordCount", SqlDbType.Int, 4); cmd.Parameters<"
RecordCount">.Direction = ParameterDirection.Output; bé.Open(); //Thực thi câu lệnh truy vấn cùng gán đến đối tượng người tiêu dùng DataTable DataTable dt = new DataTable(); dt.Load(cmd.ExecuteReader()); dgvKetQua.DataSource = dt; nhỏ.Close(); int recordCount = Convert.ToInt32(cmd.Parameters<"
RecordCount">.Value); this.HienThiThanhDieuHuong(recordCount, pageIndex); 3. Hiển thị tkhô giòn điều phối những trangPhương thơm thức HienThiThanhDieuHuong hiển thị những bản ghi và trang PageIndex hiện giờ. Các tính toán được triển khai để tại vị trang đầu tiên, trang cuối với list các trang được tạo nên. Sử dụng một class Page nhằm tàng trữ list những button.Cuối thuộc sử dụng vòng lặp nhằm hiển thị các trang với các button phân trang được thêm vào control pnlDieuHuong.Mỗi Button cồn vẫn khởi gán sự kiện click. Khi Button được kích, giá trị của Name được đặt nhỏng một tsi số PageIndex tới hàm LoadData và đang đính thêm lại dữ liệu lên dgvKetQua.private void HienThiThanhDieuHuong(int recordCount, int currentPage) //Sử dụng đối tượng người sử dụng List nhằm cất danh sách những trang List pages = new List(); int startIndex, endIndex; int pagerSpan = 5; //Tính toán thù nhằm hiển thị những trang. double dblPageCount = (double)((decimal)recordCount / Convert.ToDecimal(PageSize)); int pageCount = (int)Math.Ceiling(dblPageCount); startIndex = currentPage > 1 && currentPage + pagerSpan - 1 pagerSpan ? pagerSpan : pageCount; if (currentPage > pagerSpan % 2) if (currentPage == 2) endIndex = 5; else endIndex = currentPage + 2; else endIndex = (pagerSpan - currentPage) + 1; if (endIndex - (pagerSpan - 1) > startIndex) startIndex = endIndex - (pagerSpan - 1); if (endIndex > pageCount) endIndex = pageCount; startIndex = ((endIndex - pagerSpan) + 1) > 0 ? (endIndex - pagerSpan) + 1 : 1; //Add nút top 10. if (currentPage > 1) pages.Add(new Page Text = "Trang đầu", Value = "1" ); //Add nút ít >. if (currentPage >", Value = (currentPage + 1).ToString() ); } //Add nút ít Trang cuối. if (currentPage != pageCount) pages.Add(new Page Text = "Trang cuối", Value = pageCount.ToString() ); //Xóa những nút ít trên trang. pnlDieuHuong.Controls.Clear(); //Lặp và add những Buttons đến trang. int count = 0; foreach (Page page in pages) Button btnPage = new Button(); btnPage.Location = new System.Drawing.Point(100 * count, 20); btnPage.Size = new System.Drawing.Size(100, 50); btnPage.Name = page.Value; btnPage.Text = page.Text; btnPage.Enabled = !page.Selected; btnPage.Cliông chồng += new System.EventHandler(this.Page_Click); pnlDieuHuong.Controls.Add(btnPage); count++; } //Viết sự kiện lúc kích trên nút ít phân trang private void Page_Click(object sender, EventArgs e) Button btnPager = (sender as Button); this.LoadData(int.Parse(btnPager.Name)); //Tạo class Page để lưu trữ các nằm trong tính của Page public class Page public string Text get; set; public string Value get; set; public bool Selected get; set;
Các thẻ: Lập trình cơ sở tài liệu cùng với C#phân trang cùng với DataGridView
2 phản hồi

Đoạn List pages = new List(); em cần sử dụng Visual Studio 2010 bị lỗi ạ. Nên sửa thành List pages = new List();
Trả lời Hủy
Email của bạn sẽ không được hiển thị công khai. Các ngôi trường yêu cầu được khắc ghi *
Bình luận
Please enable JavaScript to submit this form.
Tên *
E-Mail *
Lưu thương hiệu của mình, tin nhắn, và trang web trong trình phê chuẩn này đến lần phản hồi kế tiếp của mình.
Chuyên mục: