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.
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.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
datatable
e 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 Ăn
cho tràndatagridview
thì phải làm sao ạ???À cho e hỏi nếu e
add
cột bằng cách vào phầndesign
trongdatagridview
và bấmadd column
thì cáicolumn
này có cách nào chodatatable
biết là nó thuộcdatatable
k ạ?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 DataGV
hiển thị dataColumn Mon An của DataTable
thì e set thuộc tínhDataPropertyName
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à:
colMonAn
và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