1. Trang chủ
  2. » Công Nghệ Thông Tin

Giáo trình C# 2005 - Tập 4, Quyển 2: Lập trình cơ sở dữ liệu, report, visual sourcesafe 2005 (Phần 2)

197 8 0
Tài liệu được quét OCR, nội dung có thể không chính xác

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 197
Dung lượng 33,73 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Nối tiếp phần 1, phần 2 của Giáo trình C# 2005 - Tập 4, Quyển 2: Lập trình cơ sở dữ liệu, report, visual sourcesafe 2005 tiếp tục cung cấp cho học viên các kiến thức về đối tượng DataGridView và ADO.NET, làm việc với Report và Crystal Report, làm việc với Visual SourceSafe 2005, Visual Studio 2005 và Visual SourceSafe 2005, ứng dụng quản lý nhân sự và tiền lương,... Mời các bạn cùng tham khảo chi tiết nội dung giáo trình!

Trang 1

NHÀ XUẤT BAN LAO ĐỘNG XÃ HỘI

Trang 2

Chương 4: Đối tượng DataGridView và ADO.NET 173 [MỊ°

Trong những chương trước, bạn đã tìm hiểu cách khai báo

uò sử dụng điều khién DataGridView dé trinh bày dữ liệu từ đối

tượng DataSet, DataTuble uà DataVieu

Trong chương này, bạn sẽ tiếp tục tìm hiểu cách trình bày

dữ liệu dưới nhiều hình thức từ đối tượng DataSet, DataToble,

DataView bang déi tugng DataGridView, BindingSource và

Thêm điều khiển khúc uào DataGridView

Đối tượng BindingSource

Đối tượng BindingNauigdtor

Khai báo phương thức sử dụng chung

1 ĐỐI TƯỢNG DATAGRIDVIEW

Déi tugng DataGridView dùng để trình bày dữ liệu có trong đối tượng

DataSet, DataTable, DataView duéi hình thức khác nhau

Ngoài ra, bạn có thể định nghĩa các cột trên điểu khiển

DataGridView va thém cdc diéu khién nhu: Button, TextBox, ComboBox,

CheckBox, Image, Link

Trang 3

Chương 4: Đối tượng DataGridView và ADO.NET

1.1 Thuộc tính

Trong những chương trước, chúng ta đã làm quen với thuộc tính

DataSource ding để điền dữ liéu.tu déi tugng DataSet, DataTable, DataView vao diéu khién DataGridView

1.1.1 Thuéc tinh DataSource

Để sử dung thuéc tinh DataSource, ban khai bdo doan chuong trình

dé goi phuong thie FillDataSet trong lép Databases va dién di tugng DataSet vao diéu khién DataGridView nhu vi du 4-1

i du 4-1: DataGridView va DataSet

private void buttonl_Click (object sender, EventArgs e)

{

DataSet dataSet =cls.FillDataSet (

"select * from tblContracts",

Khi thực thi, ban nhan vao nut DataSet thì dữ liệu trong bảng

tblContracts cia co sé dữ liệu HRSQL trình bày như hình 4-1

Trang 4

Chương 4: Đối tượng DataGridView và ADO.NET 175

Tương tự, bạn có thể gọi phương thức #i11DatzTable từ lớp Databases

để điển đối tượng Dœz7abie vào đối tượng DœiaGridVieu như ví dụ 4-2

i du 4-2: DataGridView va DataTable

private void button2_Click(object sender, EventArgs e)

DataTable dataTable = cls FillDataTable(

"select FirstName, LastName, C.* from "+

" tblEmployees E, tblEducations C where "+

" E.EmployeeID=C.EmployeeID", CommandType.Text) ;

// Khai bdo gan déi tuong DataTable va thuéc tinh // DataSource ctia DataGridView

dataGridViewl DataSource = dataTable;

}

Khi thực thi, bạn nhấn vào nút Dœ¿ơTœbie thì dữ liệu trong bảng

tblEmpioyees và tbÌEducdtions của cơ sở dữ liệu HRSQL trình bày như

hình 4-2

i { LastName EducationID| School DTY-00014 | Hao 1 HEMU of Econo

Ton That Van DTY-00014 | Hao University of Nat

Le Van Tri Van DTY-00018 | Dung HCMU of Techn

Nguyen Thanh 'DTY-00020 iTu HCMU of Econo

- JLeVan DTY-33064 | Anh Polytechnic Univ

Le Quoc Van ADM-00036 | Hie Polytechnic Univ

Hinh 4-2: Trinh bay di liéu tu déi tuong DataTable

Ngoài ra, bạn có thể sử dụng đối tugng DataView để trích lọc dữ liệu

tix d6i tugng DataTable Dé lam điều này, bạn khai báo đoạn chương trình trong bién cé Click cia nit DataView nhu ví du 4-3

Trang 5

Chương 4: Đối tượng DataGridView và ADO.NET

DataTable dataTable =cls.FillDataTable(

"select FirstName, LastName, C.* from" +

"tblEmployees E, tblExperiences C where"+

ˆ" E.EmployeeTD=C EmployeeTD", CommandType.Text) ;

11 Khai báo va khéi tao déi tuong DataView DataView dataView =

new DataView(dataTable) ; /I Khai báo gán đối tượng DataVieu uò thuộc tính L1 DataSource ctia DataGridView

dataGridViewl DataSource = dataView;

DTY-00014 HCMU oÍ Econo

Ton That Van DTY-00014 University of Nat

LeVanTri Van | DTY-00018 HCMU of Techn

Nguyen Thanh | DTY-00020 HCMU of Econo

Le Van DTY-33064 Polytechnic Univ

Le Quoc Van ADM-00036 | Hi Polytechnic Univ

Hình 4-3: Trình bày dữ liệu từ đối tueng DataView

Luu ý, trong ba ví dụ trên chúng ta có sử dụng biến c/s, bạn cần khai báo và khởi tạo déi tugng Databases trong bién cé Load cia Form nhu vi du

4-4,

Trang 6

Chương 4: Déi tugng DataGridView va ADO.NET 177

i du 4-4: Khai bao va khéi tao déi tugng Databases

L1 Khai bdo déi tugng Databases

Databases cls;

private void frmDataView_Load (

object sender, EventArgs e)

{

// Khéi tao déi tugng Databases cls = new Databases ();

1.1.2 Thuéc tinh CurrentRow

Để lấy ra mẩu tin đang chọn trên điều khiển DataGridView, ban có thể sử dụng thuộc tính CurrentRow Thuéc tinh CurrentRow tra vé déi tuong DataGridViewRow chtta dung mau tin dang chon nhu vi du 4-5

i du 4-5: Khai bao sw dung thuéc tinh CurrentRow

private void button2_Click (object sender, EventArgs e)

Trang 7

[MỊ? 1:s Chương 4: Đối tượng DataGridView và ADO.NEÉ

ADM-00036 |Le Quoc Van |Hiep ADM-00038 [Dang Thuy Thi

S1 |ADM-00042 | Nguyen Quoc V | Sy

-|ADM-00047 | Mai Hoang Van Nam

Da naaec+ bat ve Th? keene

Cunertow ] [CurentCet_} [ColumnCount and Rows Count

í dụ 4-6: Khai báo sử dụng thuộc tính CurrentCell

private void button3_Click(object sender, EventArgs e) {

DataGridViewCell dataGridViewCell =

đataGridView1.CurrentCe11;

label1.Text = "CurrenERow Property: "+

Convert ToString (dataGridViewCell.Value) ;

Néu ban nhan vao nuit CurrentCell thì kết quả trình bày giá trị của,

ô đang chọn tương tự như hình 4-5

Ngoài ra, bạn cũng có thể biết được số lượng cột và hàng dữ liệu dang trình bay trén diéu khién DataGridView bằng cách sử dụng thuộc tính ColumnCount va Rows.Count nhu vi du 4-7

Trang 8

Curentfiow Property: Dang Thuy Thi

EreloyealD Fistnane | Lastname Foreigner Gender

‘ADM-00022 [Dinh Tien’ Van | Sinh ole

‘ADM-00028 | Tat Vinh Thi HueThuong =f] | ] `

|ADM00031 |PhamNgoc Van tong sss) | E;

ADM-00036 |Le Quoc Van | Hiep o | oa]

> | ADM.00038 Diem Anh Oo

_{ADM-00042 |Nowen Quee V Sy o | o

‘ADM-00047 |MaiHoangVan |Nam o | o

Hinh 4-5: Si dung thuéc tinh CurrentCell

i du 4-7: S6 c6t va hang dif liéul

private void buttoni_Click (object sender, EventArgs e)

labell.Text = "ColumnCount Property: "+

Convert.ToString (dataGridView1l.ColumnCount) ; labell.Text += "-Rows.Count Property: "+

Convert ToString (dataGridViewl.Rows.Count) ;

Nếu bạn nhấn vào nút ColumnCount and Rows.Count thi két qua

trinh bay nhu hinh 4-6

ColumnCount Property: 16-Rows Count Property: 248

| Employee!D ( Firstname “Lastname Foreignet

> Dinh Tin Van Sinh o

| ADM-00028 TaVnhTh |Hue Thuong —_ la]

| _ |ADM-00031 Pham Ngoc Van _ 'Long D

-_ |ADM-00036 LeQuec Van jHẹp o _{ADM-00038 Dang Thy Thi Diemanh | SE]

ADM-00042 Nguyên Qược V Sy H_

ADM00047 |MaHomgVm (Nam Be:

"i Fie ieee m

Trang 9

(al 180 Chương 4: Đối tượng DataGridView và ADO.NET

1.2 Biến cố

Ngoài một số thuộc tính vừa trình bày ở trên, bạn có thể tìm hiểu một

số biến cố thường sử dụng như: SelectionChanged, DoubieCiick

1.3.1 Biến cố SelectionChanged

Biến cố SelectionChanged xảy ra khi người sử dụng di chuyển con nháy thuộc hàng dữ liệu đang trình bày trên điều khién DataGridView

Để làm điều này, bạn khai báo đoạn chương trình trong biến cố

SelectionChanged dé trình bày mã, họ và tên nhân viên như ví dụ 4-8

labell.Text = "CurrentRow Property: "+

Convert ToString (dgViewRow.Cells[0].Value) THẺ dc

Convert.ToString (dgViewRow.Cells[1].Value)

+Convert.ToString (

dgViewRow.Cells[2].Value) ;

Khi thực thi chương trình, nếu bạn di chuyển con chuột hay con nháy

trên từng hàng dữ liệu của điều khiển Dœ/œGridVieu thì mã, họ và tên

nhân viên trình bày như hình 4-7

ataGridView - [frmProperties]

CurentPiow Property: ADM-00047 Mai Hoang Van Nam

EnployeelD Firstname Lastname | Foreigner

‘ADM-00022 Dinh Tien Van thi 4 eee Bl ADM-00028 | TatVinh Thi Hue Thuong "TE

Pham Ngọc V: Van Long —_ oO

“TLeQuoc Van H TP Reed

'Dang Thuy Thi ñ 1

> LU =

= > S

a (_GurertCet_) [_CotsmnCount and Rows Count }

Logged by ADMINISTRATOR Soe

Hinh 4-7: Si dung bién cé SelectionChanged

Trang 10

i du 4-9: Khai báo sử dung bién cé DoubleClick

private void dataGridViewl_DoubleClick(object sender, EventArgs e)

{

DataGridViewRow dgViewRow =

dataGridViewl.CurrentRow;

labell.Text = "DoubleClick Event: "+

Convert ToString (dgViewRow.Cells[0].Value) +

& DataGridView - [frmProperties]

DoubleClick E vent: ADM-00038-Dang Thuy Thi Diem Anh

'EmployealD | Firstname Lastname -— |ApM-00022 Dinh Tien Van Sinh

—_ [aow-ooma Tat Vinh Thi Hue Thuong

— |ADM-00031 Pham Ngoc Van |Long

ADM-00036 LeQuoc Van

|ADM-00038 Dang Thuy Thi

| ADM-00042 Nguyen Quoc V

| ADM-00047 Mai Hoang Van J

2 THÊM ĐIỀU KHIỂN VÀO DATAGRIDVIEW

Trong C# 2003, để thêm điều khiển nhu: TextBox, ComboBox hay CheckBox vào điều khiển Dœ£aGrid thì bạn cần tao Custom Control.

Trang 11

(A? ise Chương 4: Đối tượng DataGridView và ADO.NET

Khi lam viéc vi diéu khién DataGridView trong C# 2005, ban cé thé thém diéu khién nhu: Button, TextBox, ComboBox, Image, Link hay CheckBox vao diéu khién DataGridView rất dễ dàng

Khi thêm điều khiển Button, TextBox, ComboBox, Image, Link hay CheckBox vao diéu khién DataGridView, ban có thể thực hiện bằng trực quan hoặc viết mã

Chẳng hạn, bạn chọn điều khiển DataGridView rồi R-Click | Add Colưmn | rồi thêm cột như hình 4-9

Hình 4-9: Thêm cột uào điều khién DataGridView

Khi thêm cột dit liéu vao diéu khién DataGridView thi cot nay dang

ở dạng không nhúng cột dữ liệu, sau đó bạn có thể điều chỉnh thuộc tính của cột bằng cách khai báo thuộc tính DaføPropertyNưrne bằng cách R-Click I Edit Columns

Luu y, méi Cell trén diéu khién DataGridView được xem như điều khién TextBox méi khi ban thém diéu khién khde vao diéu khién DataGridView Muc dich cia viéc thém cdc diéu khiển khác vào điều khiển

DataGridView 1a cho phép ching ta trinh bay dif liéu da dang

Trang 12

Chương 4: Đối tượng DataGridView và ADO.NET

‘The name of the data source property or database

column to which the DataGridViewColumn is bound

Hinh 4-10: Thay déi trang thdi cét

2.1 Thém diéu khién TextBox vao DataGridView

Khi trình bày danh sách nhân viên trên diéu khién DataGridView, nếu bạn muốn định nghĩa tựa đề của cột dữ liệu thì bạn có thể thêm cột vào điều khiển DataGridView

Dé lam diéu nay, ban thém diéu khién DataGridView vào Form rồi chon và nhan R-Click | Add Column, cita sổ thêm cột xuất hiện hình 4-11

Header text: |MaNhan Vien} = Se

Veible [ ] ReadOnly [] Frozen

Hình 4-11: Thêm điều khiển TextBox vao DataGridView

Trang 13

\nType DatzGidViewTextBoxcolu Xổi

Tương tự như vậy, bạn khai báo thuộc tinh DataPropertyName cho

hai cột còn lại là FirstName va LastName réi khai bdo doan chuong trinh trong bién cé Show nhu vi du 4-10.

Trang 14

Chương 4: Déi tugng DataGridView va ADO.NET 185

í dụ 4-10: Khai báo trình bày dữ liệu

private voiđ button1_C1ick(object sender, EventArgs e)

{

// Khai bdo va khéi tao déi tugng Databases

Databases cls = new Databases ();

// Khai bdo vé khéi tao déi tugng DataTable

DataTable dataTable = cls.FillDataTable (

"select EmployeeID, FirstName, "+

"LastName, ClassID fromtblEmployees", CommandType Text) ;

dataGridViewl DataSource = dataTable;

-_BNhanVien _—ˆ FisiName | LastName

.)M-00022 Dinh Tien Van | Sinh

2 : M-00028 Tat Vinh Thi Hue Thuong MAN

.3M-00031 Pham Ngoc Van |Long — MAN

}M-00036 7 MAN

— M000 Dang Thuy Thi | Diem Anh MAN

}— M0042 Nguyen Quoc V |BW MAN

: M-00047 Mai Hoang Van Nam MAN

Luu y, trong phat biéu SQL có 4 cột dữ liệu mà bạn chỉ thêm 3 điều

khién TextBox thi cét thứ 4 vẫn trình bày dữ liệu

2.2 Thêm điều khiển ComboBox vào DataGridView

Khi bạn muốn trình bày danh sách nhân viên trên điều khiển DataGridView, tai cét Class1D thì danh sách nhóm trình bày để cho phép người sử dụng có thể thay đổi nhóm như hình 4-15.

Trang 15

Chương 4: Đối tượng DataGridView và ADO.NET

DataGridView va Button

i FirstName | LastName ý DlasslD

ADM-00022 | Dinh Tien Van Sinh Manager

ADM-00028 i Hue Thuong i

_|ADM.00081 | Pham Ngee Van 'Leng a

_|JADM-00036 |LeQuoc Van 'Hiep roca

ADM-00038 | Dang Thuy Thi Diem Anh

~ ADM-00042 | Nouyen Quoc V | Sy Manager

ADM-00047 | Mai Hoang Van Nam Manager

ADM-00051 [Nguyen Km Thị {Phuong Manager

dby /

Leader

Hình 4-15: Trinh bay danh sdch nhdn uiên

Để làm điều này, trước tiên ban thiét ké Form bao gồm điều khiển

Kế đến, bạn #-Cỉck trên điều khiến

DataGridView va chon Add Column thi ctta sổ xuất hiện như hình 4-16

visible [_] Read Only E] Erozen

Trang 16

Chương 4: Đối tuong DataGridView va ADO.NET 187

Sau khi thém 3 diéu khién TextBox va diéu khién ComboBox vao diéu

khién DataGridView, ban cé thé R-Click | Eidt Columns và khai báo thuộc

tinh DataPropertyName nhu hinh 4-17

‘ClassiD

i DataGridViewComboBoxCc vi

The name of the data source property or aoe phan which the DatacreVienColumns bord

Hinh 4-17: Khai bdo thuéc tinh DataPropertyName

í dụ 4-11: Khai báo trình bày dữ liệu

private void button1_Click(object sender, EventArgs e)

{

L1 Khai báo uà khởi tạo đối tượng Databases

Databases cls = new Databases () ;

L1 Khai bdo déi tugng DataTable cho diéu khién ComboBox

(1 Khai báo déi tuong DataTable cho

// diéu khién DataGridView

Trang 17

IMỊ” 1ss Chu-ng 4: Đối tượng DataGridView và ADO.NET

DataTable dataTable = cls.FillDataTable(

"select EmployeeID, FirstName, "+

"LastName, ClassID from tblEmployees", CommandType Text) ;

dataGridViewl.DataSource = dataTable;

2.3 Thém diéu khién Button vao DataGridView

Dé thém diéu khién Button vao diéu khién DataGridView, ban cé thé thực hiện tương tự như hai trường hợp trên Chẳng han, bạn thiết kế Form réi chon và nhấn #-Ciick | Add Colưmn, cửa sổ thêm cột xuất hiện như

Header text: : |Approval | :

/ Visible [] Read Only

add | [_cancet_]

Hình 4-18: Thém diéu khién Button vao DataGridView

Sau khi thém cét la diéu khién Button vào điều khién DataGridView,

bạn chọn và R-Click | Edit Colưmns, cửa sổ khai báo thuộc tính cho điều khiển Bư¿‡on xuất hiện như hình 4-19

Trang 18

Chương 4: Đối tượng DataGridView và ADO.NET

Hinh 4-19: Khai bdo thuéc tinh cho điều khiển Button

Kế đến, bạn khai bdo doan chuong trinh trong bién cd Show dé dién

dữ liệu vào điều khiển Dœ/aGr¡dVieu tại thuộc tinh Text cho hai nút Aprroudl, Delete như ví dụ 4-12

í dụ 4-12: Khài báo trình bày dữ liệu

private voiđ button1_C11ick (object sender, EventArgs e)

{

// Khai bdo va khdi tao déi tugng Databases

Databases cls = new Databases () ; // Khai bdo va khéi tao déi tugng DataTable

DataTable dataTable = c1s.Fi11DataTable (

"select EmployeeID, FirstName, "+

"LastName, ClassID from tblEmployees", CommandType.Text) ;

dataGridView1.DataSource = dataTable;

// Duyét trén ting hang foreach (DataGridViewRow grViewRow in dataGridView1 Rows)

{

grViewRow.Cells[0].Value grViewRow.Cells[1i] Value

} }

Khi thực thi chương trình, nếu bạn nhén nut Show thì dữ liệu trình

bày như hình 4-20

"OK";

"OK";

Trang 19

—— |ADM-00038 |Dang Thuy Thì {DiemAnh 0K 0K _]|MAN

- JADM-00042 | Nguyen Quoc V | Sy OK 0K J|MAN

ânM.nnn47 ! Mai Hoang VAn, Nam = nk nk

Logged by ADMINISTRATOR

Hinh 4-20: Thém Button vao DataGridView

Khi người sử dụng nhấn vào một trong hai nút, bạn cần khai báo đoạn chương trình trong biến cố CelJCl¿ck để phân biệt nút bị nhấn như ví

Trang 20

Chương 4: Đối tượng DataGridView và ADO.NET 191 [MỊ?

8pproval for: ADM-00028

Hình 4-21: Nhấn nút OK trong cot Approval

Tương tự như vậy, nếu bạn nhấn vào nút OK trong cột Deiete thì kết quả trình bày như hình 4-22

a

Delete for: ADM-00036

Hình 4-22: Nhấn nút OK trong cột Delete

2.4 Thêm diéu khién CheckBox vao DataGridView

Để thêm điều khiến CheckBox vao diéu khién DataGridView, ban thiét ké Form va thém diéu khién DataGridView réi chon va nhaén R-Click

| Add Colưmn, cửa số thêm cột xuất hiện hình 4-23

ñdd Column ‘acd

* 3 Databound column |

‘Columns rithe fataoource

Header text: |Avalable| m

M1 visble () Read only [TEezen

Hình 4-28: Thêm điều khiển CheckBox uào DataGridView

Trang 21

FalseValue IndeterminateValue

Hình 4-24: Khai bdo thuéc tính cho diéu khién CheckBox

Tương tự như vậy, bạn khai báo đoạn chương trình trong biến cố

Shou như ví dụ 4-14

dụ 4-14: Khai báo trình bày dữ liệu

private void button1l_Click (object sender, EventArgs e)

{

// Khai bdo va khởi tạo đối tượng Dœtabases

Databases cls = new Databases () ;

// Khai bdo va khởi tạo đối tượng DataTable

DataTable dataTable = cls FillDataTable(

"select EmployeeID, FirstName, "+

"LastName, ClassID,Available from" +

"tblEmployees", CommandType.Text) ; dataGridViewl DataSource = dataTable;

}

Khi thực thi chương trình, nếu bạn nhan nut Show thi dit liéu trinh

bay nhu hinh 4-25.

Trang 22

Chương 4: Đối tượng DataGridView và ADO.NET

|} ADM-00028 ADM-00031 _,ADM-00036 Hes

ˆ JAnM-00042 ˆ_|ADM-00047

| FirstName Dinh Tien Van

Tat Vinh Thi

Pham Ngoc Van

Hinh 4-25: Thém CheckBox vao DataGridView

Luu ý, nếu trong phát biểu SQL có 4 cột dữ liệu mà bạn chỉ thêm 3

điều khiển 7ex¿Box thì khi trình bày dữ liệu cột thứ 4 này vẫn xuất hiện

Ngoài ra, bạn cũng có thể trình bày thực đơn nóng mỗi khi người sử

dụng nhấn nút chuột phải trên điều khiển DataGridView

Ví dụ, khi người sử dụng nhấn nút chuột phải trên điều khiển

DataGridVieuo thì thực đơn xuất hiện như hình 4-26

Dinh Tien Van

ADM-00028 | Tat Vinh Thi

Mai Hoang Van

Nguyen Kim Thi

Trang 23

í dụ 4-15: Khai báo cho Menul

private voidđ toolSEripMenuTtem1_C1ick(object sender,

2.5 Dinh dang cho 6

Để định dạng ô trong điều khiển DataGridView, ban c6 thé chon vào thuộc tính DeƒfbuitCellStyle, cửa sổ xuất hiện như hình 4-27

[82)013/0287/10/00 210

previews att Bee: a5 là

+ This preview shows properties from inherited CellStyles (Table, Column, Row)

Trang 24

Chương 4: Đối tuong DataGridView va ADO.NET 195

Khi thực thi chương trình, nếu bạn nhấn nút S»ou thì dữ liệu trình bày với cột thứ nhất xuất hiện màu như hình 4-28

DataGridView - [frmCetlStyte]

Ma Nhan Vien + FirstName | LastName: ? ClassID

Dinh Tien Van Sinh MAN

Tat Vinh Thi Hue Thuong MAN Pham Ngoc Van {Long MAN

Le Quoc Van Hiep MAN

Dang Thuy Thi | Diem Anh MAN

Nguyen Quoc V | Sy MAN Mai Hoang Van Nam MAN Nguyen Kim Thì {Phuong - oy MAN mtg

| Loosed by AptamvisTRATOR

Hinh 4-28: Khai bdo mau cho cét

Trong trường hợp bạn muốn định dạng cho những ô còn lại của điều khién DataGridView, ban cé thé khai báo đoạn chương trình sử dụng đối tuong DataGridViewCellStyle va thudc tinh DefaultCellStyle trong biến cố Click cia nit Apply Style nhu vi du 4-16

i du 4-16: Khai bao dinh dang cho 6

private void button2_Click(object sender, EventArgs e) {

DataGridViewCellStyle CellStyle = new DataGridViewCellStyle()j;

Trang 25

IMỊ” 196 Chương 4: Đối tượng DataGridView và ADO.NET

Hinh 4-29: Dinh dang mau

3 ĐỐI TƯỢNG BINDINGSOURCE

Thay vì bạn phải khai báo để liệt kê danh sách mẩu tin của bảng con khi người sử dụng di chuyển trên từng mẩu tin của bảng cha thì bạn có thể

sử dụng đối tượng BindingSource cùng với đối tượng DœfaSet và DataRelation

Chẳng hạn, bạn muốn liệt kê danh sách phòng ban trên điều khiển DataGridVieu, mỗi khi người sử dụng chọn vào mã phòng ban thì danh sách nhân viên và hợp đồng lao động của họ sẽ liệt kê trên điều khiển

DataGridView thứ hai như hình 4-30

Dinh Tien Van Sinh C000000161 'ADM-00022 !4/28/200

Tat Vinh Thi Hue Thuong | (000000162 -ADM.00028 | 5/28/200

[Pham Nene Van i ana Cnnnnnma ÌAnM.nnx1

Trang 26

Chương 4: Đối tượng DataGridView và ADO.NET 197

Để làm điều này, trước tiên bạn thiết kế Form bao gồm hai diéu

khién DataGridView va Button nhu hinh 4-31

Hình 4-31: Thiét ké Form dung doi tuong BindingSource

Ké dén, ban khai bdo phuong thtte MakeBindingSource nhan hai

tham số là BindingSource ứng với bảng cha là £b1Departmen‡s và con là sự

kết hợp giữa hai bảng tblEmployees va tblContracts nhu vi du 4-17

í dụ 4-17: Khai báo sử dụng đối tượng BindingSource

!1 Khai báo phát biểu SQL ting voi bang cha

string parentSQL = "select DeptID, "+

"DeptName from tblDepartments";

!1 Khai báo phát biểu SQL ứng uới hai bảng con string childSQL= "select FirstName, "+

"Lastname,* from tbhlContracts C, "+

"tblEmployees E where E.EmployeeID=" +

Trang 27

// Khai báo đối tượng DataColumn ứng uới bhóa ngoại DataColumn £k =

// Khai bdo thuéc tinh DataSource cho

LJ đối tượng BindingSource

bindingParent DataSource = dataSet;

i du 4-18: Khai bao goi phuong thức MakeBindingSource

private void button1l_Click (object sender, EventArgs e)

// Khai bdo va khdi tao déi tuong BindingSource

// ứng uới bảng hai bang con

BindingSource bindingChild =

new BindingSource() ;

Trang 28

Chương 4: Đối tượng DataGridView và ADO.NET

11 Khai báo gọi phương thức MuheBindingSource

Mỗi khi người sử dụng chọn mẩu tin trên điều khiển Dœ/gGridVieio

thứ nhất thì danh sách mẩu tin có mã phòng ban trong bảng tblContracts

tương ứng sẽ trình bày tương tự như hình 4-32

LaVan Tủ Van, £nnnmnin1 n1v.an18

4 DOL TUGNG BINDINGNAVIGATOR

Nếu như bạn muốn cho phép người sử dụng di chuyển trên từng mẩu

tin của bảng cha mà khong truc tiép chon trén diéu khién DataGridView

thi bạn có thể sử dụng ddi tugng BindingSource kết hợp với

BindingNavigator

Để làm điều này, trước tiên bạn thiết kế Form với hai điều khiển

DataGridView va Button nhu hinh 4-33

Trang 29

Hinh 4-33: Siz dung BindingNavigator

Kế đến, bạn khai báo phương thức có tên MakeBindingSource nhận

hai tham số là BindingSource ứng với bảng cha là tblDepartments va con la

sự kết hợp giữa hai bảng £b1Employees và tblContracts như ví dụ 4-19

Vi du 4-19: Kh

ai báo sử dụng đối tượng BindingSouree

void MakeBindingSource(

BindingSource bindingParent, BindingSource bindingChild)

{

11 Khai báo va khối tạo đối tượng Databases

Databases c1s = new Databases () ; // Khai báo phát biểu SQL ứng uới bảng cha string parentSQL = "select *"+

" from tblDepartments";

11 Khai báo phát biểu SQL ứng uới hơi bảng con

string childSQL = "select FirstName, "+

"Lastname, * from tblContracts C, "+

"tblEmployees E where E.EmployeeID=" +

"C.EmployeeID";

// Khai bdo déi tugng DataSet DataSet dataSet =cls.FillDataSet ( parentSQL, "tblDepartments", childSQL,

"tblContracts", CommandType Text) ;

11 Khai báo đối tượng DataColumn ứng uới

£1 cột khóa chính

Trang 30

Chương 4: Đối tượng DataGridView và ADO.NET 201

DataColumn pk = dataSet.Tables[0].Columns[0];

// Khai bdo déi tugng DataColumn ting vdi khéa ngoại DataColumn fk =

dataSet Tables[1] Columns[15];

L1 Khai báo uà bhởi tạo đối tượng DataRelation DataRelation dr = new

DataRelation("Relation", pk, fk, true);

LỊ Khai báo thêm đối tượng DataRtelation uào /[I đối tượng DataSet

đataSet Relations Add (đr) ;

L] Khai báo thuộc tính DataSource cho

L1 đối tượng BindingSource bindingParent.DataSource = dataSet;

i du 4-20: Khai báo gọi phương thức MakeBindingSource

private void button1_C1ick(ob3ject senđer, EventArgs e)

L1 ứng uới bảng hai bảng con BindingSource bindingChild = new BindingSource() ; // Khai bdo goi phuong thitc MakeBindingSource MakeBindingSource (

Trang 31

Chương 4: Đối tugng DataGridView va ADO.NET

Hình 4-34: Sở dụng đối tượng BindingNquigdtor

Lưu ý, bạn có thể chọn nút › hay 4 để di chuyển trên từng mẩu tin của

bảng tblDepartments

Trong trường hợp dữ liệu của bảng cha trình bày trên các điều khiển tương ứng nhu: TextBox, ComboBox, thi ban cé thé sử dụng đối tượng BindingNavigator nhu hinh 4-35

Trang 32

Chương 4: Đối tượng DataGridView và ADO.NET

Hình 4-85: Sử dụng đối tượng BindingNauigdtor

Để làm điều này, trước tiên bạn thiết kế Form có giao diện như hình

Hinh 4-36: Đối tượng BindingNavigator va TextBox

Kế đến, ban khai bdo phuong thuc c6 tén GetDataSet nhan hai tham sé 1a BindingSource tmg véi bang cha 1a tblDepartments va con 1a su kết hợp hai bang tblEmployees va tblContracts tra về đối tugng DataSet như ví dụ 4-21

{ du 4-21: Khai báo sử dụng đối tượng BindingSource

DataSet GetDataSet (

BindingSource bindingParent,

BindingSource bindingChild)

{

Trang 33

Bal? 204 Chương 4: Đối tượng DataGridView và ADO.NET

"Lastname,* from tblContracts C, "

"tblEmployees E where E.EmployeeID=" +

"C.EmployeeID";

// Khai bdo doi tuong DataSet

DataSet dataSet = cls.FillDataSet (

parentSQL, "tblDepartments", childSQL,

"tblcontracts", CommandType Text) ; /1 Khai bdo déi tugng DataColumn ting voi

bindingParent DataSource = dataSet;

Trang 34

Chuong 4: Déi tugng DataGridView va ADO.NET 205 MỊ?

í dụ 4-22: Khai báo gọi phương thức GetDataSet

private voiđ button1_C1ick(object sender, EvenEArgs e)

11 Khai báo uò khởi tạo đối tượng BindingSource // ting voi bảng hai bảng con

BindingSource bindingChild =

new BindingSource() ;

LỊ Khai báo gọi phương thức GetDataSet

DataSet dataSet = GetDataSet (

// Khai bdo thuéc tinh cho hai điều khiển TextBox textBoxl DataBindings.Add(new Binding("Text", bindingParent, "DeptID"));

textBox2.DataBindings Add("Text", bindingParent, "DeptName") ;

/ 1 Khai bdo thuéc tinh cho diéu khién DataGridView dataGridView2.DataSource = bindingChild;

Trang 35

Chương 4: Đối tượng DataGridView và ADO.NET

\'FustName Lawnameˆˆˆ ConuaclNoˆ ' EmployeelD

biện Due C000000530 ENG-00193

TianVanVan | Tam C000001180 ENG-90001 lạ,

S {Tran Van Van ¡Tam C000000320 ENG-90001 - J4

PhanKhac Van |Hien C000000017 ENG-90003 4/3

Hình 4-37: Sử dụng đối tượng BindingNavigator

Lưu ý, bạn có thể thực hiện việc sử dụng 3 đối tượng BindingSouree, BindingNavigator va DataSet bằng giao diện trực quan từ ngăn Dœ¿ø của ctta s6 ToolBox như hình 4-38

Trang 36

Sau khi khai báo và sử dụng đối tượng Dœ¿aGridVi¡eu và các đối tượng

như: Dœ¿aSet, DœtœTable, DataVieu, chúng ta có thể khai báo hai phương

thức dùng chung cho điều khiển nay véi hai déi tugng DataTable, DataView trong lớp Controls

Phương thức thứ nhất nhận tham số là phat biéu SQL, diéu khién ° DataGridView va loai câu truy vấn như ví dụ 4-23

í dụ 4-28: Khai báo phương thức dùng chung

internal void FillControls (

DataGridView dataGridView, string strSQL,

Tương tự như vậy, trong trường hợp bạn cho phép người sử dụng trích

lọc dữ liệu thì khai báo phương thức có thêm tham số là đối tượng DataTable và chuỗi ứng với thuộc tính RouFiiter của đối tượng DœœVieu như ví dụ 4-24

í dụ 4-34: Khai báo phương thức dùng chung

internal void FillControls (

Trang 37

Chương 4: Đối tượng DataGridView và ADO.NET

dataGridView DataSource = đataView;

í dụ 4-25: Khai báo gọi phương thức dùng chung

brivate void button2_C1ick(object senđer, EventArgs e)

{

// Khai bdo va khởi tạo đối tượng Controls Controls cls = newControls();

// Khai báo gọi phương thức FillControls

c€l1s.Fi11Controls (this đataGridView1,

"select * from tblContracts", CommandType.Text) ;

Trang 38

Chuong 4: Déi tugng DataGridView va ADO.NET 209 MỊ”

Khi thực thi chương trình, nếu bạn nhấn vào nut DataTable thi két

quả trình bày danh sách hợp đồng của nhân viên như hình 4-40

Contacto | EmployeelD | ContractDate | ContiactTyr| Commencement |^

‘\cooooo0002 |ENG-90032 | 4/28/2006 One Year | 4/28/2006 6:53

|C000000012 |DTY-00014 | 4/28/2006 6:59 |No Limit | 4/28/2006 6:59

— fco00000013 |DTY-00020 | 4/28/2006 6:59 |NoLimit | 4/28/2006 6:59

Co00000014 |ADM-80095 | 4/28/2006 6:59 |One'Year | 4/28/2006 6:59

_ }cooo000g1s |ADM-80096 | 4/28/20066:59 |NoLimit | 4/28/2006 6:59

_ [cooo000016 |ADM-80088 |4/28/2006653 One Year | 4/28/2006 6:53

Tương tư như vậy, nếu bạn có nhu cầu truy trích lọc dữ liệu trên đối

tugng DataTable thi bạn có thể trích lọc dữ liệu trong déi tugng DataTable

bằng cách khai báo tương tự như ví dụ 4-26

Ví dụ 4-26: Khai báo gọi phương thức dùng chung

private void button3_Click(object sender, EventArgs e)

/ 1 Khai bdo va khéi tao déi tugng Controls Controls cls = newControls();

// Khai bdo gọi phương thức FillControls els.FillControls(this.dataGridvView1, dataTable,"DeptID='ADM'",

CommandType.Text) ;

Trang 39

Trong chương kế tiếp, chúng ta tiếp tục tìm hiểu cách sử dụng Repor¿,

Crystal Report với hai điều khiển ReportVieuer và CrystalReportVieuer

trong ting dung Windows Forms

Trang 40

Chuong 5: Lam viéc véi Report va Crystal Report 211 [MỊ?

ReportViewer, CrystalReportViewer từ đối tuong DataSet,

DataTable, DataView hay OLEDB (ADO)

Các uấn đề chính sẽ được đề cập:

v_ Thiết ké Crystal Report

Y Trinh bay dit liéu bang CrystalReportViewer

Y Trinh bay dit liu bang Report va ReportViewer

1 THIẾT KẾ CRYSTAL REPORT

Để làm việc véi Crystal Report, ban cé thé tạo mới Projec£ loại Crystal Reports Application hoac tu khai báo tham chiéu dén khéng gian

tên trong du dn loai Windows Forms

Mặc dù Microsoft đã thiết kế, tạo kết nối và tương tác bằng nhiều

cách khác nhau cho Crystal Report, nhung trong chuong nay chúng tôi sẽ

giới thiệu đến các bạn cách sử dụng đối tugng DataSet, DataTable va

OLEDB (ADO)

Có hai cách để thực hiện ý định này Cách thứ nhất là thêm đối tượng

DataSet tit ngan Data trong cita s6 ToolBox vao Form Cach thu hai, khai bdo bién déi tugng DataSet trong Class tury y Ca hai cach nay cho phép ban

sử dụng điều khiển CrystalReportViewer dé trinh bay trén Form

Ngày đăng: 17/12/2021, 10:02

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm