30/09/2018, 16:51
[C#]Sự khác nhau và công dụng của DataGridView và DataTable là gi?
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?
Bài liên quan





2 cái này khác nhau hoàn toàn mà e.
DataTablelà dùng để lưu trữ dữ liệu.DataGridviewlà control dùng để hiển thị dữ liệu lên trên giao diện mà e.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
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
datatablee còn có thể dùnglist…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.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:
giờ em muốn fill cột
Món Ăncho tràndatagridviewthì phải làm sao ạ???À cho e hỏi nếu e
addcột bằng cách vào phầndesigntrongdatagridviewvà bấmadd columnthì cáicolumnnày có cách nào chodatatablebiết là nó thuộcdatatablek ạ?E dùng :
this.DataGridView.Columns['MonAn'].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;a k hiểu ý e hỏi là gì .Có phải e muốn
Column Mon An trong DataGVhiển thị dataColumn Mon An của DataTablethì e set thuộc tínhDataPropertyNamecủa Column trên DataGV là ‘MonAn’Ý e là e tạo sẵn cột trong
DataGridViewnhư vậy:Giờ ở bên kia e muốn add dữ liệu từ
DataTablevà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à:
colMonAnvàcolSoLuong.Phần e làm bữa giờ là bên code e tạo ra bằng cách
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]E có thể tham khảo thêm từ đây :
Dạ e làm được rồi a. Cám ơn a nhiều nhiều