Professional Documents
Culture Documents
NET
MC LC
MC LC ......................................................................................................... 1 CHNG 1: KIN TRC CA .NET.............................................................. 3 1.1. Mi trng thc thi ngn ng chung CLR .......................................... 3 1.2. Ngn ng trung gian - IL ....................................................................... 4 1.3. Gii thiu v .Net Framework................................................................ 5 CHNG 2: LP TRNH WINDOWS FORMS............................................... 7 2.1. To mt ng dng Windows form ......................................................... 7 2.2. Lp Control ........................................................................................... 8 2.3. Form ...................................................................................................... 8 2.3.1. Chc nng........................................................................................ 8 2.3.2. Mt s thuc tnh thng dng ........................................................ 8 2.3.3. Mt s s kin thng dng........................................................... 10 2.4. Mt s control...................................................................................... 16 2.4.1. Textbox.......................................................................................... 16 2.4.2. RichTextBox.................................................................................. 25 2.4.3. DataGridView................................................................................ 32 2.4.4. ListView ........................................................................................ 56 2.5. User Control ........................................................................................ 78 2.6. Thao tc vi file XML ......................................................................... 78 2.7. Thao tc vi Registry........................................................................... 83 CHNG 3: LP TRNH C S D LIU .................................................. 86 3.1. Gii thiu ADO.NET ........................................................................... 86 3.2. Cc m hnh thao tc vi CSDL........................................................... 87
-1-
3.3. Kt ni n ngun d liu bng i tng Connection ........................ 88 3.4. Thc thi cu lnh SQL bng i tng Command ............................... 93 3.5. Truy vn v nhn v d liu vi DataReader ..................................... 101 3.6. Cp nht v truy vn d liu vi i tng DataAdapter ................... 104 3.7. M hnh DataSet ................................................................................ 107 3.8. i tng Parameter .......................................................................... 109 3.9. Rng buc d liu vi cc iu khin................................................. 113 3.10. S dng DataView trong sp xp v tm kim d liu..................... 113 3.11. LINQ .............................................................................................. 113 CHNG 4: CRYSTAL REPORT ............................................................... 114 4.1. Thit k bo co vi Crystal Report ................................................... 114 4.2. Np v hin th Report trong chng trnh ......................................... 122 4.3. Thit k Report ng ......................................................................... 123
-2-
t ng ny cn gii quyt hai li chung ca ng dng: thiu b nh v tham chiu b nh khng hp l. Trong khi runtime c thit k cho nhng phn mm ca tng lai, n cng h tr cho phn mm ngy nay v trc y. Kh nng hot ng qua li gia m ngun c qun l v m ngun khng c qun l cho php ngi pht trin tip tc s dng nhng thnh phn cn thit ca COM v DLL. Rutime c thit k ci tin hiu sut thc hin. Mc d CLR cung cp nhiu cc tiu chun dch v runtime, nhng m ngun c qun l khng bao gi c dch. C mt c tnh gi l Just-in-Time (JIT) bin dch tt c nhng m ngun c qun l vo trong ngn ng my ca h thng vo lc m n c thc thi. Khi , trnh qun l b nh xa b nhng phn mnh b nh nu c th c v gia tng tham chiu b nh cc b, v kt qu gia tng hiu qu thc thi. 1.2. Ngn ng trung gian - IL Nh chng ta bit, Intermediate Language hot ng nh l bn cht ca .NET Framework. L lp trnh vin C#, chng ta nn bit rng m C# s lun c dch sang Intermediate Language trc khi n c thc thi (tht vy, trnh bin dch C# ch dch sang m c qun). Chng ta hy cng khm ph cc tnh nng chnh ca IL, bt k ngn ng no hng .NET cng s h tr cc c tnh chnh ca IL. Sau y l nhng c tnh chnh ca Intermediate Language: Hng i tng v dng interfaces S tch bit gia kiu gi tr v kiu tham chiu nh kiu mnh Qun li thng qua cc ngoi l S dng cc thuc tnh
-4-
1.3.
.NET Framework l mt platform mi lm n gin vic pht trin ng dng trong mi trng phn tn ca Internet. .NET Framework c thit k y p ng theo quan im sau: cung cp mt mi trng lp trnh hng i tng vng chc, trong m ngun i tng c lu tr v thc thi mt cch cc b. Thc thi cc b nhng c phn tn trn Internet, hoc thc thi t xa. cung cp mt mi trng thc thi m ngun m ti thiu c vic ng gi phn mm v s tranh chp v phin bn. cung cp mt mi trng thc thi m ngun m m bo vic thc thi an ton m ngun, bao gm c vic m ngun c to bi hng th ba hay bt c hng no m tun th theo kin trc .NET. cung cp mt mi trng thc thi m ngun m loi b c nhng li thc hin cc script hay mi trng thng dch. lm cho nhng ngi pht trin c kinh nghim vng chc c th nm vng nhiu kiu ng dng khc nhau. Nh l t nhng ng dng trn nn Windows n nhng ng dng da trn web.
-5-
xy dng tt c cc thng tin da trin tiu chun cng nghip m bo rng m ngun trn .NET c th tch hp vi bt c m ngun khc.
-6-
Bc 2: Chn ng dng dng Windows Forms Application, chn ni lu tr Project (xem hnh) nhn OK.
-7-
2.2. 2.3.
Lp Control Form
2.3.1. Chc nng Form (hay cn gi iu khin Form) dng cha cc iu khin khc (Buttons, Label) 2.3.2. Mt s thuc tnh thng dng
Tn Name ngha Tn ca Form. Trong mt Project tn ca cc Form phi khc nhau. AcceptButton Gi tr m thuc tnh ny nhn l tn ca mt Button trn Form (Nu Form c cha button). Khi nu bn nhn phm Enter th s kin Click ca Button m bn chn c thc thi m khng cn nhn chut vo Button . Autosize Nhn mt trong hai gi tr True hay False - True: Khng cho php thay i kch thc Form m che i cc iu khin khc cha trn Form - False: Ngc li AutoSizeMode Cho php thay i kch thc ca Form hay khng? (Khi di chuyn chut vo cc mp ca Form m hin nn biu tng l cho php). V nhn mt trong hai gi tr BackColor BackGroundImage GrowOnly: Cho php v GrowAndShrink: Khng cho php
CancelButton
Gi tr m thuc tnh ny nhn l tn ca mt Button trn Form (Nu Form c cha button). Khi nu bn nhn phm ESC th s kin Click ca Button m bn chn c thc thi m khng cn nhn chut vo Button (tng t nh thuc tnh AcceptButton ).
ControlBox
Nhn mt trong hai gi tr True hay False True: Cho php cc cc nt: MaximizeBox, MinimizeBox, Close trn Titlebar xut hin False: Khng Cho php cc cc nt: MaximizeBox, MinimizeBox, Close trn Titlebar xut hin (Khi cc thuc tnh MaximizeBox, MinimizeBox ca Form cng mt i)
Font
Chn kiu Font ch cho Form (Khi tt c cc iu khin c thm vo Form s c thuc tnh Font ging nh thuc tnh Font ca Form)
ForeColor
FormBorderStyle HelpButton
Chn Style cho Form (C 7 la chn khc nhau). Nhn mt trong hai gi tr True hay False. True: Cho php xut hin Buton c du ? trn Titlebar (Vi iu kin: hai thuc tnh
phi t gi tr l
Thuc tnh ny s hay i km vi iu khin HelpProvider v sau Icon Chn mt Icon (c ui m rng l .ico) trn my tnh ca bn thay cho Icon mc nh ca Form m VS to ra
-9-
KeyPreview
Nhn mt trong hai gi tr True hay False True: Cho php cc s kin v bn phm ca Form (KeyUp, KeyDown, KeyPress ca Form) c hiu lc. False: Ngc li
MaximizeBox
Nhn mt trong hai gi tr True hay False True: Cho php nt MaximizeBox trn Titlebar c hiu lc False: Ngc li
Tng t nh thuc tnh MaximizeBox trong sut ca Form Nhn mt trong hai gi tr True hay False True: Cho php xut hin Icon ca Form False: Khng cho php xut hin Icon ca Form
ShowInTaskbar
Nhn mt trong hai gi tr True hay False True: Cho php hin Form di khay Taskbar False: Ngc li
StartPosition
V tr hin th ca Form so vi mn hnh h thng hay Form cha (5 la chn khc nhau)
Text WindowState
Gi tr Text ca Form Trng thi hin th ca Form khi chy (Khi bn nhn vo nt Run ca VS) (C 3 la chn khc nhau: n di khay Taskbar, m rng ht mn hnh).
- 10 -
AutoSizeChanged
Xy ra khi thuc tnh Autosize ca Form chuyn t True False hay ngc li l False True.
BackColorChanged Click
Xy ra khi thuc tnh BackColor ca Form thay i Xy ra khi ngi dng Click chut vo vng lm vic thuc Form
Xy ra khi mt iu khin c Add vo Form Xy ra khi mt iu khin b xa khi Form Xy ra khi thuc tnh Cursor ca Form thay i Xy ra khi ngi dng DoubleClick vo vng lm vic ca Form
FontChanged ForeColorChanged
Xy ra khi thuc tnh Font ca Form c s thay i Xy ra khi thuc tnh ForeColor ca Form c s thay i
FormClosed
FormClosing
Xy ra khi Form ang ng (2 s kin FormClosed v FormClosing thng dng trong lp trnh CSDL: khi xy ra s kin ny th ng kt ni CSDL)
KeyDown
Xy ra khi ngi dng nhn mt phm hay mt t hp phm (ty thuc vo x l ca chng ta)
Xy ra khi ngi dng nhn mt phm Xy ra khi ngi dng nh mt phm. Xy ra khi ngi dng nhn chut (mt trong 3 la chn: Tri, gia, phi)
- 11 -
MouseDoubleClick
Xy ra khi ngi dng DoubleClick chut vo mt vng lm vic ca Form(mt trong 3 la chn: Tri, gia, phi)
MouseDown MouseHover
Xy ra khi ngi dng nhn chut Xy ra khi ngi dng di chuyn vo cc vng lm vic Form
MouseLeave
MouseMove
Xy ra khi di chuyn chut trn mt vng lm vic thuc Form (nu Form c cha mt iu khin no , khi di chuyn chut trn iu khin ny th khng xy ra s kin MouseMove ca Form).
MouseUp
Xy ra khi ngi dng nh nhn chut (c th l chut tri, chut phi, chut gia - chut cun)
Move
StyleChanged
TextChanged
2.3.4. Minh ha
- 12 -
2.3.4.1. S kin FormClosed //S kin FormClosed - S kin ny c gi khi Form ng private void frmForm_FormClosed(object sender, FormClosedEventArgs e) { MessageBox.Show("S kin FormClosed c gi", "FormClosed",MessageBoxButtons.OK,MessageBoxIcon.Information); }
2.3.4.2. S kin FormClosing //S kin FormClosing xy ra khi Form ang ng private void frmForm_FormClosing(object sender, FormClosingEventArgs e) { if (MessageBox.Show("Bn c mun ng Form li hay khng?", "FormClosing", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.Yes) e.Cancel = false;// ng Form li else e.Cancel = true;//Khng ng Form na }
- 13 -
2.3.4.3.
S kin KeyPress
//S kin KeyPress private void frmForm_KeyPress(object sender, KeyPressEventArgs e) { //Nu khng ch r phm no c nhn th khi nhn bt c phm no s kin KeyPress ca Form u xy ra //Ch r phm no c nhn th pht sinh s kin KeyPress lm nh sau if (e.KeyChar = 'a') MessageBox.Show("S kin KeyPress xy ra khi bn nhn phm a"); } //S kin KeyUp tng t nh s kin KeyPress //S kin KeyDown xy ra khi nhn mt phm hay t hp phm
2.3.4.4.
S kin KeyDown private void frmForm_KeyDown(object sender, KeyEventArgs e) { //khi nhn mt phm bt k trn bn phm th s kin KeyPress c gi //ng thi s kin KeyDown cng c gi KeyPress l trng hp ring ca KeyDown //p dng: Nhn mt t hp phm th s kin KeyDown mi c gi //Nh Windows Media: Nhn Ctrl+F di chuyn bi tip theo - 14 -
if (e.KeyCode == Keys.F && e.Modifiers == Keys.Control) MessageBox.Show("S kin KeyDown c gi khi bn nhn Ctrl + F"); }
2.3.4.5. S kin MouseClick //S kin MouseClick private void frmForm_MouseClick(object sender, MouseEventArgs e) { //Nu bn khng mun bit ngi dng nhn chut TRI hay PHI hay GIA th khi nhn bt k //Chut no cng xy ra s kin MouseClick ca Form //Cn nu bn mun bt c s kin ngi dng nhn chut TRI, PHI, hay GIA lm th ny if (e.Button == MouseButtons.Left) MessageBox.Show("S kin MouseClick xy ra khi bn Click chut TRI"); else if (e.Button==MouseButtons.Middle) MessageBox.Show("S kin MouseClick xy ra khi bn Click chut GIA"); else if (e.Button==MouseButtons.Right) MessageBox.Show("S kin MouseClick xy ra khi bn Click chut PHI"); } //Cc s kin MouseDoubleClick, MouseDown, MouseUp... X l tng t - 15 -
2.4.
Mt s control
2.4.1. Textbox 2.4.1.1. Chc nng iu khin Textbox cho php bn nhp v hin th d liu. 2.4.1.2. Mt s thuc tnh thng dng
Tn AcceptsTab ngha Nhn mt trong hai gi tr True hay False True: Khi nhn phm Tab th con tr (Focus) ch di chuyn bn trong Textbox (Vi iu kin thuc tnh Multiline=True). False: Khi nhn Tab th Focus di chuyn qua li gia cc iu khin trn Form
Thuc tnh ny hay t bng True trong cc ng dng son tho vn bn Anchor AutoCompleteCustomSource AutoCompleteMode AutoComplete Source BackColor BorderStyle ContextMenuStrip t mu nn cho Textbox Chn kiu ng vin cho Textbox Chn Menu ng cnh khi nhn chut phi vo Textbox Dock V tr bm dnh v in y ca Textbox vi Form Font Chn kiu Font ch cho Textbox V tr neo u ca Textbox trn Form Ba thuc tnh ny ngha tng t nh ca thuc tnh ca iu khin Combobox
- 16 -
HideSelection
Nhn mt trong hai gi tr True hay False True: Khng cho php cc thuc tnh: SelectionStartc hiu lc. False: Ngc li
MaxLenght
Multiline
Nhn mt trong hai gi tr True hay False True: Cho php nhp v hin th gi tr ca Textbox trn nhiu dng (ngi dng c th nhn thy ton b gi tr Text ca n) False: Cho php nhp/hin th gi tr ca Textbox trn mt dng
PasswordChar
ReadOnly ScrollBars Cho php hin th thanh trt hay khng? (Vi iu kin thuc tnh Multiline=True mi nhn thy thanh cun) TabIndex Visible CanUndo Cho php Textbox hin th hay khng? Tr li hai gi tr True/False. True: c th Undo li c (nh Word) False: Ngc li SelectedText SelectionStart SelectionLength
- 17 -
Ch : Cc iu khin c rt nhiu thuc tnh ging nhau: Anchor, Dock, Font, ForeColor, Enabled, Visible, TabIndexV ngha cc thuc tnh ny l ging nhau vi tt c cc iu khin 2.4.1.3. Mt s phng thc thng dng
Tn AppendText ngha Ni mt chui (string) vo gi tr Text hin c ca Textbox Copy Cut Paste Focus Clear Select SelectAll Undo Chuyn Focus (con tr) vo TextBox Xa ton b Textbox Ly ra mt chui trong Textbox (xem Code) Ly tt c gi tr ca Textbox X l Undo nh Word X l phn ni dung bi en (nh Word)
- 18 -
2.4.1.5. Minh ha
- 19 -
2.4.1.5.1. Minh ha thuc tnh Text ca Textbox private void btTextbox_Click(object sender, EventArgs e) { //Trc khi gn thuc tnh text MessageBox.Show("Gi tr textbox trc khi gn: "+ textBox1.Text); //Gn gi tr Text textBox1.Text = "Cho cc bn"; //Sau khi gn MessageBox.Show("Gi tr textbox sau khi gn: " + textBox1.Text); }
2.4.1.5.2. Minh ha thuc tnh SelectedText private void btTextbox_Click(object sender, EventArgs e) { //Thuc tnh SelectedText ly ra mt chui m bn bi en (Chn) //Bn hy bi en mt vi t trong Textbox sau Click vo Button ny s hin th //Message thng bo t bn chn string str = textBox1.SelectedText; MessageBox.Show("T bn va chn (bi en) l: "+str); - 20 -
2.4.1.5.3. Minh ha thuc tnh SelectionStart v SelectionLength private void btTextbox_Click(object sender, EventArgs e) { //Thuc tnh ny dng trong tm kim rt nhiu //Thuc tnh SelectionStart: V tr bt u Select //Thuc tnh SelectionLength: Chiu di ca vng la chn //Ch : t thuc tnh HideSelection=False //V d: Tm kim xem gi tr ca Textbox c t no l cho hay khng. Nu c th n t Bi en t string str = "cho"; int i; i = textBox1.Text.LastIndexOf(str); if (i >= 0) { textBox1.SelectionStart = i; textBox1.SelectionLength = str.Length; } } - 21 -
2.4.1.5.4. Minh ha thuc tnh CanUndo v phng thc Undo private void btTextbox_Click(object sender, EventArgs e) { //Nu c th Undo (c ngha: Bn phi g vn bn vo Textbox ri sa, xa...) //Mi c th Undo li c if (textBox1.CanUndo) textBox1.Undo(); }
2.4.1.5.5. Minh ha phng thc Select private void btTextbox_Click(object sender, EventArgs e) { //C php chung: txtNoiDung.Select(Start, Length); //Mc ch ly v mt chui t t v tr no v chiu di ca chui dc chn (tt nhin: bi en vng ny). //-> Phng thc ny tng ng vi s dng 2 thuc tnh SelectionStart v SelectionLength //V d: txtNoiDung.Select(10, 5); //<-> 2 cu lnh ny //textBox1.SelectionStart = 10; - 22 -
//textBox1.SelectionStart = 5; }
2.4.1.5.6. Minh ha phng thc AppendText private void btTextbox_Click(object sender, EventArgs e) { //Gi tr Textbox trc khi gi phng thc MessageBox.Show("Trc: "+textBox1.Text); //Gi phng thc textBox1.AppendText("Khoa CNTT - UTEHY"); //Gi tr Textbox trc khi gi phng thc MessageBox.Show("Sau: " + textBox1.Text); }
2.4.1.5.7. X l ch cho php Textbox nhp s (s kin KeyPress ca Textbox) Cch 1 private void txtNoiDung_KeyPress(object sender, KeyPressEventArgs e) { if (e.KeyChar >= '0' && e.KeyChar <= '9') e.Handled = false;//Handled: c x l - 23 -
2.4.1.5.8. X l ch cho php Textbox nhp s (s kin KeyPress ca Textbox) Cch 2 private void txtNoiDung_KeyPress(object sender, KeyPressEventArgs e) { if (!Char.IsDigit(e.KeyChar) && !Char.IsControl(e.KeyChar)) e.Handled = true; //Char.IsDigit(e.KeyChar) --> //kim tra xem phm va nhp vo textbox c phi l k t s hay khng, hm ny tr v kiu bool //Char.IsContro(e.KeyChar) --> //kim tra xem phm va nhp vo textbox c phi l cc k t iu khin //(cc phm mi tn,Delete,Insert,backspace,space bar) hay khng, mc ch dng hm ny l cho php ngi dng xa s trong trng hp nhp sai. } S dng Textbox vit chng trnh son tho vn bn n gin (tham kho Notepad)
- 24 -
iu khin RitchTextBox dng lu tr v hin th vn bn theo nhiu nh dng khc nhau (nh dng chun l rtf) 2.4.2.2. Mt s thuc tnh thng dng iu khin RitchTextBox c rt nhiu cc thuc tnh ging Textbox ni ring v cc iu khin khc ni chung. ngha ca cc thuc tnh ny l ging nhau vi cc iu khin. y chng ta xt mt s thuc tnh khc ca RitchTextBox
Tn SelectedText ngha Ly v chui c la chn (chui m chng ta bi en) SelectionStart, SelectionLength Ly v mt chui vi v tr bt u v chiu di, hai thuc tnh ny thng i vi nhau SelectionFont Ly thng tin v Font ca mt chui c la chn (bi en) SelectionColor Ly thng tin v Color ca chui c bi en c la chn CanUndo Tr li hai gi tr True/False. True: c th Undo li c (nh Word) False: Ngc li
CanRedo
- 25 -
2.4.2.4. Minh ha Gi s c mt Textbox c tn l richTextBox1. Chng ta s minh ha RitchTextbox qua s kin click ca mt Button c tn l btrichTextBox.
- 26 -
Vic s dng cc thuc tnh SelectedText, SelectionStart, SelectionLength, CanUndo, CanRedo tng t nh TextBox (Xem li Code phn iu khin TextBox) 2.4.2.4.1. Minh ha thuc tnh SelectionFont private void btRichTextBox_Click(object sender, EventArgs e) { //S dng thuc tnh Font c th ly thng tin v Font ca vng Bi en (khng phi tt c) //Hoc: Thay i Font ca vng bi en //Trc ht ly thng tin v Font //InfoFont bao gm tt c cc thng tin: Style, Tn Font... string InfoFont = richTextBox1.SelectionFont.ToString(); MessageBox.Show(InfoFont); //Ch ly tn Font ca vng Bi en string FontName = richTextBox1.SelectionFont.Name.ToString(); MessageBox.Show("Vng bi en c Font l: " + FontName); //Ch ly Size ca vng Bi en string FontSize = richTextBox1.SelectionFont.Size.ToString(); MessageBox.Show("Vng bi en c Size l: " + FontSize); //................................................... } - 27 -
2.4.2.4.2. Chn Font cho vng bi en thng qua thuc tnh SelectionFont (Ch vng bi en) private void btRichTextBox_Click(object sender, EventArgs e) { FontDialog fo = new FontDialog(); //Hin th hp thoi if (fo.ShowDialog() == DialogResult.OK) { //Nu mun i Font mt on la chn th dng cu lnh ny richTextBox1.SelectionFont = fo.Font; //Cn nu mun i Font cho ton b RichTextBox th dng cu lnh ny //richTextBox1.Font = fo.Font; } }
2.4.2.4.3. Minh ha thuc tnh SelectionColor private void btRichTextBox_Click(object sender, EventArgs e) { //Thuc tnh ny ly v mu ca vng c la chn //Tng t nh thuc tnh SelectionFont - 28 -
2.4.2.4.4. t mu cho vng bi en thng qua thuc tnh SelectionColor private void btRichTextBox_Click(object sender, EventArgs e) { ColorDialog cl = new ColorDialog(); //Hin th hp thoi if (cl.ShowDialog() == DialogResult.OK) { //Nu mun i Font mt on la chn th dng cu lnh ny richTextBox1.SelectionColor = cl.Color; } } 2.4.2.4.5. Vic s dng cc phng thc: AppendText, Select, SelectAll, Undo, Redo, Undo tng t nh Textbox 2.4.2.4.6. Minh ha s dng phng thc LoadFile private void btRichTextBox_Click(object sender, EventArgs e) { - 29 -
//Load ni dung File C:\NET.rtf vo RitchTextBox //Tt nhin C ca bn phi tn ti file C:\NET.rtf richTextBox1.LoadFile(@"C:\NET.rtf"); //-> Thng s dng cng vi iu khin OpenFileDialog m mt file trn my }
2.4.2.4.7. Minh ha s dng phng thc SavaFile private void btRichTextBox_Click(object sender, EventArgs e) { //Lu ni dung RitchTextBox ra file richTextBox1.SaveFile(@"C:\File.rtf") //-> Thng s dng cng vi iu khin SaveFileDialog lu file vo mt ni bt k trn my } 2.4.2.4.8. Minh ha Phng thc Find private void btRichTextBox_Click(object sender, EventArgs e) { //Tm kim mt chui trong RichTextBox -> nu c th bi en kt qu tm thy //Ch : t thuc tnh HideSelection=False //rtfNoiDung.Find("Cho", 0, 100, RichTextBoxFinds.Reverse); - 30 -
//-> ng dng trong tm kim vn bn richTextBox1.Find("cho", 0, 100, RichTextBoxFinds.MatchCase); } S dng RitchTextBox vit chng trnh son tho vn bn n gin(tham kho WordPad)
- 31 -
2.4.3. DataGridView 2.4.3.1. Chc nng iu khin DataGridView dng hin th d liu. 2.4.3.2. Mt s khi nim lin quan n DataGridView
Hnh 1: V d v DataGirdView
- 32 -
DataGridView Mng 2 chiu C 2 cch truy xut n mt ( ly gi tr) trong DataGridView (cc bn ch hai cu lnh ny) Cch 1: Tn_DataGridView[Ch_s_ct, Ch_s_hng].Value
- 33 -
Cch 2: Tn_DataGridView.Rows[Ch_s_hng].Cells[Ch_s_Ct].Value
V d: C mt DataGridView nh sau:
Chng ta mun ly gi tr ca mt bi en chng ta c th s dng cu lnh sau (tn ca DataGridView l: dgSinhVienTK4): string str = dgSinhVienTK4[0, 2].Value.ToString(); Hoc string str = dgSinhVienTK4.Rows[2].Cells[0].Value.ToString();
- 34 -
t ng vin cho cc
Nhn mt trong hai gi tr True hay False True: Cho php hin th tiu cc ct False: Khng cho php hin th tiu cc ct
Columns
Lm vic vi ct (t tiu cho Headers, la chn kiu ct (Checkbox, Button, Image). Trong DataGridView mt ct c th l: Ct cc Button, Ct cc Checkbox
DataMember DataSource
Chn c s d liu hin th nn DataGridView Chn ngun d liu cho DataGridView (hai thuc tnh DataSource v DataMember hay i vi nhau)
GridColor
MultiSelect ReadOnly
Cho php/Khng cho php chn nhiu dng? Nhn mt trong hai gi tr True hay False True: Cho php thay i gi tr cc cc phn t (cc hay cc Cell). False: khng cho php thay i gi tr cc phn t.
RowHeadersBorderStyle RowHeaderVisible
Chn kiu vin cho cc Hng (Rows). Nhn mt trong hai gi tr True hay False True: Cho php hin th Headers ca hng(Ct u tin mp ngoi bn tri) False: Ngc li
- 35 -
2.4.3.5. Minh ha
- 36 -
cng mn hc: Cng ngh .NET Gi s chng ta c mt form c tn: frmDataGridView. Trn c cha mt s iu khin sau:
iu khin DataGridView c tn dataGridView1(Chng ta tt c cc thuc tnh ca dataGridView1vi gi tr mc nh). Button btCreate: minh ha vic to DataGridView vi s hng v s ct xc nh Button btRemove: Minh ha xa mt ct, mt hng trong DataGridView Button btGet: Minh ha vic ly s hng v s ct trong DataGridView Button btAddCombobox: Minh ha vic Add mt ct l Combobox vo DataGridView Button btAddCheck: Minh ha vic Add mt ct l Checkbox vo DataGridView
- 37 -
cng mn hc: Cng ngh .NET 2.4.3.5.1. To cc ct trong DataGridView (bng Code) //S kin Load ca Form private void frmDataGridView_Load(object sender, EventArgs e) { //t thuc tnh cho DataGridView thng qua m lnh dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;//Ch thuc tnh ny // thm cc ct vo DataGridView bn c th thm thng qua thuc tnh COLUMNS trn hp thoi Properties //Hoc bn c th thm bng Code dataGridView1.Columns.Add("clName", "H v Tn"); dataGridView1.Columns.Add("clQueQuan", "Qu qun"); dataGridView1.Columns.Add("clLop", "Lp"); dataGridView1.Columns.Add("clNgaySinh", "Ngay sinh"); //Thm mt hng mi vo (hng mi ny cha c d liu g) dataGridView1.Rows.Add(); //a d liu vo hng mi va to ra (t gi tr cho mt ) -> Cc bn ch c hai cch nh th ny dataGridView1[0, 0].Value = "Nguyn Vn Hi"; dataGridView1.Rows[0].Cells[1].Value = "Hng Yn"; dataGridView1[2, 0].Value = "TK4N1"; dataGridView1.Rows[0].Cells[3].Value = "29-03-1987"; - 38 -
cng mn hc: Cng ngh .NET } //Ht sau khi chy chng trnh: form frmDataGridView s c kt qu nh sau:
2.4.3.5.2. t s hng v s ct cho DataGridView //S kin Load ca Form private void btCreate_Click(object sender, EventArgs e) { //t s hng v s ct cho DataGridView (V d: thit k trong chi c Caro) //V d: To mt DataGridView vi 50 hng v 50 Ct dataGridView1.ColumnCount = 50; //Ch thuc tnh ny - 39 -
cng mn hc: Cng ngh .NET dataGridView1.RowCount = 50; //Ch thuc tnh ny //Thit lp rng cho cc for (int i = 0; i < 50; i++) { dataGridView1.Columns[i].Width = 15; dataGridView1.Rows[i].Height = 15; } } // xong ri. Gi th bn chy xem no
2.4.3.5.3. Xa mt hng (hay 1 ct, hay tt c cc hng cc ct) ca DataGridView private void brRemove_Click(object sender, EventArgs e) { //Tp cc hng, cc ct trong DataGridView l mt Collection //Nn n c y cc thuc tnh v phng thc ca mt Collection
//Xa hng th 1 (c ch s l 0) dataGridView1.Rows.RemoveAt(0); //Xa tt c cc hng: dataGridView1.Rows.Clear(); //Tt nhin nu chng ta c 2 hng th chng ta khng th thc hin cu lnh: dataGridView1.Rows.RemoveAt(2);
- 40 -
cng mn hc: Cng ngh .NET //Xa ct th 2 (c ch s l 1) dataGridView1.Columns.RemoveAt(1); //Xa tt c cc Ct: dataGridView1.Columns.Clear(); }
Rows Collection
- 41 -
Columns Collection 2.4.3.5.4. Ly v s hng v s ct hin c ca DataGridView private void btGet_Click(object sender, EventArgs e) { //Ly v s hng v s ct int i = dataGridView1.Rows.Count; //Ly v s hng int j = dataGridView1.Columns.Count;//Ly v s ct
//Thng bo string HC = "S hng: " + i.ToString() +'\n' + "S ct: " + j.ToString(); - 42 -
2.4.3.5.5. Add thm mt ct l Combobox vo DataGridView private void frmDataGridView_Load(object sender, EventArgs e) { //t thuc tnh cho DataGridView thng qua m lnh dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;//Ch thuc tnh ny
// thm cc ct vo DataGridView bn c th thm thng qua thuc tnh COLUMNS trn hp thoi Properties //Hoc bn c th thm bng Code dataGridView1.Columns.Add("clName", "H v Tn"); dataGridView1.Columns.Add("clQueQuan", "Qu qun"); dataGridView1.Columns.Add("clLop", "Lp"); dataGridView1.Columns.Add("clNgaySinh", "Ngay sinh");
- 43 -
cng mn hc: Cng ngh .NET //a d liu vo hng mi va to ra (t gi tr cho mt ) -> Cc bn ch c hai cch nh th ny dataGridView1[0, 0].Value = "Nguyn Vn Hi"; dataGridView1.Rows[0].Cells[1].Value = "Hng Yn"; dataGridView1[2, 0].Value = "TK4N1"; dataGridView1.Rows[0].Cells[3].Value = "29-03-1987"; } //Phng thc a d liu vo Combobox private static void AddData(ref DataGridViewComboBoxColumn comboboxColumn) { { comboboxColumn.Items.AddRange( new string[] { "SV1", "SV2", "SV3"}); } } // Add thm mt ct l Combobox vo DataGridView!!! private void btAddCombobox_Click(object sender, EventArgs e) { //Khai bo mng lm DataSource cho Combobox string[] Mang = { "SV1", "SV2", "SV3" }; - 44 -
//t thng s v a d liu vo Combobox comboboxColumn.HeaderText = "Ct Combobox"; AddData(ref comboboxColumn);// Cu lnh ny<->comboboxColumn.DataSource = Mang;
// Add mt ct vo v tr cui cng ca DataGridView (Cha c d liu). comboboxColumn = new DataGridViewComboBoxColumn(); comboboxColumn.HeaderText = "Ct Combobox "; dataGridView1.Columns.Add(comboboxColumn);
//S dng phng thc Add m cha c thng s comboboxColumn.DisplayIndex = 3; //Th mc nh a vo cui DataGridView cn nu c //comboboxColumn.DisplayIndex = 3; th a vo ct 3 - 45 -
2.4.3.5.6.
//S kin Load ca Form private void frmDataGridView_Load(object sender, EventArgs e) { //t thuc tnh cho DataGridView thng qua m lnh dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;//Ch thuc tnh ny
- 46 -
cng mn hc: Cng ngh .NET // thm cc ct vo DataGridView bn c th thm thng qua thuc tnh COLUMNS trn hp thoi Properties //Hoc bn c th thm bng Code dataGridView1.Columns.Add("clName", "H v Tn"); dataGridView1.Columns.Add("clQueQuan", "Qu qun"); dataGridView1.Columns.Add("clLop", "Lp"); dataGridView1.Columns.Add("clNgaySinh", "Ngay sinh");
//a d liu vo hng mi va to ra (t gi tr cho mt ) -> Cc bn ch c hai cch nh th ny dataGridView1[0, 0].Value = "Nguyn Vn Hi"; dataGridView1.Rows[0].Cells[1].Value = "Hng Yn"; dataGridView1[2, 0].Value = "TK4N1"; dataGridView1.Rows[0].Cells[3].Value = "29-03-1987"; } //Add private void btAddCheckbox_Click(object sender, EventArgs e) { - 47 -
cng mn hc: Cng ngh .NET DataGridViewCheckBoxColumn ch = new DataGridViewCheckBoxColumn(); { ch.HeaderText = "Check"; //Chn v tr hin th ca ct: Ct th 0, 1 hay 2... ch.DisplayIndex = 3;
//C cho php Chn nhiu hay khng? (Ch Check c vo mt Checkbox) ch.FalseValue = true; //Nu cho php chn nhiu th dng lnh ny: ch.TrueValue = true; } //Chn vo DataGridView dataGridView1.Columns.Add(ch); // <-> dgSinhVienTK5.Columns.Insert(3,ch); } Sau khi chy c kt qu nh sau:
- 48 -
2.4.3.5.7.
- 49 -
cng mn hc: Cng ngh .NET Yu cu: Chng ta mun ly ra gi tr ca mt (Cells) bt k m bn chn Gii quyt: S dng s kin CellClick ca iu khin DataGridView nh sau: //CC BN HC CNG NGH NET HY NH ON M NY private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e) { //Ly v v tr ca Hng v ct ang c chn //Hai cu lnh ny QUAN TRNG cc bn ch int Hang = e.RowIndex; //<-> int HangHienTai = dataGridView1.CurrentRow.Index; int Cot = e.ColumnIndex;
//Ly ra v tr (Hng v ct) m bn chn string ViTriBanChon = '\n' + "Hng: " + Hang.ToString() + '\n' + "Ct: " + Cot.ToString(); MessageBox.Show("V tr ang chn: " + ViTriBanChon);
//Ly ra gi tr ca (Cells) m bn chn string GiaTri = dataGridView1[Cot, Hang].Value.ToString(); //Hoc: string GiaTri = dataGridView1.Rows[Hang].Cells[Cot].Value.ToString(); MessageBox.Show(" bn chn c gi tr: "+GiaTri); //Gi cc bn chy th xem no? ^.^ - 50 -
2.4.3.5.8.
Bt s kin SelectedIndexChanged ca ct l combobox //Khai bo kiu ct DataGridViewComboBoxColumn cbcl; private void frmDataGridView_Load(object sender, EventArgs e) { //t mt s thuc tnh thng qua Code (sau khi Add cc ct vo) dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;
///Add thm cc ct vo dataGridView1.Columns.Add("clMaSV", "M SV"); dataGridView1.Columns.Add("clTen", "Tn"); dataGridView1.Columns.Add("clLop", "Lp"); dataGridView1.Columns.Add("clNgaySinh", "Ngy sinh"); - 51 -
///Add thm mt ct vo DataGridView (Cha c gi tr) dataGridView1.Rows.Add(); dataGridView1[0, 0].Value = "M01"; dataGridView1[1, 0].Value = "Nguyn Tun Anh"; dataGridView1[2, 0].Value = "Tk4N1"; dataGridView1[3, 0].Value = "13-02-1986"; dataGridView1[4, 0].Value = "Hng Yn";
//Thm mt hng mi - Cch 2 string[] str = new string[5] { "M02", "Nguyn Th Bch", "TK4N2", "14-02-1985", "Hng Yn"}; dataGridView1.Rows.Add(str);
///Phnng thc Add, remove...Mt ct hay hng ///Ly gi tr ca mt bt k: S kin CellClick ///Ly ra gi tr ca mt v hin th nn cc textbox ///Ly s kin ca ct l Combobox ///----------------------------------------------------------------------------------- 52 -
cng mn hc: Cng ngh .NET //Add thm mt ct l combobox vo string[] Mang = new string[5] { "M01", "M02", "M03", "M04", "M05" }; // cbcl= new DataGridViewComboBoxColumn(); cbcl.HeaderText = "Ct Combobox"; cbcl.Items.AddRange(Mang); dataGridView1.Columns.Add(cbcl);//Add vo v tr cui cng (Ct cui cng) cbcl.DisplayIndex = 2; //Add+DisplayIndex th a vo v tr ch nh <->Insert (nhng # Insert ch: ch s vn l cui cng) //Cn hin th so ta ch nh
//Add thm mt ct vi v tr ch nh: Insert cbcl = new DataGridViewComboBoxColumn(); cbcl.HeaderText = "Ct Combobox2"; cbcl.Items.AddRange(Mang); dataGridView1.Columns.Insert(0, cbcl); } //-----------------------------------------------------------------------------------------------------------------//Ly v s kin ca Combobox (Ct trong DataGridView) - 53 -
cng mn hc: Cng ngh .NET ComboBox Combo; int i = 1; void SuKien(object sender, EventArgs e) { string str = Combo.Text; if(i==1) { MessageBox.Show(str); i = 0; } }
//Quan trng private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e) { if (e.Control is ComboBox) { Combo = (ComboBox)e.Control; Combo.SelectedIndexChanged += new EventHandler(SuKien); - 54 -
cng mn hc: Cng ngh .NET i = 1; } } //S kin CellClick ly v gi tr ca mt private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e) { int Cot = e.ColumnIndex; int Hang = e.RowIndex; if (dataGridView1[Cot, Hang].Value != null) {
- 55 -
2.4.4. ListView 2.4.4.1. Chc nng iu khin ListView dng trnh by cc phn t dng danh sch vi nhiu hnh dng khc nhau. 2.4.4.2. Mt s khi nim lin quan n ListView
- 57 -
- 58 -
Columns
Tp cc ct trong ListView l mt Collection. Thng qua thuc tnh ny c th thm cc ct vo Listview (C th thm cc ct vo Listview thng qua giao din ha hay c th vit Code. Ch : Phi t thuc tnh View l Detail th bn mi c th nhn thy cc ct ny)
ContextMenuStrip
Gn mt menu ng cnh vi iu khin ListView (khi nhn chut phi vo Listview th s hin th menu ny)
FullRowSelect
Nhn mt trong hai gi tr True hay False True: Cho php chn (bi en) c hng (ca phn t ang c chn. Ch : Thuc tnh View = Detail) False: Ngc li
GridLines
Nhn mt trong hai gi tr True hay False True: Hin th li bao quanh v ngn cch cc hng (Ch c hiu lc nu thuc tnh View = Detail) False: Ngc li
Group
Khai bo nhm phn loi cc phn t sau khi trnh by trn iu khin Listview
HeaderStyle
y l thuc tnh cho php chn Style cho Listview trong ch View l Report
- 59 -
Items
L mt Collection. Cho php to ra cc gi tr cho cc hng, ct trong Listview (tt nhin c th dng giao din ha hay vit Code)
LabelEdit
Nhn mt trong hai gi tr True hay False True: Cho php thay i (sa) Text ca cc phn t (cc ). False: Ngc li
LabelWap
Nhn mt trong hai gi tr True hay False True: Chui DHSPKTHY s t ng xung hng khi chiu di khng trnh by False: Ngc li
MultiSelect
Nhn mt trong hai gi tr True hay False True: Cho php chn nhiu hng (ListviewItem). Mc nh l True False: Khng cho php chn nhiu hng
LargeImageList
i tng ImageList cha danh sch cc Image theo ch s (Index) t 0 n n-1. c s dng nu thuc tnh View l LargeIcon
SmallImageList
i tng ImageList cha danh sch cc Image theo ch s (index) t 0 n n-1. c s dng nu thuc tnh View l SmallIcon
Scrollable
Nhn mt trong hai gi tr True hay False True: Cho php xut hin thanh trt trong Listview (Khi s ListViewItem nhiu v vt qua chiu cao ca ListView) False: Ngc li
Sorting
Sp xp gi tr cc hng (ListViewItem) trong ListView (Ch c hiu lc nu thuc tnh View l Detail). Thuc
- 60 -
tnh ny nhn mt trong cc gi tr sau None: Khng Sp xp Ascending: Sp xp tng Descending: Sp xp gim SelectedItems CheckedItems Tr v danh sch cc phn t c chn (bi en) Tr v danh sch cc phn t c check (tt nhin thuc tnh CheckBoxes = True) View Cc kiu Hin th trn ListView. Thuc tnh View c th nhn mt s gi tr sau: LargeIcon SmallIcon List Detail Title Mc nh l: LargeIcon
- 61 -
2.4.4.6. Minh ha
- 62 -
cng mn hc: Cng ngh .NET Gi s chng ta c mt form c tn: frmListView. Trn c cha mt s iu khin sau: iu khin ListView c tn listView1 (Chng ta tt c cc thuc tnh ca listView1 vi gi tr mc nh). Button btCheck: minh ha vic duyt cc hng c check trn ListView Buttonbt RemoveAtColumns: Minh ha xa mt ct trong ListView Buttonbt RemoveAtItems: Minh ha xa mt hng trong ListView Buttonbt ShowFile: Minh ha hin th tt c cc file trong mt th mc nn ListView Button btGroup: Minh ha v Group trong ListView
Chng ta s minh ha s dng ListView qua s kin Click ca cc button trn. 2.4.4.6.1. To cc ct, hng cho ListView bng code private void frmListView_Load(object sender, EventArgs e) { //t mt s thuc tnh cho iu khin ListView1 bng code //Bn ch c th nhn thy cc ct nu t thuc tnh View=Detail listView1.View = View.Details; listView1.GridLines = true; listView1.CheckBoxes = true;//Hin th checkbox: cc bn xem kt qu hinhg minh ha.
//Thm 4 ct vo Listview //C th thm ct vo ListView theo cch ny listView1.Columns.Add("H v tn", 100, HorizontalAlignment.Center); - 63 -
cng mn hc: Cng ngh .NET listView1.Columns.Add("Qu qun", 100, HorizontalAlignment.Center); listView1.Columns.Add("Lp", 100, HorizontalAlignment.Center); //Cch 2: C th thm vo theo cch ny: S dng ColumnHeader ColumnHeader ch = new ColumnHeader("chNgaySinh"); ch.Text = "Ngy sinh"; ch.TextAlign = HorizontalAlignment.Center; ch.Width = 100; listView1.Columns.Add(ch); //Thm hng th nht vo ListView string[] Them = new string[] { "Nguyn Vn Hi", "Hng Yn", "TK4N1", "29-03-1987" }; ListViewItem lv = new ListViewItem(Them); listView1.Items.Add(lv);
//Thm hng th 2 string[] Them2 = new string[] { "Nguyn Vn Hnh", "H Ni", "TK4N1", "24-04-1987" }; ListViewItem lv2 = new ListViewItem(Them2); listView1.Items.Add(lv2); //Thm hng th 3 string[] Them3 = new string[] { "Phm Th Hnh", "Hi Dng", "TK4N1", "04-10-1988"}; - 64 -
cng mn hc: Cng ngh .NET ListViewItem lv3 = new ListViewItem(Them3); listView1.Items.Add(lv3);
//Thm hng th 4 string[] Them4 = new string[] { "V Th Ho", "Bc Ninh", "TK4N1", "25-12-1987" }; ListViewItem lv4 = new ListViewItem(Them4); listView1.Items.Add(lv4); } Sau khi chy c hnh nh sau:
- 65 -
cng mn hc: Cng ngh .NET 2.4.4.6.2. Duyt xem nhng hng no c Check private void btCheck_Click(object sender, EventArgs e) { //Bn phi to ra mt Listview nh mc 7.1 trc MessageBox.Show("Tn cc sinh vin c Check l","Check",MessageBoxButtons.OK); //Duyt cc phn t c Check thng qua thuc tnh CheckedItems foreach (ListViewItem lvi in listView1.CheckedItems) { //Ly v phn t th my ( th my) ca ListViewItem (ca 1 hng): s dng SubItems //DataGridView <-> ListView MessageBox.Show(lvi.SubItems[0].Text); } //Gi th bn chy v check th vi hng thy r kt qu }
2.4.4.6.3.
Xa mt Ct ti v tr no
private void btRemoveAtColumns_Click(object sender, EventArgs e) { //Ch : Tp cc column trong Listview l mt Collection nn c y cc phng thc ca mt Collection. - 66 -
cng mn hc: Cng ngh .NET //V d: Xa mt ct v tr no listView1.Columns.RemoveAt(1); //Gi th bn chy v nhn vo Button ny thy kt qa xem cc kt qu }
- 67 -
cng mn hc: Cng ngh .NET Hon ton tng t nh xa mt ct private void btRemoveAtItems_Click(object sender, EventArgs e) { //Ch : Tp cc Items trong Listview l mt Collection nn c y cc phng thc ca mt Collection. //V d: Xa mt ct v tr no (tt nhin bn phi to ra mt listview vi cc gi tr nh mc 7.1) listView1.Items.RemoveAt(1); //Gi th bn chy v nhn vo Button ny xem cc kt qu }
Hnh 7.4: Items Collection 2.4.4.6.5. Duyt tt c cc file trong mt th mc v hin th nn ListView - 68 -
cng mn hc: Cng ngh .NET private void btShowFile_Click(object sender, EventArgs e) { //Listview (listView1) ny hin th tt c cc File trong C:\WINDOWS //Bn c th dng hp thoi FolderBrowserDialog duyt file trong th mc bt k m bn chn //Phng thc Clear xa ton b Listview listView1.Clear();
//Chn mt s thuc tnh cho Listview thng qua m lnh listView1.View = View.Details; listView1.FullRowSelect = true;//Cho php chn c hng nh hnh kt qu di listView1.GridLines = true;
//Add cc ct vo Listview bng m lnh //Mi file c cc c tnh ca file: Tn, kch thc, kiu file (ReadOnly, System...) nn chng ta to ra cc ct tng ng listView1.Columns.Add("Number", 100, HorizontalAlignment.Left); listView1.Columns.Add("Name", 300, HorizontalAlignment.Left); listView1.Columns.Add("Size", 150, HorizontalAlignment.Left); listView1.Columns.Add("Type", 100, HorizontalAlignment.Left);
- 69 -
cng mn hc: Cng ngh .NET //Nn khai bo i tng DirectoryInfo duyt file //DirectoryInfo l mt lp nm trong System.IO DirectoryInfo dir = new DirectoryInfo(@"C:\WINDOWS");
//Gn cc thnh phn cho lvi qua thuc tnh SubItems.Add lvi = new ListViewItem(i.ToString()); lvi.SubItems.Add(f.Name); - 70 -
cng mn hc: Cng ngh .NET lvi.SubItems.Add(f.Length.ToString()); lvi.SubItems.Add(f.Attributes.ToString()); //Sau khi gn phi Add vo Listview listView1.Items.Add(lvi); } //Ht }
2.4.4.6.6.
cng mn hc: Cng ngh .NET private void btGroup_Click(object sender, EventArgs e) { // tng: Chng ta mun a tt c cc file c cng thuc tnh vo mt nhm //lm vic vi nhm cc bn ch i tng ListViewGroup //Xa Listview trc listView1.Clear();
//Add cc ct vo Listview bng m lnh listView1.Columns.Add("Number", 100, HorizontalAlignment.Left); listView1.Columns.Add("Name", 300, HorizontalAlignment.Left); listView1.Columns.Add("Size", 150, HorizontalAlignment.Left); - 72 -
//Add 3 nhm - Group vo Listview gArchive = new ListViewGroup("Archive"); gSystem = new ListViewGroup("System"); gNormal = new ListViewGroup("Normal"); listView1.Groups.Add(gArchive); listView1.Groups.Add(gSystem); listView1.Groups.Add(gNormal);
//Listview ny hin th tt c cc File trong C:\WINDOWS //Nn khai bo i tng DirectoryInfo DirectoryInfo dir = new DirectoryInfo(@"C:\WINDOWS");
//Duyt file v a vo Group cc file cng thuc tnh foreach (FileInfo f in dir.GetFiles("*.*")) { i++; //Gn cc thnh phn cho lvi qua thuc tnh SubItems.Add lvi = new ListViewItem(i.ToString()); lvi.SubItems.Add(f.Name); lvi.SubItems.Add(f.Length.ToString()); //Ly v thuc tnh tp tin v x l ThuocTinhFile = f.Attributes.ToString(); lvi.SubItems.Add(ThuocTinhFile); //Nhm tp tin Archive if (ThuocTinhFile.StartsWith("Archive")) gArchive.Items.Add(lvi); //Nhm tp tin Archive if (ThuocTinhFile.StartsWith("System")) gSystem.Items.Add(lvi); - 74 -
cng mn hc: Cng ngh .NET //Nhm tp tin Archive if (ThuocTinhFile.StartsWith("Normal")) gNormal.Items.Add(lvi); //Sau khi gn phi Add vo Listview listView1.Items.Add(lvi); } //Ht- Kt qu xem hnh di }
Chng ta mun ly thng tin v sinh vin Phm Th Hnh bn c th s dng on code sau: private void listView1_ItemActivate(object sender, EventArgs e) { ListViewItem lvi = listView1.FocusedItem; MessageBox.Show(lvi.Text);//Ly ra gi tr text u tin
- 76 -
cng mn hc: Cng ngh .NET //Ly v ct th 1 - Ct Qu qun (Ct trng ListView c ch s bt u = 0) string Cot1 = lvi.SubItems[1].Text; MessageBox.Show("Gi tr ct th 1: " + Cot1);
//Ly v ct th 2 - Ct Lp string Cot2 = lvi.SubItems[2].Text; MessageBox.Show("Gi tr ct th 2: " + Cot2); //Gi th bn chy v Click vo mt hng xem xem kt qu //ng dng: Thng ng dng trong lp trnh CSDL: Hin h tt c cc cc thng tin (sinh vin ch hn) //nn ListView. khi ngi dng chn mt hng trn ListView th hin th cc gi tr tng ng nn //Cc Textbox. khi bn c th chnh sa cc thng tin v Update vo CSDL.... //................ }
- 77 -
2.5. 2.6.
2.6.1. XML l g? XML vit tt ca ch eXtensible Markup Language (ngn ng nng cp c th m rng) l mt b qui lut v cch chia mt ti liu ra lm nhiu phn, ri nh du v rp cc phn khc nhau li d nhn din chng. T hp Web ton cu W3C gi XML l "mt c php thng dng cho vic biu th cu trc trong d liu". D liu c cu trc tham chiu n d liu c gn nhn cho ni dung, ngha, hoc cng dng. XML c cu trc ging nh HTML tuy nhin HTML s dng nhng th c nh ngha trc (trong mt ti liu html khng th s dng th do ngi dng nh ngha), cn trong trang XML hon ton c th s dng nhng th do ngi dng nh ngha.
2.6.2. C php XML Mt trang XML phi tun th cc quy lut sau. 1. Mt trang XML phi bt u bng XML declaration (v d: <?xml
version="1.0" encoding="utf-8" ?>)
2. Phi c mt root (gc) Element duy nht, gi l Document Element, n cha tt c cc Elements khc trong ti liu. 3. Mi Child Element phi nm trn bn trong Element cha ca n. 4. Mi opening Tag phi c mt closing Tag ging nh n (Nu Tag no khng cha g gia th phi chm dt bng "/>", th d nh <BR/>, <HR/>). opening Tag v closing Tag phi c nh vn y nh nhau, ch hoa hay ch thng.
- 78 -
5. Cc Tag khng c xen k nhau (th d nh <Class>TK6<Lop>TK6</Class></Lop> l bt hp l v <Lop> nm trong Tag Class). 6. Gi tr Attribute trong XML phi c gi gia mt cp ngoc kp 2.6.3. c/ghi file XML trong C# 2.6.3.1. Ghi d liu ra file XML Trong C# ghi d liu ra file XML chng ta c th s dng 1 cc i tng sau: XmlTextWriter XmlWriter XmlDocument Minh ha: to trang XML SinhVien.xml c cu trc nh bn di chng ta c th s dng XmlTextWriter hay XmlDocument (trc khi s dng cc i tng ny phi khai bo namespace using System.Xml;).
Trang SinhVien.xml
S dng i tng XmlTextWriter: XmlTextWriter xmlText = new XmlTextWriter("SinhVien.xml", null); //Ghi ch thch xmlText.WriteComment("c ra file XML"); //Ghi d liu: 1 lp c nhiu sinh vin (tn, nm sinh) xmlText.WriteStartElement("Lop"); //Bn ghi th nht xmlText.WriteStartElement("SinhVien"); xmlText.WriteAttributeString("ID","1"); xmlText.WriteStartElement("Ten"); - 79 -
cng mn hc: Cng ngh .NET xmlText.WriteString("Hong Quc Vit"); xmlText.WriteEndElement();//</Name> xmlText.WriteStartElement("NamSinh"); xmlText.WriteValue(1985); xmlText.WriteEndElement(); xmlText.WriteEndElement(); //Bn ghi th 2 xmlText.WriteStartElement("SinhVien"); xmlText.WriteAttributeString("ID", "2"); xmlText.WriteStartElement("Ten"); xmlText.WriteString("Nguyn Anh Tun"); xmlText.WriteEndElement(); xmlText.WriteStartElement("NamSinh"); xmlText.WriteValue(1986); xmlText.WriteEndElement(); xmlText.WriteEndElement(); //ng file xmlText.Close(); S dng i tng XmlDocument
XmlDeclaration xmlDec = xmlDoc.CreateXmlDeclaration("1.0", "utf-8", null);
//To Node gc <->Class XmlElement LopNode = xmlDoc.CreateElement("Lop");//Root Node xmlDoc.InsertBefore(xmlDec, xmlDoc.DocumentElement); xmlDoc.AppendChild(LopNode);
//To bn ghi th nht XmlElement SinhVienNode =xmlDoc.CreateElement("SinhVien"); SinhVienNode.SetAttribute("ID", "1"); LopNode.AppendChild(SinhVienNode); //To 2 node con cho bn ghi th nht v set gi tr XmlElement TenNode = xmlDoc.CreateElement("Ten"); XmlElement NamSinhNode = xmlDoc.CreateElement("NamSinh"); TenNode.InnerText = "Hong Quc Vit";
- 80 -
//To bn ghi th hai XmlElement SinhVienNode2 = xmlDoc.CreateElement("SinhVien"); SinhVienNode2.SetAttribute("ID", "2"); LopNode.AppendChild(SinhVienNode2); //To 2 node con cho bn ghi th nht v set gi tr XmlElement TenNode2 = xmlDoc.CreateElement("Ten"); XmlElement NamSinhNode2 = xmlDoc.CreateElement("NamSinh"); TenNode2.InnerText = "Nguyn Anh Tun"; NamSinhNode2.InnerText = "1986"; SinhVienNode2.AppendChild(TenNode2); SinhVienNode2.AppendChild(NamSinhNode2);
Ch : vic s dng i tng XmlWriter hon ton tng t nh vic s dng i tng XmlTextWriter 2.6.3.2. c d liu t file XML c d liu t file xml chng ta c th s dng mt trong cc i tng sau: XmlTextReader XmlReader Minh ha: c ni dung ca file SinhVien.xml trn v hin th thng tin (tn, nm sinh) ca tng sinh vin (MessageBox). y chng ta s dng i tng XmlTextReader. Vic s dng i tng XmlReader l hon ton tng t.
- 81 -
string strSinhVien = ""; string strTenNode = ""; // XmlTextReader read = new XmlTextReader("SinhVien.xml"); // while (read.Read()) { switch (read.NodeType) { case XmlNodeType.Element: strTenNode = read.Name; break; case XmlNodeType.Text: switch (strTenNode) { case "Ten": strSinhVien += read.Value; strSinhVien += ",";//Hai thng tin ngn cch nhau bi du , break; case "NamSinh": strSinhVien += read.Value; MessageBox.Show(strSinhVien);//In tng bn ghi strSinhVien = ""; break; } break; } }
Khi chy on code ny (qua s kin click ca node button) th s hin th ra hai MessageBox
- 82 -
2.7.
Thao tc vi Registry
2.7.1. Gii thiu v Registry Registry l mt c s d liu dng lu tr thng s k thut ca Windows. N ghi nhn tt c cc thng tin khi bn thay i, chnh sa trong Menu Settings, Control Panel.... Trong Win95 & 98, Registry c ghi trong 2 file: user.dat v system.dat trong th mc Windows. Trong Windows Me, Registry c lu trong file Classes.dat trong th mc Windows. Trong Win2K Registry c lu trong th mc "Windows\System32\Config". Registry c th chnh sa trc tip, lm thay i cc thng s thng qua trnh chnh sa Registry Editor. Chy Registry Editor bng cch g regedit vo ca s Run (Start run regedit)
Registry lu tt c cc thng tin v phn cng, phn mm, nhng la chn ca ngi dng....kim sot c ni dung ca Registry l yu cu tt yu bn s dng PC mt cch khoa hc, hiu su hn v mi trng lm vc ca Windows. Mun tin xa hn trong k thut lp trnh trn nn Windows, cch bo mt, cracking, hacking bn cn phi c hiu bit nht nh v Registry. 2.7.2. Cu trc Registry ca Windows
- 83 -
Registry c cu trc cy, ging cu trc th mc. Thng thng c su nhnh chnh. Mi nhnh c giao him v lu gi nhng thng tin ring bit. Trong cc nhnh chnh c rt nhiu nhnh con. Nhng nhnh con ny cng c lu gi nhng thng tin ring bit. HKEY_CLASSES_ROOT: Lu nhng thng tin dng chung cho ton b h thng. HKEY_CURRENT_USER: Lu nhng thng tin cho ngi dng ang Logon HKEY_LOCAL_MACHINE: Lu nhng thng tin v h thng, phn cng, phn mm. HKEY_USERS: Lu nhng thng tin ca tt c cc User, mi user l mt nhnh vi tn l s ID ca user HKEY_CURRENT_CONFIG: Lu thng tin v phn cng hin ti ang dng. HKEY_DYN_DATA: y cng l mt phn ca nhnh
HKEY_LOCAL_MACHINE Registry s dng mt s kiu d liu sau: REG_BINARY: Kiu nh phn REG_DWORD: Kiu Double Word REG_EXPAND_SZ: "%SystemRoot%" REG_MULTI_SZ: Kiu chui c bit REG_SZ: Kiu chui chun Kiu chui m rng c bit. VD:
2.7.3. Thao tc vi Registry trong C# Trong C# thao tc vi registry: c, ghi th chng ta s dng i tng RegistryKey (phi khai b namespace using Microsoft.Win32 trc khi s dng i tng ny)
- 84 -
2.7.3.2. Ly gi tr mt key
const string Path = @"Software\Microsoft\Windows\CurrentVersion\Run"; RegistryKey key = Registry.CurrentUser.OpenSubKey(Path, true); string s = (string)key.GetValue("UTEHY "); MessageBox.Show(s);//UTEHY c to mc 1.7.3.1
2.7.3.3. Xa mt Key
const string Path = @"Software\Microsoft\Windows\CurrentVersion\Run"; RegistryKey key = Registry.CurrentUser.OpenSubKey(Path,true); key.DeleteValue("UTEHY"); //UTEHY c tp mc 1.7.3.1
- 85 -
V tr ca ADO.NET trong kin trc ca .net Framework ADO.NET l mt tp cc lp nm trong b th vin lp c s ca .NET Framework, cho php cc ng dng Windows (nh C#, VB.NET) hay ng dng web (nh ASP.NET) thao tc d dng vi cc ngun d liu. Mc tiu chnh ca ADO.NET l: Cung cp cc lp thao tc CSDL trong c hai mi trng l phi kt ni (Disconected data) v kt ni (Connected data). Tch hp cht ch vi XML (Extensible Markup Language) Tng tc vi nhiu ngun d liu thng qua m t d liu chung. Ti u truy cp ngun d liu (OleDb & SQL server). Lm vic trn mi trng Internet (mi trng phi kt ni Disconnected eviroment). Cc lp ca ADO.NET c t trong Namespace l System.Data. ADO.NET bao gm 2 Provider (2 b th vin) (thng dng) thao tc vi cc CSDL l: OleDb Provider (nm trong System.Data.OleDb) dng truy xut n bt k CSDL no c h tr OleDb.
- 86 -
SQL Provider (nm trong System.Data.SQLClient) chuyn dng truy xut n CSDL SQL Server. 3.2. Cc m hnh thao tc vi CSDL ADO.NET c 5 thnh phn chnh. Connection Command DataReader DataAdapter DataSet ADO.NET cho php lm vic vi c s d liu c hai ch , ch Kt ni (Connected) v phi kt ni (Disconnected). Trong ch Connected th mi khi thao tc (nh sa, xa, thm) th u i hi ng dng phi kt ni v thao tc trc tip vi c s d liu (CSDL). Ba i tng Connection, Command v DataReader: cho php lm vic ch Connected Cn trong ch Disconnected th vn c th thm, sa, xa d liu trn i tng cc b, khng nht thit phi kt ni ngay n CSDL. Cc i tng DataAdapter, Connection, Command v Dataset lm vic ch Disconnected
3.3.
3.3.1. Chc nng i tng Connection c nhim v thc hin kt ni n C s d liu cc i tng nh Command thao tc vi CSDL thng qua Connection ny. i tng Connection c hai phng thc hay dng l Open() m kt ni ti CSDL v Close() ng kt ni ti CSDL. 3.3.2. Khai bo Chng ta c mt s cch khai bo i tng Connection nh sau:
using System; using System.Data; using System.Data.SqlClient; namespace WindowsFormsInCSharp { public partial class frmADONET : Form {
- 88 -
public frmADONET() { InitializeComponent(); } //Khai bo chui kt ni ti CSDL (Server l .\SQLEXPRESS, Tn c s d liu l CSDL) static string strConnect = @"Data Source=.\SQLEXPRESS;Initial Catalog=CSDL;Integrated Security=True"; //Khai bo i tng Connection (SqlConnection) SqlConnection sqlCon;//Cch 1 SqlConnection sqlCon2 = new SqlConnection();//Cch 2 SqlConnection sqlCon3 = new SqlConnection(strConnect);//Cch 3 } }
- 89 -
3.3.3. Kt ni ti C s d liu - M kt ni ti CSDL ti CSDL). Sau khi gi phng thc Open(), c th xem kt ni thanh cng hay khng thng qua thuc tnh State ca Connection: - ng kt ni
using System.Data; using System.Data.SqlClient;
S dng phng thc Open() ca i tng Connection m kt ni ti CSDL (trong ConnectionString - chui kt ni
S dng phng thc Close() ca i tng Connection ng kt ni ti CSDL. Ch : Chng ta thng vit mt phng thc m kt ni ti CSDL v mt phng thc ng kt ni ti CSDL nh sau:
- 90 -
public frmADONET() { InitializeComponent(); } //Khai bo chui kt ni ti CSDL static string strConnect = @"Data Source=.\SQLEXPRESS;Initial Catalog=CSDL;Integrated Security=True"; //Khai bo i tng Connection (SqlConnection) SqlConnection sqlCon;//s dng cch 1 //Phng thc kt ni ti CSDL (thng gi trong s kin Load ca Form) void KetNoi() { sqlCon = new SqlConnection(strConnect); //Kt ni ti ngun CSDL if (sqlCon.State == ConnectionState.Closed)
- 91 -
sqlCon.Open(); //Kim tra kt ni c thnh cng hay khng c th lm nh sau: if (sqlCon.State == ConnectionState.Open) MessageBox.Show("Kt ni thnh cng!"); } //Ngt kt ni (thng gi trong s kin FormClosing ca Form) void NgatKetNoi() { sqlCon.Close(); } //Gi phng thc M kt ni private void frmADONET_Load(object sender, EventArgs e) { KetNoi();
- 92 -
} //Gi phng thc ngt kt ni private void frmADONET_FormClosing(object sender, FormClosingEventArgs e) { NgatKetNoi(); }
3.4.
3.4.1. Chc nng Dng thc thi cc cu lnh SQL thao tc vi CSDL nh : Insert, Update, Select, Delete Trc khi thc thi cu lnh SQL bng i tng Command th bt buc phi m kt ni ti CSDL (gi phng thc KetNoi() trn). 3.4.2. Khai bo Chng ta c mt s cch khai bo i tng Command nh sau:
- 93 -
namespace WindowsFormsInCSharp { public partial class frmADONET : Form { public frmADONET() { InitializeComponent(); } //Khai bo i tng Command (sqlCommand) SqlCommand sqlCom;
- 94 -
3.4.3. Cc phng thc thng ca i tng Command i tng Command c mt s phng thc sau: ExecuteScalar(): Thc hin cu lnh m kt qu tr v ch c 1 (V d cu lnh Select Count(*)). ExecuteReader(): Thc hin cu lnh Select v tr v mt DataReader ExecuteNonQuery(): Thc hin cu lnh OLEDB nhng khng tr v kt qu (Delete, Update, Insert ). ExecuteXMLReader(): To mt b c t file XML. Phng thc ny khng c trong OleDbCommand, ch c trong SqlCommand. 3.4.4. S dng i tng Command Gi s chng ta c mt c s s liu SQL c tn: CSDL. C s d liu bao gm mt bng: tbSinhVien(MaSinhVien, TenSinhVien, Lop, NgaySinh, QueQuan) lu tr thng tin v mt s sinh vin Gi s chng ta c mt form c tn frmADONET. Trn form c cha mt s iu khin sau: DataGridView: dgSinhVien hin th d liu trong bng tbSinhVien. Cc Textbox: txtMaSinhVien, txtTenSinhVien, txtLop, txtNgaySinh, txtQueQuan dng nhp d liu
- 95 -
Cc nt button: btMoi, btThem, btSua, btXoa minh ha s dng i tng Command thao tc vi CSDL (Insert, Update, Delete)
namespace WindowsFormsInCSharp - 96 -
{ public partial class frmADONET : Form { public frmADONET() { InitializeComponent(); } //Khai bo chui kt ni ti CSDL static string strConnect = @"Data Source=.\SQLEXPRESS;Initial Catalog=CSDL;Integrated Security=True"; //Khai bo i tng Connection (SqlConnection) v SqlCommand SqlConnection sqlCon;//s dng cch 1 SqlCommand sqlCom; SqlCommand sqlCom2 = new SqlCommand(); //Phng thc kt ni ti CSDL void KetNoi() { sqlCon = new SqlConnection(strConnect); //Kt ni ti ngun CSDL - 97 -
if (sqlCon.State == ConnectionState.Closed) sqlCon.Open(); } //Ngt kt ni (thng gi trong s kin FormClosing ca Form) void NgatKetNoi() { sqlCon.Close(); }
/// <summary> /// Phng thc thc thi cu lnh SQL (Insert, Update, Delete) /// </summary> /// <param name="strSQL">Chui string m t Cu lnh SQL: Insert, Update, Delete</param> void ThucThi(string strSQL) { //Bc 1: Kt ni ti CSLD (Gi phng thc KetNoi) KetNoi(); //Bc 2: Khi to v gi phng thc ca i tng Command
- 98 -
sqlCom = new SqlCommand(strSQL, sqlCon); sqlCom.ExecuteNonQuery(); //Bc 3: Ngt kt ni NgatKetNoi(); } //Mi private void btMoi_Click(object sender, EventArgs e) { foreach (Control ctr in this.splitContainer1.Panel2.Controls) { if ((ctr is TextBox) || (ctr is MaskedTextBox)) { ctr.Text = ""; } } } //Thm bn ghi mi vo bng tbSinhVien private void btThem_Click(object sender, EventArgs e)
- 99 -
{ string strThem = "Insert into tbSinhVien values('"+ +"','"+txtTenSinhVien.Text+"','"+txtLop.Text+"','"+mkNgaySinh.Text+"','"+txtQueQuan.Text+"')"; ThucThi(strThem); } //Sa bn ghi private void btSua_Click(object sender, EventArgs e) { string strSua = "update tbSinhVien set TenSinhVien='" + txtTenSinhVien.Text + "',Lop='" + txtLop.Text + "',NgaySinh='" + mkNgaySinh.Text + "',QueQuan='" + txtQueQuan.Text + "' where MaSinhVien='"+txtMaSinhVien.Text+"' "; ThucThi(strSua); } //Xa bn ghi private void btXoa_Click(object sender, EventArgs e) { string strXoa = "delete from tbSinhVien where MaSinhVien='"+ txtMaSinhVien.Text +"' "; ThucThi(strXoa); } //End - 100 txtMaSinhVien.Text
3.5.
3.5.1. Chc nng. Dng n nhn kt qu (d liu) tr v t phng thc ExecuteReader ca i tng Command. Tuy nhin d liu l Readonly v ch c theo chiu tin 3.5.2. Khai bo Khai bo: SqlDataReader Bin_DataReader;//Khng c New Ly kt qu t Command <Bin_DataReader > = <Bin_Command>.ExecuteReader(); 3.5.3. S dng i tng DataReader Gi s chng ta mun hin thi tn ca tt c sinh vin tring bng tbSinhVien(MaSinhVien, TenSinhVien, Lop, NgaySinh, QueQuan), chng ta s dng i tng SqlDataReader nh sau.
- 101 -
using System.Data; using System.Data.SqlClient; namespace SampleDatabaseProgramming { public partial class frmADONET : Form { public frmADONET() { InitializeComponent(); } //Khai bo cc chui kt ni v cc i tng string strConnect = @"Data Source=.\SQLEXPRESS;Initial Catalog=CSDL;Integrated Security=True"; SqlConnection sqlCon; SqlCommand sqlCom; SqlDataReader sqlRd; SqlParameter sqlPa; //Phng thc kt ni ti CSDL SQL Server private void KetNoi() { sqlCon = new SqlConnection(strConnect); if (sqlCon.State == ConnectionState.Closed) { sqlCon.Open(); } } //Phng thc ng kt ni ti CSDL private void NgatKetNoi() { - 102 -
if (sqlCon.State == ConnectionState.Open) { sqlCon.Close(); } } //Phng thc c d liu public void DocDuLieu() { KetNoi(); //kt ni ti CSDL sqlCom = new SqlCommand("select TenSinhVien from tbSinhVien", sqlCon); sqlRd = sqlCom.ExecuteReader(); // while (sqlRd.Read()) { MessageBox.Show(sqlRd["TenSinhVien"].ToString());//Hoc sqlRd["TenSinhVien"].ToString() } //Ngt kt ni NgatKetNoi(); } //Gi phng thc c d liu private void frmADONET_Load(object sender, EventArgs e) { DocDuLieu(); } } }
- 103 -
3.6.
3.6.1. Chc nng C chc nng nh mt chic cu ni gia ngun (tp) d liu v cc bng c cached trong b nh (i tng DataSet.). DataAdapter s dng phng thc Fill() nhn d liu t ngun d liu vo mt dataset.
3.6.2. Khai bo i tng DataAdapter Khai bo: SqlDataAdapter BinAdapter; Bin Adapter c cc phng thc khi dng sau:
- 104 -
3.6.3. S dng i tng DataAdapter 3.6.3.1. S dng i tng DataAdapter truy vn d liu Chng ta mun ly d liu bng tbSinhVien trn chng ta c th s dng i tng DataAdapter nh bn di.
using System.Data; using System.Data.SqlClient; namespace SampleDatabaseProgramming { public partial class frmADONET : Form { public frmADONET() { InitializeComponent(); } //Khai bo cc chui kt ni v cc i tng SqlDataAdapter sqlAdap;
DataTable dt=new DataTable(); // sqlAdap = new SqlDataAdapter("select * from tbSinhVien", @"Data Source=.\SQLEXPRESS;Initial Catalog=CSDL;Integrated Security=True"); sqlAdap.Fill(dt); // return dt; }
// return dt; } //Gi phng thc cp nht d liu private void frmADONET_Load(object sender, EventArgs e) { CapNhatDuLieu(); } } }
3.7.
M hnh DataSet
3.7.1. Chc nng Dataset l mt lp dng thao tc vi d liu theo m hnh d liu phi kt ni. N c coi nh l mt kho cha cc bng (table). Ngi dng c th thay i d liu trong cc bng ny v khi thc s mun cp nht vo C s d liu th DataSet s thc hin cp nht thng qua lp DataAdapter Cc bng trong DataSet c th do DataAdapter Fill vo hoc cng c th l cc bng c to thnh t lp DataTable. 3.7.2. Khai bo DataSet BienDataSet=new DataSet(); //Ch : Phi c New trc khi s dng bin DataSet 3.7.3. M hnh DataSet
- 107 -
- 108 -
3.8.1. Chc nng S dng i tng SqlParameter truyn gi tr (ly t textbox, c sn) vo cho cc tham s ng vi cu lnh SQL hay th thc ni ti (StoredProcedure). Ch : Ch s dng i tng ny nu cu lnh SQL hay StoredProcedure c tham s. 3.8.2. S dng Gi s chng ta c mt StoredProcedure thm mi mt bn ghi vo bng tbSinhVien c ni dung:
CREATE PROCEDURE ThemMoiBanGhi ( @MaSinhVien nchar(10), @TenSinhVien nvarchar(50), @Lop nchar(10),
- 109 -
@NgaySinh nchar(12), @QueQuan nvarchar(12) ) AS BEGIN If exists (select MaSinhVien from tbSinhVien where MaSinhVien=@MaSinhVien) print 'Da co sinh vien nay' else begin Insert into tbSinhVien values (@MaSinhVien, @TenSinhVien,@Lop,@NgaySinh,@QueQuan) print 'Da them thanh cong' end END GO
SqlConnection sqlCon; SqlCommand sqlCom; SqlParameter sqlPa; //Phng thc kt ni ti CSDL SQL Server private void KetNoi() { sqlCon = new SqlConnection(strConnect); if (sqlCon.State == ConnectionState.Closed) { sqlCon.Open(); } } //Phng thc ng kt ni ti CSDL private void NgatKetNoi() { if (sqlCon.State == ConnectionState.Open) { sqlCon.Close(); } } //Phng thc ThucThi dng tng qut: c cu lnh SQL v Stored Procedure //Thc thi nhiu ln v cc Store hay cu lnh SQL c tham s //Khai bo i tng Parameter /// <summary> /// Phng thc thc thi cu lnh SQL hay StoredProcedure /// </summary> /// <param name="cmdType"> Thc thi dng cu lnh SQL hay StoredProcedure</param> /// <param name="strName"> Tn cu lnh SQL hay tn StoredProcedure</param> /// <param name="MangTen"> Tn cc tham s truyn vo StoredProcedure</param> - 111 -
/// <param name="MangGiaTri">Gi tr truyn vo cho cc bin trong StoredProcedure</param> /// <param name="MangType"> Kiu d liu ca bin</param> public void ThucThi(CommandType cmdType, string strName, string[] MangTen, object[] MangGiaTri, DbType[] MangType) { KetNoi(); // sqlCom = new SqlCommand(); sqlCom.CommandType = cmdType; sqlCom.CommandText = strName; sqlCom.Connection = sqlCon; //Khai bo v gn cc i tng Parameter for (int i = 0; i < MangTen.Length; i++) { sqlPa = new SqlParameter(); sqlPa.ParameterName = MangTen[i]; sqlPa.Value = MangGiaTri[i]; sqlPa.DbType = MangType[i]; sqlCom.Parameters.Add(sqlPa); } //Thc thi cu lnh sqlCom.ExecuteNonQuery(); NgatKetNoi(); } //Gi thc thi Stored private void frmADONET_Load(object sender, EventArgs e) { string[] MangTen = {"MaSinhVien","TenSinhVien","Lop","NgaySinh","QueQuan" }; string[] MangGT = { "M01", "Nguyn Vn A", "TK6", "10/10/1988", "Hng Yn" }; DbType[] MangType={DbType.String, DbType.String, DbType.String, DbType.String, DbType.String}; //ThucThi(CommandType.StoredProcedure, "ThemMoiBanGhi", MangTen, MangGT, MangType); } - 112 -
//End } }
3.9.
3.9.1. Mc ch Gn kt cc iu khin (Textbox) vo cc trng d liu trong CSDL 3.9.2. S dng Trong C#: gn kt d liu vi cc iu khin chng ta thng s dng i tng BindingManagerBase (xem v d minh ha i km) 3.10. S dng DataView trong sp xp v tm kim d liu 3.11. LINQ
- 113 -
- 114 -
- 115 -
Report c chia lm 5 khu vc (Section): Section 1 (Report Header): Nhng thit k trn phn ny ch xut hin trn trang u tin ca bo co (Report) (nu bo co c nhiu trang). Section 2 (Page Header): Nhng thit k trn phn ny s xut hin trn tt c cc ca bo co (nu bo co c nhiu trang). Section 3 (Detail): Khu vc ny hin th ni dung bng CSDL. Section 4 (Report Footer) v Section 5(Page Footer) c ngha tng t nh Section 1 v 2.
Bc 3: Kt ni n ngun CSDL
- 116 -
Ch : Ty thuc CSDL l g (SQL Server, Access, Excel) m chng ta chn Driver cho thch hp (trong trng hp ny ti chn kt ni n SQL Server)
- 117 -
Chn tn Server t Combobox Server ( y tn server ca ti l: VIETHQTK1 hoc bn c th g vo l localhost). Sau bn chn CSDL m mun hin th ra Report Combobox Database ( y ti chn CSDL Northwind)
- 118 -
Chn cc bng d liu cn hin th d liu ra Report bn khung bn tri sau nhn nt >. Khi danh sch cc bng bn chn s hin th ra bn tay phi bn ( y ti mun hin th bng CSDL Customers).
Bc 4: Thit k Report thit k reports Visual Studio cung cp mt s iu khin (trong hp thoi Toolbox), cc iu khin ny cng c cc thuc tnh nh trong cc ng dng Window Form. y ta ch n 2 iu khin - Text Object: Hin thi chui Text (nh mt Label) - Line Object: Dng k cc ng thng.
Trc ht chng ta thit k cho 2 phn Section 1 (Report Header) (thng hin th CNG HA X HI CH NGHA..) v Section 2 (Page Header) (thng hin th tiu bo co). y: 2 phn ny ti dng iu khin Text Object thit k.
- 119 -
Tip n chng ta thit k d liu t CSDL hin th ra Report. Chng ta lm theo cc bc sau:
Bn ko ln lt cc trng trong bng CSDL Customers trong khung Field Explorer bn tay tri vo khu vc Section 3 (Details) ta s c nh hnh di y.
- 120 -
Qu trnh thit k Report hon tt by gi n bc hin th Report ra Form 4.2. Np v hin th Report trong chng trnh
Bc 5: Hin th Report ra form hin th Report nn Form, VS h tr iu khin CystalReportViewr trong Tab Reporting.
Bn hy ko iu khin vo form sau t thuc tnh ReportSource cho iu khin l Reports chng ta va thit k Gi th bn hy chy form v xem kt qu xem no!
- 122 -
4.3.
Thit k Report ng
4.3.1. Mc ch Truyn d liu t form (d liu c nhp vo t textbox, d liu t bin) sang report nhm thit k cc report ng. 4.3.2. S dng Yu cu: Truyn d liu t textbox c tn txtTenSinhVien (txtTenSinhVien nm trn form frmDynamicReport) sang mt report c tn reDynamicReport. Cch lm: Bc 1: Thit k report c ni dung nh sau (hon ton tng t nh bc 4 trn).
Trn Report c mt TextObject c tn txtTenSinhvien dng n nhn kt qu truyn t form sang. Bc 2: Thit k form c giao din nh sau (frmDynamicReport). frmDynamicReport c chia lm hai phn s dng SplitContainer. Phn th nht (Panel 1) cha mt textbox c tn txtTenSinhVien truyn d liu sang TextObject (txtTenSinhVien) trn Report. Button OK minh ha cho vic truyn d liu.
- 123 -
- 124 -
- 125 -