1

Custom Control

 Nguy n Hà Giang

Nguyen Ha Giang

N i dung

2

 User control

ử ụ

 Ý nghĩa & cách s  d ng

 Demo

 Custom control

 Cách t o & dùng custom control

 Demo

Nguyen Ha Giang

Custom control

3

 ASP.NET có ba lo i custom control

ầ ủ

 User control cho phép reuse m t ph n c a trang web

ặ ằ b ng cách đ t vào trong

.ascx file

t k  m t control m i

ế ế ộ  Custom server control cho phép thi ự ặ

ả ế

ằ b ng cách c i ti n control đã có ho c xây d ng control  m i ớ

ế ợ

ạ ớ

i v i nhau và

 Composite control: k t h p các control l

biên d ch ra file DLL

ạ ầ ủ ươ ấ ng

Nguyen Ha Giang

ứ ộ ề  Các lo i custom control đ u cung c p đ y đ  ph ự ệ th c, thu c tính và s  ki n

User control

4

ế ợ

 User control s  d ng mô hình k t h p (composition  model), có th  ch a HTML và server control khác

ử ụ ể ứ

Application A

Application B

Control1.as cx

Page3.as px

Page2.aspx

Page1.aspx

Nguyen Ha Giang

User control

5

 T

ự ư ượ ng t nh  web form, user control đ c chia làm hai

ươ ph nầ

 Ph n HTML v i các control tag (.ascx file)

ầ ử

 Code behind file v i ph n x  lý (.cs)

 User control có cùng s  ki n nh  m t đ i t

ư ộ ố ượ ự ệ ng Page

ư (nh  Load và PreRender)

 S  khác nhau gi a user control và web form

ữ ự

ắ ầ

 User control b t đ u v i Control directive thay vì Page

directive c a Page

ử ụ

ở ộ ầ  User control s  d ng ph n m  r ng ascx thay vì aspx Nguyen Ha Giang

ự ế ừ

 User control không th  request tr c ti p t

client.

User control

6

 Ví d  m t user control ch a m t Label bên trong

ụ ộ ứ ộ

<%@ Control Language="C#" AutoEventWireup="true" CodeFile="Footer.ascx.cs" Inherits="Footer" %>

Nguyen Ha Giang

User control

7

 Control directive s  d ng cùng các thu c tính v i Page

ử ụ ộ ớ

 Language, AutoEventWireup, Inherits

directive cho web page nh  ư

 Code behind cho user control này t

ươ ự ư ng t nh  web form.

ử ụ

ự ệ

ể  S  d ng s  ki n UserControl.Load đ  add text vào label public partial class Footer : UserControl {     protected void Page_Load(Object sender, EventArgs e)      {         lblFooter.Text = “Time: ";         lblFooter.Text += DateTime.Now.ToString();     } }

Nguyen Ha Giang

User control

8

 S  d ng User control

 Insert vào trong web page

ử ụ

ử ụ

 S  d ng tag Register directive đ  khai báo s  d ng

ử ụ control <%@ Register TagPrefix=“HaG" TagName="Footer"  Src="Footer.ascx" %>

ử ụ

 Khai báo s  d ng user control

Minh hoa su dung Footer user control

Nguyen Ha Giang

User control

9

 Minh h a s  d ng User Control

User control

Nguyen Ha Giang

ọ ử ụ

User control

10

 User control bao b c các thành ph n bên trong.

ầ ọ

 Do đó page không th  truy c p các control trong user

control.

 Tuy nhiên user control có tính ch t t

ấ ươ ự ư ng t nh  control

ộ  Thu c tính

ươ

 Ph

ứ ng th c

User control

ự ệ  S  ki n

properties

Nguyen Ha Giang

User control

11

ủ Code behind c a user control

Nguyen Ha Giang

ạ ứ ươ ng th c cho user control

ộ  T o thu c tính & ph public string Content { get // lấy nội dung (label) của user control { return Label1.Text; } set // thiết lập nội dung cho user control { Label1.Text = value; } } public void SetContent(string str) { // thiết lập nội dung cho label Label1.Text = str; }

User control

12

 User control là gi

ề ế ợ ố k t h p  ấ ố ố ệ i pháp thu n ti n khi mu n  ộ  vào chung m t kh i th ng nh t! ả nhi u web control

ế ợ  S  d ng user control k t h p text box và validation

ử ụ control.

ế ủ ặ ổ ố ở  H n ch  c a User control khi mu n b  sung ho c m

ạ r ngộ

ạ ể ệ ầ ớ ể  Không th  customize l i ph n HTML th  hi n v i user

control

 Không th  chia s  user control v i nh ng  ng d ng

ữ ứ ụ ể ẻ ớ

khác.

 Đa s  ng

ố ườ ậ ạ i l p trình ch n cách t o custom web control

Nguyen Ha Giang ọ v i đ y đ  tính năng h n.

ớ ầ ủ ơ

User control

13

 Demo t o user control có text box yêu c u ph i nh p

ầ ả ậ

ạ giá tr  sị ố

 Các b

ướ ự ệ c th c hi n

 T o project DemoUserControl

 T o User control tên NumberTextBox

Nguyen Ha Giang

User control

14

 B c 2: T o User control tên NumberTextBox

ướ ạ

(cid:0)

 Kích chu t ph i lên project ch n Add

New Item…

 Ch n Templates là Web User Control

Ch n user control

Đ t tên user control

Nguyen Ha Giang

User control

15

 B c 3: Trong màn hình Design c a user control

ướ ủ

ộ  Kéo th  TextBox và m t Validation control ki u

CompareValidator

 Đ t id c a TextBox là txtContent

 Đ t id c a CompareValidator là cvCheckNumber

ế ậ

 Thi

t l p thu c tính cho cvCheckNumber

ị ố

 ErrorMessage: “Nh p giá tr  s !”

 ControlToValidate: txtContent

 Operator: DataTypeCheck

 Type: Integer

Nguyen Ha Giang

User control

16

Nguyen Ha Giang

User control

17

 B c 4: s  d ng user control trong web page

ử ụ ướ

ể ử ụ

ả  Đ  s  d ng user control trong web page, ta có th  kéo th

ầ ử ụ

user control vào trang web c n s  d ng

 Kéo user control NumberTextbox vào Default.aspx

Kéo thả

Default.aspx

Nguyen Ha Giang

User control

18

 VS t

ự ộ ử ụ ạ đ ng t o tag Register và tag s  d ng User control

Nguyen Ha Giang

NumberTextbox trong default.aspx

User control

19

 Ch y demo trang default.aspx

User control: NumberTextBox

ế

t ý

ữ ệ

ậ ể ấ

B  sung thêm Label cho user control: NumberTextBox, Label này cho bi nghĩa d  li u mà user nh p vào ổ B  sung thêm property đ  l y giá tr  mà user nh p trong TextBox c a User  control

Nguyen Ha Giang

User control

20

 Bài t pậ

 T o m t user control Contact

 Ch a các text box cho phép nh p các thông tin

 H  tênọ

 C  quan ơ

 Ch c vứ ụ

 Đi n tho i ạ

 Email

 …

Nguyen Ha Giang

 V i m i thông tin trên ph i t o các property t

ả ạ ớ ươ ứ ng  ng,  ể ấ ứ ể đ  bên ngoài (là web page ch a user control) có th  l y

các giá tr  này!

Custom control

21

 Custom control đ

ượ ạ ư ố c t o gi ng nh  class.

 T o và s  d ng custom control theo d ng library class

 T o ạ ASP.NET Custom control

ử ụ ạ ạ

ị  Biên d ch thành

DLL

ử ụ

 Import trong  ng d ng web (kéo th , code) và s  d ng

ư ệ

ườ

ụ ư ớ custom control nh  l p th  vi n bình th

ng

Cho phép reuse trong nhi u web app khác nhau.

Nguyen Ha Giang

Custom control

22

 Ta có th  t o custom control t

ể ạ ừ ớ control có s nẵ , và l p

ứ ề ổ b  sung thêm nhi u ch c năng.

ụ ạ

ớ ị

 Ví d : t o m t Text box v i đ nh d ng đ c bi

t

 Cho phép thay đ i ph n HTML render:

ầ ổ

ươ

 Override ph

ng th c render

ế

ượ

 Vi

t

thông  qua  đ i  ươ

ố ng  ể ng  th c  Render  đ

t  ph n  modify  HTML  HtmlTextWriter  đi  kèm  v i  ph ự ế output tr c ti p HTML

ể ọ

ươ

ứ ủ ớ ơ ở

ử ụ  S  d ng t

khóa base đ  g i ph

ng th c c a l p c  s

ệ ổ

ặ ị

ế

 Đ m b o vi c b  sung s  không thay th  code m c đ nh

ẽ Nguyen Ha Giang

Custom control

23

ủ ớ ơ ở ộ

public class TitledTextBox : TextBox  {     private string caption;     public string Caption         get { return caption; }         set { caption= value; }     }     protected override void Render(HtmlTextWriter writer) {         // t o b  sung tag HTML v i caption         writer.Write("

" + caption + "

"); ủ         // g i Render c a l p c  s , n i dung c a textbox s  xu t ra         base.Render(writer);     } }

Nguyen Ha Giang

Custom control

24

ư ệ ạ ử  Demo cách t o custom control d ng th  vi n và s

ụ ụ ạ ứ d ng trong  ng d ng khác.

 Ph n demo này t o m t custom control d ng TextBox,

ầ ạ ộ

ổ ộ ạ có b  sung m t caption cho text box

 B c 1: T o m t project có template d ng: ASP.NET

ướ ạ ạ ộ

Server Control.

 Đ t tên cho Custom control là: MyServerControl

Nguyen Ha Giang

Custom control

25

 B c 2: thay đ i l p c  s  m c đ nh t

ổ ớ ơ ở ặ ị ướ ừ WebControl

Nguyen Ha Giang

sang TextBox

Custom control

26

ướ  B c 3:

ế

 T o bi n thành viên ki u chu i ch a caption c a textbox.

 T o property cho chu i caption

Nguyen Ha Giang

Custom control

27

 B c 4: Override l

ươ ủ ứ i ph ng th c Render c a Textbox,

Nguyen Ha Giang

ướ ổ ạ b  sung thêm caption

Custom control

28

 B c 5: Build project, k t qu  là file DLL

ướ ế ả

 Đây là d ng file th  vi n liên k t đ ng, ta có th  import

ế ộ ể ạ

Nguyen Ha Giang

ư ệ ể ử ụ vào web page đ  s  d ng.

Custom control

29

 T o project demo s  d ng custom control

ử ụ ạ

ể ư  Đ  import custom control vào project ta có th  làm nh

 Import custom control vào ToolBox

 Kích chu t ph i lên toolbox Standard ch n Choose Items…

ế

 Browse đ n file DLL c a custom control

ể sau:

 T  ToolBox kéo th  custom control vào web page

 Trong s  ki n Load c a web page, thi

ế ậ ạ t l p l

i caption

ự ệ ủ c a custom control

Nguyen Ha Giang

Custom control

30

 Import custom control vào ToolBox

Nguyen Ha Giang

Custom control

31

 Custom control hi n th  trên tool box nh  m t control

ư ộ ể ị

Nguyen Ha Giang

chu nẩ

Custom control

32

 Kéo th  custom control vào trang web

 Thi

Nguyen Ha Giang

ế ậ ủ ộ t l p thu c tính Caption c a custom control

Custom control

33

 Bài t pậ

 T o m t custom control cho phép hi n th  thông tin b n

quy n theo m u sau

– đ n năm

] [tác giả]. All rights reserved

ế ề

ừ  năm  ữ ả  b n quy n n i dung trên website này

©Copyright [t ®[tác giả] gi

 Trong đó có 3 thu c tính cho phép b  sung t

bên ngoài

ộ ủ c a custom control

ế

 [t

ả  năm], [đ n năm] và [tác gi ]

Nguyen Ha Giang