• Vui lòng đọc nội qui diễn đàn để tránh bị xóa bài viết
  • Tìm kiếm trước khi đặt câu hỏi

DataGridViewComboxBoxColumn trong DataGridView

Các bài viết hướng dẫn về Visual Basic .NET và C#

Điều hành viên: tungcan5diop, QUANITGROBEST

ShareToShare
Mạnh Thường Quân
Mạnh Thường Quân
Bài viết: 167
Ngày tham gia: T.Năm 27/11/2008 4:04 pm
Has thanked: 1 time

DataGridViewComboxBoxColumn trong DataGridView

Gửi bàigửi bởi ShareToShare » T.Sáu 27/02/2009 3:15 pm

Bài viết này bác @anhtuyenbk đã có viết rồi , nhưng mình có cách làm khác muốn chia sẽ với mọi người . Mục đích cũng giống với bài của bác Tuyên thôi .
Giả sữ cơ sỡ dữ liệu mình có 2 table đơn giản như sau :
tbl1: tblDonViTinh(madvt,ten) // trong đó madvt là khóa chính .
tbl2: tblHangHoa(mahh,ten,madvt) // trong đó mahh là khóa chính , madvt là khóa ngoại .
// Giờ là tới C# :
1. Add 1 Form vào 1 project bất kỳ gọi là frmHangHoa . Trong frmHangHoa có 1 datagirdView1 .
2.R-Click lên datagridView1 > chọn Add Column (hình 1)
// Lưu ý là : datagridView1 dùng để thể hiện dữ liệu của tblHangHoa
Mọi người Add DataGridViewTextBoxColumn cho field mahh và ten tương ứng trong tblHangHoa .Nhưng Add DataGridViewComboxBoxColumn cho field madvt trong tblHangHoa.
Nếu muốn trường trên datagridview1 trùng với trường trong tblHangHoa thì phải đặt tên cho DataPropertyName của từng cột trên ( hình 2 ).Bằng cách R-click lên datagridview1 > chọn Edit Column . // Lưu ý : DataPropertyName phải trùng với tên trong tblHangHoa.
Thêm đoạn code sau :

Mã: Chọn hết

  1.  
  2. private void frmHangHoa_Load(object sender, EventArgs e)
  3.         {
  4. // Lưu ý : đỗ dữ liệu vào datagridviewComboBoxColumn trước rồi sau đó mới đỗ dữ liệu vào datagridview1 sau. Nếu ko sẽ báo lỗi .
  5. // dữ liệu đc điền vào datagridviewComboBoxColumn
  6. SqlDataAdapter sdad = new SqlDataAdapter("select * from tblDonViTinh", Connection.sqlConnection);
  7.             DataTable dt = new DataTable();
  8.             sdad.Fill(dt);
  9.             madvt.DataSource = dt;
  10.             madvt.ValueMember = "madvt";
  11.             madvt.DisplayMember = "madvt";
  12.  
  13. // dữ liệu điền vào datagridview1
  14. sdad = new SqlDataAdapter("select * from tblHangHoa", Connection.sqlConnection);
  15.              dt = new DataTable();
  16.             sdad.Fill(dt);
  17. datagridview1.Datasource=dt;
  18. }
  19.  

mới viết bài đầu nên có hơi lúng túng
chúc thành công!
Tập tin đính kèm
Add columns.GIF
hình1: Add Column
Edit Columns.GIF
hình 2



hoangxuandang
Bài viết: 1
Ngày tham gia: T.Năm 14/01/2010 10:44 am

Re: DataGridViewComboxBoxColumn trong DataGridView

Gửi bàigửi bởi hoangxuandang » T.Năm 14/01/2010 11:23 am

chào bạn
minh đã làm như vậy nhưng nó báo lỗi như sau :
Tập tin đính kèm
untitled.GIF
loi

ShareToShare
Mạnh Thường Quân
Mạnh Thường Quân
Bài viết: 167
Ngày tham gia: T.Năm 27/11/2008 4:04 pm
Has thanked: 1 time

Re: DataGridViewComboxBoxColumn trong DataGridView

Gửi bàigửi bởi ShareToShare » T.Ba 19/01/2010 3:29 pm

bạn thử đưa code chổ đó lên tôi kiểm tra thử xem

Hình đại diện của người dùng
haitu
Guru
Guru
Bài viết: 206
Ngày tham gia: T.Bảy 10/09/2005 2:50 pm
Has thanked: 1 time
Been thanked: 19 time
Liên hệ:

Re: DataGridViewComboxBoxColumn trong DataGridView

Gửi bàigửi bởi haitu » T.Năm 28/01/2010 11:15 pm

thật ra với cách làm trên thì bạn có thể tạo động cho nó sẽ linh động hơn trong lúc design cố định, bạn có thể sử dụng như sau: code này viết trên VB.NET

  1.         Dim cbo As New DataGridViewComboBoxColumn
  2.         Dim dtTable As New DataTable
  3.  
  4.         cbo.AutoComplete = True
  5.         cbo.Name = "CBO_QUANHE"   'Đặt tên cho combobox mới tạo
  6.         cbo.ValueMember = "MA"      [b] 'Chứa giá trị ẩn (thường là giá trị khóa)
  7.         cbo.DisplayMember = "TEN_QUANHE"   'Tên cần hiển thị
  8.         cbo.DataPropertyName = "MA_QUANHE"   'map vào field dữ liệu có tên MA_QUANHE được lấy và đổ vào datagridview
  9.         dtTable = Nguồn dữ liệu bạn cần lấy
  10.         cbo.DataSource = dtTable
  11.  
  12.         Try
  13.             grdTest.Columns.Remove("CBO_QUANHE")   'Nếu đã có cột này thì xóa đi
  14.         Catch ex As Exception
  15.         End Try
  16.  
  17.         grdTest.Columns.Insert(0, cbo)     'chèn vào vị trí đầu tiên trên lưới
  18.  


code này viết trên VB.NET còn C# thì bạn chỉ convert lại vài chỗ là được

thuyan1990
Thành viên trung thành
Thành viên trung thành
Bài viết: 299
Ngày tham gia: T.Bảy 02/01/2010 10:23 am
Has thanked: 20 time
Been thanked: 2 time

Re: DataGridViewComboxBoxColumn trong DataGridView

Gửi bàigửi bởi thuyan1990 » T.Tư 17/03/2010 3:51 pm

Vậy làm thế nào để bắt sự kiện với nó vậy bạn??

Hình đại diện của người dùng
tungcan5diop
Cựu chiến binh
Cựu chiến binh
Bài viết: 1123
Ngày tham gia: T.Tư 24/09/2008 4:04 pm
Đến từ: TPHCM
Has thanked: 1 time
Been thanked: 28 time

Re: DataGridViewComboxBoxColumn trong DataGridView

Gửi bàigửi bởi tungcan5diop » T.Tư 17/03/2010 4:04 pm

thuyan1990 đã viết:Vậy làm thế nào để bắt sự kiện với nó vậy bạn??

nó đâu phải là sự kiện!!! bạn có thể viết 1 cái hàm và quăng code trên vào,và trong Form_Load gọi hàm đó ra,nó sẽ tự tạo một combobox trên lưới = code mà ko cần phải design bằng tay,mục đích của tác giả là như vậy.
Hỡi thế gian bug(lỗi) là gì?
Mà sửa...hoài không hết!

Hình đại diện của người dùng
xuanquy_th
Guru
Guru
Bài viết: 793
Ngày tham gia: T.Ba 05/08/2008 9:15 pm
Đến từ: Thanh Hoá
Has thanked: 1 time
Been thanked: 10 time
Liên hệ:

Re: DataGridViewComboxBoxColumn trong DataGridView

Gửi bàigửi bởi xuanquy_th » T.Tư 17/03/2010 4:33 pm

Vậy làm thế nào để bắt sự kiện với nó vậy bạn??

Phần đa sự kiện của nó chính là sự kiện của Cell trên lới (Tôi nói phần đa vì đây là Cell hơi có phần đặc biệt)
Khi Chúa Trời đóng cánh cửa này lại, Ngài sẽ mở một cánh cửa khác cho ta.
Nhưng ta thường nhìn quá lâu vào cánh cửa đã đóng nên không thấy được có một cánh cửa khác đang mở ra cho ta!!!

thuyan1990
Thành viên trung thành
Thành viên trung thành
Bài viết: 299
Ngày tham gia: T.Bảy 02/01/2010 10:23 am
Has thanked: 20 time
Been thanked: 2 time

Re: DataGridViewComboxBoxColumn trong DataGridView

Gửi bàigửi bởi thuyan1990 » T.Tư 17/03/2010 9:37 pm

ShareToShare đã viết:Lưu ý : đỗ dữ liệu vào datagridviewComboBoxColumn trước rồi sau đó mới đỗ dữ liệu vào datagridview1 sau. Nếu ko sẽ báo lỗi .


Cho dù bạn load dataGridview sau hay trước thì nó vẫn báo lỗi
Tập tin đính kèm
error.JPG

thuyan1990
Thành viên trung thành
Thành viên trung thành
Bài viết: 299
Ngày tham gia: T.Bảy 02/01/2010 10:23 am
Has thanked: 20 time
Been thanked: 2 time

Re: DataGridViewComboxBoxColumn trong DataGridView

Gửi bàigửi bởi thuyan1990 » T.Tư 17/03/2010 9:53 pm

Cuối cùng thì mình đã tìm ra lời giải rồi.

Hình đại diện của người dùng
Dragons
Thành viên trung thành
Thành viên trung thành
Bài viết: 270
Ngày tham gia: T.Tư 25/06/2008 10:58 am
Đến từ: Bến Tre, HCM
Has thanked: 14 time
Been thanked: 8 time

Re: DataGridViewComboxBoxColumn trong DataGridView

Gửi bàigửi bởi Dragons » T.Sáu 26/03/2010 6:59 pm

Lời giải thế nào vậy ? Có phải thế này không bạn ?
http://caulacbovb.com/forum/viewtopic.php?f=8&t=11547
Tui đang làm về nó nhưng đang thắc mắc như Link đó !
Sự thông cảm là chiếc chìa khoá vàng mở vào trái tim của người khác.


Quay về “[.NET] Bài viết hướng dẫn”

Đang trực tuyến

Đang xem chuyên mục này: Không có thành viên nào trực tuyến.0 khách