Đăng bởi : Nông Ngọc Hoài
6/03/2014
thuvienwinform - Có rất nhiều trường hợp ta cần hiển thị đối tượng lên bảng để hiển thị đẹp hơn cũng như dễ dàng trong việc nhập, xử lí dữ liệu. Tương tự cách làm với LINQ thì ra chỉ cần thêm đối tượng của minh vào Data Sources rồi kéo ra dataGridview là xong (đơn giản nhất) hoặc viết mã hiển thị đối tượng đó lên bảng cũng được (nhưng công việc thiết kế như đặt tên cột, thứ tự cột, ... sẽ khó khăn hơn). Mình sẽ giới thiệu cả 2 cách
Mẫu: https://www.dropbox.com/s/9tdv0s2f5bmnxsr/thuvienwinform-HienThiDoiTuongLenDgv.rar (55KB)
Cách 1: Thêm đối tượng và Data Sources rồi kéo thả ra bảng (đơn giản nhất)
- cách này nhanh, tùy biến, thêm, xóa thuộc tính của đối tượng và thiết kế dễ dàng (nên dùng cách này)
B1: Khai báo đối tượng:
- Đối tượng Class1 với các thuộc tính của nó
class Class1 { public string ThuocTinh1 { set; get; } public string ThuocTinh2 { set; get; } public string ThuocTinh3 { set; get; } public string ThuocTinh4 { set; get; } public string ThuocTinh5 { set; get; } public string ThuocTinh6 { set; get; } }
B2: Thêm nó vào Data Sources
B3: Đối tượng này ra form (phải ở chế độ thiết kế (Design))
Chọn DataGridView
Kéo ra
DataSource tự sinh
B4: thêm dữ liệu
- Chỉ cẩn thêm và data source là nó sẽ tự hiện lên bảng:
//Khai báo và truyền giá trị cho các thuộc tính của dối tượng Class1 doiTuong = new Class1(); doiTuong.ThuocTinh1 = "1"; doiTuong.ThuocTinh2 = "2"; doiTuong.ThuocTinh3 = "3"; doiTuong.ThuocTinh4 = "4"; doiTuong.ThuocTinh5 = "5"; doiTuong.ThuocTinh6 = "6"; class1BindingSource.Add(doiTuong);//Thêm đối tượng này vào bảng
Kết quả:
- Để tùy biến giao diện ấn vào mũi tên nhỏ -> Edit Columns
Cách 2: Viết mã để hiển thị:
- Cách này khi thêm một thuộc tính cho đối tượng sẽ khó khăn trong việc sửa mã.
B1: cũng khai báo đối tượng như ở Cách 1
B2: Kéo một dataGridView ra form
B3: Viết mã nạp đối tượng lên bảng
//Dùng code BindingSource dts = new BindingSource();//Khai báo BindingSource dts.DataSource = typeof(Class1);// => datasource này chỉ thêm được những đối tượng Class1. Nếu không thì nó sẽ nhận typeof(đối tượng đầu tiên thêm vào) dataGridView1.DataSource = dts; dts.Add(doiTuong);//Thêm 1 đối tượng lên bảng (sẽ tự tạo ra 1 hàng mới). Biến doiTuong giống như ở cách 1 dts.AddNew();//Thêm 1 hàng mới (các giá trị đều rỗng) //Đặt tên cho các cột dataGridView1.Columns["ThuocTinh1"].HeaderText = "cột 1"; dataGridView1.Columns["ThuocTinh2"].HeaderText = "cột 2"; for (int i = 3; i <= 6; i++) dataGridView1.Columns["ThuocTinh" + i].HeaderText = "cột " + i; //Sắp xếp vị trí cho cột dataGridView1.Columns["ThuocTinh2"].DisplayIndex = 0;
Kết quả:
Lấy, sửa dữ liệu đã được thêm vào:
//Lấy dữ liệu string dt1 = ((Class1)class1BindingSource.Current).ThuocTinh1; string dt2 = ((Class1)class1BindingSource.Current).ThuocTinh2; //Sửa ((Class1)class1BindingSource.Current).ThuocTinh2 = "sửa"; foreach (Class1 thuocTinh in class1BindingSource) thuocTinh.ThuocTinh1 = "OK";
Thêm vào data source mà không thấy đâu thì phải Debug (ấn F6) một cái mới được :D
ReplyDeletekhi nhap thong tin vao no k hien thi len bang. du cac cot da hien thi e phai lam ntn
DeleteKhả năng cao là thêm nhầm binding source
DeleteHiển Thị Một Đối Tượng Lên Datagridview >>>>> Download Now
Delete>>>>> Download Full
Hiển Thị Một Đối Tượng Lên Datagridview >>>>> Download LINK
>>>>> Download Now
Hiển Thị Một Đối Tượng Lên Datagridview >>>>> Download Full
>>>>> Download LINK rn
This comment has been removed by the author.
ReplyDeletechỗ bước 4 phần code mình gõ ở đâu vậy
ReplyDeletexin hỏi không thấy class để add thì làm sao nhỉ?
ReplyDeletemuốn nhập liên tục để tạo thành 1 danh sách thì làm tnao ạ, xin hướng dẫn, cách trên đây chỉ nhập đc 1 rows
ReplyDeletecho em hỏi dữ liệu kiểu ngày tháng năm thì thêm như nào ạ
ReplyDeleteHiển Thị Một Đối Tượng Lên Datagridview >>>>> Download Now
ReplyDelete>>>>> Download Full
Hiển Thị Một Đối Tượng Lên Datagridview >>>>> Download LINK
>>>>> Download Now
Hiển Thị Một Đối Tượng Lên Datagridview >>>>> Download Full
>>>>> Download LINK