You are on page 1of 27

Ê 


  Ê





 




Ê
Ê
 

     !"#$
    Ê%&$'$($)
    * +

TP.HCM 2008

1
,
 

1. HiӇn thӏ dӳ liӋu vào trong DataGridView control ........................................................ 3
2. Các dҥng ColumnType sӱ dөng trong DataGridView Column ..................................... 3
3. Thêm Column vào DataGridView ............................................................................... 4
4. Mӝt sӕ sӵ kiӋn trên DataGridView .............................................................................. 7
5. Bài tұp thӵc hành ........................................................................................................ 8
5.1 Mô tҧ đӅ bài. ............................................................................................................. 8
5.2. Mô tҧ cơ sӣ dӳ liӋu ............................................................................................. 15
5.3. Hưӟng dүn cài đһt............................................................................................... 15
5.3.1 Tҥo project.................................................................................................... 15
5.3.2 Cài đһt FormQuanLySach ............................................................................. 19
5.3.3 Cài đһt FormMain ......................................................................................... 26
5.3.4 Yêu cҫu khác. ............................................................................................... 27




















2
‘ 
    
ĐӇ hiӇn thӏ mӝt DataSet hoһc DataTable vào DataGridView control, ta
quan tâm đӃn Property DataSource và DataMember cӫa DataGridView
Cách sӱ dөng như sau:
+ Đ͙i vͣi DataSet
DataGridView1.DataSource = ds µ ds: DataSet
DataGridView1.DataMember = ³Books´ µ Book : Tên cӫa DataTable trong
ds
+ Đ͙i vͣi DataTable
DataGridView1.DataSource=dt µ dt: DataTable
 Ngoài ra chúng ta có thӇ gán DataSource cӫa DataGridView control vӟi mӝt
DataSet bҵng viӋc sӱ dөng Smart Tag bҵng cách chӑn mӝt DataSet trong Choose
Data Source ComboBox . Mһt khác có thӇ tҥo mӟi mӝt DataSet bҵng cách chӑn
Add Project Data Source trên smart tag.

u    !" #  


Có 6 kiӇu control cơ sӣ có thӇ sӱ dөng trong DataGridView
- DataGridViewTextBoxColumn
- DataGridViewCheckBoxColumn
- DataGridViewImageColumn
- DataGridViewButtonColumn
- DataGridViewComboBoxColumn
- DataGridViewLinkColumn

3
c Custom Colum Type đưӧc sӱ dөng khi 6 dҥng control cơ sӣ trên không đáp
ӭng đưӧc yêu cҫu thӇ hiӋn dӳ liӋu trong DataGridView. Cách tҥo ra mӝt Custom

c
Column bҵng cách tҥo ra mӝt class kӃ thӯa tӯ DataGridViewColumn hoһc mӝt
trong 6 dҥng control cơ sӣ trên.
c VD:c

| 
     
     

 




Ë $  


i  
  

Bưӟc 2: Chӑn Collections trên tag Column

4
i    

Chӑn Name, Type, HeaderText cho column muӕn add vào DataGridView

i  ! 
"# $%  
Khi chӑn DataSource cho DataGridView là mӝt DataTable, thưӡng thì ta
không muӕn thӇ hiӋn hӃt dӳ liӋu các cӝt trong DataTable vào bên trong

5
DataGridView. Muӕn vұy ta phҧi đӏnh DataPropertyName tương ӭng vӟi Field
Name trong DataTable.

i &'(  !)*  


Bình thưӡng khi chӑn DataSource cho DataGridView là mӝt DataSet hay
DataTable mһc đӏnh DataGridView sӁ tҥo ra các column tương ӭng vӟi các
column trên DataTable tương ӭng. Nhưng thưӡng thì chúng ta chӍ muӕn hiӇn thӏ
vài field lên DataGridView, như vұy trưӟc khi chӑn DataSource cho
DataGridView ta đһt Property AutoGenerateColumns cӫa DataGridView là False
Vd:
DataGridView1.AutoGenerateColumns = False
DataGridView1.DataSource = dt µ dt: DataTable
Khi đó DataGridView chӍ hiӇn thӏ các column đã đưӧc Add và đӏnh
DataPropertyName tương ӭng vӟi field trên DataTable

 Chú ý: Hoàn toàn có thӇ add các column vào DataGridView bҵng code.

6
 %&!'!() $ 
L SelectionChanged
- MultiSelectChanged
- Sorted
- CellClick
- «.

7
î *+ (

î ‘%,-./0 
 ViӃt chương trình quҧn lý sách vӟi chӭc năng đơn giҧn sau:
LThêm, xóa, cұp nhұt sách
LThiӃt kӃ giao diӋn như hình bên dưӟi (MDI)


- Giao diӋn dҥng MDI, mӛi lúc chӍ có -."/01"2 đưӧc load lên
Ví dө: FormQuanLySach đã đưӧc load, khi ngưӡi dùng nhҩp vào menu
quҧn lý sách thì phҧi hӓi ngưӡi dùng có muӕn load lҥi hay không?

8

L$34536"/0 )Ê 7)$$%8)

9
- Các sӵ kiӋn cҫn cài đһt:

+ ,$- ., 


- Load tҩt cҧ các nhà xuҩt bҧn vào trong ComboBox nhà xuҩt bҧn
- Load tҩt cҧ các thӇ loҥi sách vào trong ComboBox thӇ loҥi
Chú ý 2 property DisplayMember và ValueMember cӫa ComboBox

/i0102 /3 - 4 0 và /i0 (5


- 4 0 
-c Load tҩt cҧ các sách có nhà xuҩt bҧn và thӇ loҥi đang chӑn trên Form


 6767-   8
HiӇn thӏ nӝi dung cӫa dòng vӯa chӑn lên group [Thông tin chi tiӃt] vӟi nӝi
dung đҫy đӫ.

i  98
- Trưӟc khi click

10
- Sau khi click:

 Lưu: Lưu nӝi dung cӫa sách vӯa nhұp liӋu


Âþ a tr̷ng: Soҥn lҥi thông tin chi tiӃt
 Hͯy: Bӓ qua chӭc năng thêm

i  :; 8


Xóa sách đang chӑn trên DataGridView

i  <#1< 8


- Trưӟc khi click:

11
- Sau khi click:

12
 Lưu: Cұp nhұt lҥi nӝi dung cӫa sách đã chӑn và đã thay đәi nӝi dung(Chú ý vì
chương trình cho phép ngưӡi dùng cұp nhұt lҥi mã sách nên bҳt buӝc phҧi lưu lҥi
mã sách vӯa chӑn cұp nhұt trưӟc đó đӇ có đӫ thông tin đӇ cұp nhұt sách sau khi
ngưӡi dùng thay đәi nӝi dung cӫa sách muӕn cұp nhұt)
Âþ a tr̷ng: Soҥn lҥi thông tin chi tiӃt
 Hͯy: Bӓ qua chӭc năng thêm

i  97 8

13


14
î u %,-1!2
  

î Ë 34 5.6

î  

Bưӟc 1: File  New Project
Bưӟc 2: ĐiӅn thông tin như bên dưӟi

15
Bưӟc 3: Chӑn Ok

16
Bưӟc 4: Chӑn Form1 làm MDIForm
-c Text : FormMain
-c Name : FormMain
-c IsMdiContainer: True
-c WindowState: Maximized

Khi đó Form Main có dҥng như sau:

17
Bưӟc 5: Kéo MenuStrip vào FormMain

- Name: MenuStripMain

18
î    
Add mӝt WindowForm vào project có nӝi dung như sau:

19
-c ThiӃt kӃ FormQuanLySach như sau:

7 '"4/"1 /"9:/4:8


1 TextBox - Name: txtMaSach
2 TextBox - Name: txtTuaDe
3 TextBox - Name: txtTacGia
4 TextBox - Name: txtNamXuatBan
5 ComboBox - Name: cbNhaXuatBan
- DisplayMember: Publisher
-ValueMember:PubID
6 ComboBox - Name: cbTheLoai
- DisplayMember: BookStyle
-ValueMember: BookStyleID
7 DataGridView - Name: dgvDanhSach

20
7 '"4/"1 /"9:/4:8
- SelectionMode : FullRowSelect
- ReadOnly : True
- MultiSelect: False
- AllowUserToAddRows: False
- Columns
+ MaSach:
- Text: Mã Sách
- DataPropertyName : BookID
+TuaDe
- Text: Tӵa đӅ
- DataPropertyName : Title
+TacGia
- Text: Tác Giҧ
- DataPropertyName : Author
+NamXuatBan
- Text: Năm Xuҩt Bҧn
- DataPropertyName : Year
8 Button - Name: btThem
- Text : Thêm
9 Button - Name: btXoa
- Text: Xóa
10 Button - Name: btCapNhat
- Text : Cұp Nhұt
11 Button -Name: btThoat
- Text : Thoát

Thêm các thuӝc tính và phương thӭc sau vào class FormQuanLySach

21
| $ () &

'#;<4=8>5?$"6"/0 )Ê 7)$
|   !
 | ) &*  "#  $   
  $ (
) &*  '    
+| " " &)$ (
" " &'
  ,) &
,*-'./0 $00123/|4$*-5| 5-)"
$001'6*-5$ (

  & )    *
  &   * ) % ,!
+  & /   78!'
  # '&!
+
+
 

|  /0
' &'' $
)$ !
  %  /0
*
  % '  /0
*
  % " #  $ /0
*
  % ' /0
*
 

|  # '&!
  %  '% *--
  % '  '% *--
  % " #  $ '% *--
  % " #  $ '% *--
  % ' '% *--
 

'#;<4=8>5?$"6"/0 )Ê 7)$



L-=8* æ  
  

|     


    !
cccccccc  
  
 cc 

cc c
 !"#c
cccccccc $ 
 cc 

cc c
%&#c
 

L-=8* 
  
    

|  "#  $ %&   !ccc
cccccccccc '  #c
 

L-=8* 
   
    

|  '  %&   !

22
cccccccc '  #c
 


L-=8*   

   

|  &  &   !
+   ' '% 79-: -)   ;" '% 79-: -!
'
+  & /   9<!'
+  &   /  %7
 & /   !'
 $ () &*
 &   /  <!  
  ) '
 ,) &
,*-'./0 $00123/$001*-5$ (
 * ) % ,!
+ /    *8!'
  %  '% *
 / <!-$ (-! '  &!
  % '  '% *
 / <!-' -! '  &!
  % ' '% *
 / <!-)  -! '  &!
  % " #  $ '% *
 / <!-6-! '  &!
  '    *
 / <!-$ (
-! '  &!
  "#  $   *
 / <!-| -! '  &!
+

  # '&!
+
+
+
 

L-=8*   



|  &(   !
  &  &=!
 

L-=8*   


|   ' (   !
+   ' '% *-'> -!'
  /0
' &'' !
   ' '% *-: -
   #  '% *-#?'@&-
   ;" '% *-3A
-
  # '&!
+   ' '% *-: -!'
 ,) &

23
 $ () &*  %  '% 
 ' ) &*  % '  '% 
 6) &*  % " #  $ '% 
 | ) &*  "#  $   
 $ (
) &*  '    
 )  ) &*  % ' '% 
,*-"/'"'0$001)4-
,5*$ (5-=-
,5*-B-5' 5-B=-
,5*| 5-=-
,5*65-=-
,5*$ (
5-=-
,5*-B-5)  5-B-
,5*-!-
+ ) % "  
,!*8!'
 &$ %  -'>  CD&-=-'> -=
&$ %$  01= &$ %  +    !
   ' '% *-'> -
   #  '% *-#?-
   ;" '% *-E;"E -
  /0
' &'' ' !
   !

 &$ %  -'>  F G-=-'> -=
&$ %$  01= &$ %   !
+
+   ' '% *-3A
-!'
  /0
' &'' ' !
  # '&!
   ' '% *-'> -
   #  '% *-#?-
   ;" '% *-E;"E -
+
 


L-=8*  




|   # (   !
+   #  '% *-#?-'
+   ' '% 79-: -)   ;" '% 79-: -!
'
+  & /    9<!'
+  &   /  %7
 & /   !'
 $ () &*
 &   /  <!  
 ,) &
,*-'/0 $00123/$001*-5
$ (
+ ) % "  
,!*8!'
 &$ %  -#? CD&-=-#?-=
&$ %$  01= &$ %  +    !
   !


24
 &$ %  -#? F G-=-#?-=
&$ %$  01= &$ %   !
+
+

+

+
+   #  '% *-#?'@&-'
  # '&!
+
 
L-=8*   


|   ;" (   !
+   ;" '% *-3A
-!'
  /0
' &'' ' !
  # '&!
   ' '% *-'> -
   #  '% *-#?-
   ;" '% *-E;"E -
+   ;" '% *-E;"E -'
  /0
' &'' !
   ' '% *-3A
-
   #  '% *-#?'@&-
   ;" '% *-: -
  $ (* & |  %  '% !
+   ;" '% *-: -'
 ,) &
 $ () &*  %  '% 
 ' ) &*  % '  '% 
 6) &*  % " #  $ '% 
 | ) &*  "#  $   
 $ (
) &*  '    
 )  ) &*  % ' '% 
,*-4|)'$001'-
,5*-$001*-5$ (5-=-
,5*-''*B-5' 5-B=-
,5*-|4$*-5| 5-=-
,5*-$001'6*-5$ (
5-=-
,5*-)4'30/*B-5)  5-B-
,5*-23/$001*-5  $ ( '  &!
+ ) % "  
,!*8!'
 &$ %  -E;E  CD&-=-E;E -=
&$ %$  01= &$ %  +    !
   ' '% *-'> -
   #  '% *-#?-
   ;" '% *-E;"E -
  /0
' &'' ' !
   !

 &$ %  -E;E  F G-=-E;E -=
&$ %$  01= &$ %   !
+
+
 

25

L-=8*   


|   '  (   !
 ) &/  * &$ %  -$G? H  I J-=
-' I -= &$ %$  6" = &$ %  2&!
+*2      &/  6!'
   !
+
 


î   

- ThiӃt kӃ tiӃp FormMain như hình sau:

Cài đһt cho sӵ kiӋn


  ! 


|  I'  ;    (   !
 + )  !*  
++  & 9<!'
 )2      &/  *
&$ %  -   
KLK:M =$G? H GJ-=
-2&-= &$ %$  6" = &$ %  2&!
+*2      &/  6'
+ <!  !
 + )"   
!
+ | * 
+  !
+

26

 + )"   
!
+ | * 
+  !
+
 

î    !"# 

- KiӇm tra dӳ liӋu và các điӅu kiӋn hӧp lӋ
- ThiӃt kӃ lҥi ӭng dөng theo mô hình 3 ± Layer
- Giao diӋn đҽp + tiӋn dөng

27