Kiến thức

[C#]Sự khác nhau và công dụng của DataGridView và DataTable là gi?-programming-Dạy Nhau Học

Bạn đang xem: [C#]Sự khác nhau và công dụng của DataGridView và DataTable là gi?-programming-Dạy Nhau Học

[C#]Sự khác nhau và công dụng của DataGridView và DataTable là gi?

c-sharp

Em mới học về C#, khi làm bài tập e có thắm mắc là tại sao có những bài không lưu trực tiếp lên DataGridView luôn mà phải lưu trên DataTable rồi sau đó mới liên kết lại với nhau?
Và điểm khác nhau giữa 2 cái? Có cần thiết phải dùng DataTable lưu dữ liệu sau đó liên kết với DataGridView để xuất dữ liệu không ạ?

@tuancoi2506

a giúp e phần này đc k? :smiley:

1 Like

2 cái này khác nhau hoàn toàn mà e.
DataTable là dùng để lưu trữ dữ liệu.
DataGridview là control dùng để hiển thị dữ liệu lên trên giao diện mà e.

3 Likes

Mình lâu rồi không làm .net nên không nhớ lắm. Cơ mà ăn ốc đoán mò theo ngữ nghĩa của 2 từ thì đúng như bạn thấy. DataTable đại diện cho đối tượng cung cấp data còn dataGridView là đối tượng để hiển thị danh sách dữ liệu dưới dạng grid. Theo logic thông thường thì rõ ràng 2 thằng này cần đi với nhau như 1 cặp.
Nếu có kiểu thiết thế nào mà đối tượng vừa là view lại vừa là đối tượng cung cấp data thì có thể gọi nó là hổ lốn

1 Like

Dạ. Tại lúc mới đầu e dùng dgv để add thêm cột cái kiểu và k cần sử dụng dt, nhưng sau thì đc yêu cầu là dùng dt để lưu dữ liệu nên e thắc mắc đó a.

V có nghĩa là dt giống như là dữ liệu của dgv hả a?
Chẳng hạn như e dùng hẳn dgv.Rows.Add cũng đc mà a?
Nhưng nếu k dùng dt lưu trữ thì sẽ k thực hiện các thao tác phức tạp hơn trên bảng phải không a?

Bởi vì sau này e còn có thể xử lý trên dữ liệu nữa, nên e cần 1 nơi để lưu trữ và xử lý trước khi hiển thị.
Ngoài datatable e còn có thể dùng list

2 Likes

Mình nghi là lúc đầu bạn dùng sqldatasource để gán dữ liệu trực tiếp lên gridview nên nghĩ là không cần đối tượng lưu trữ dữ liệu, thực ra thì sqldatasource nó làm chuyện đó sẵn giùm thôi, cơ chế thì y như mọi người nói ở trên, người thiết kế kiến trúc ban đầu có dụng ý cả khi tách ra riêng 2 đối tượng này ra.

Cái này là add từng row, datatable là tập hợp các row với nhiều column tương ứng với các column mà bạn select từ database ra.
Lời khuyên là sau này khi làm rành rồi thì nên chuyển qua dùng List<object> thao tác rất rõ ràng và dễ dàng mà không phải ngồi nhớ tên từng column để gọi ra. Dùng với foreach rất tốt.

1 Like

Anh cho e hỏi là giờ e muôn fill cột cho tràn luôn thì phải làm sao ạ?
Chẳng hạn e tạo 2 cột:

 dtOrder.Columns.Add("Món Ăn"); dtOrder.Columns.Add("Số Lượng",typeof(int)); 

giờ em muốn fill cột Món Ăn cho tràn datagridview thì phải làm sao ạ???

À cho e hỏi nếu e add cột bằng cách vào phần design trong datagridview và bấm add column thì cái column này có cách nào cho datatable biết là nó thuộc datatable k ạ?

E dùng : this.DataGridView.Columns['MonAn'].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;

a k hiểu ý e hỏi là gì :smile: .Có phải e muốn Column Mon An trong DataGV hiển thị data Column Mon An của DataTable thì e set thuộc tính DataPropertyName của Column trên DataGV là ‘MonAn’

Ý e là e tạo sẵn cột trong DataGridView như vậy:

Giờ ở bên kia e muốn add dữ liệu từ DataTable vào cột mà e tạo sẵn luôn đó. Mà không biết làm sao???
Giả sư 2 cột đó e đặt Name là: colMonAncolSoLuong.

Phần e làm bữa giờ là bên code e tạo ra bằng cách

dtOrder.Columns.Add("Món Ăn"); dtOrder.Columns.Add("Số Lượng",typeof(int)); 

Thì khi nhập e muốn thêm dữ liệu thì e sẽ gọi r["Món Ăn"], r[Số Lượng]

2 Likes

DataGridView.DataSource=dtOrder DataGridView.AutoGenerateColumns=false; 

E có thể tham khảo thêm từ đây :

1 Like

Dạ e làm được rồi a. Cám ơn a nhiều nhiều :smiley:

Chuyên mục: Kiến thức

Related Articles

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Check Also
Close
Back to top button
444 live app 444 live 444 live app 444live kisslive kiss live yy live yylive