Sunteți pe pagina 1din 17

Stefania Duma Laborator DAW

1

Cuprins


1. Lucrul cu baza de date aspnetdb
2. Master Pages (+controlul DataList)
3. Cautare (+controlul Repeater)
4. Controale din grupul Login
5. Adauga poza
6. Administrare profil (controlul GridView)
7. Validatori




Lucrul cu baza de date:

La proiect lucrati cu baza de date configurata cu Aspnet Configuration Tool, iar la examen
lucrati cu baza de date adaugata cu clic dreapta pe folderul App_data Add new item SQL
Server Database (puteti sa lucrati si cu aspnetdb la exam, doar ca nu veti avea nevoie de
facilitatile ei).

Pentru a lucra cu Aspnet Configuration Tool:
- in web.config modificati <authentication mode="Windows"/>in <authentication mode="Forms"/>
- in meniu aveti optiunea WebSite Aspnet configuration tool (sau acolo in Solution Explorer
aveti toolbarul cu cateva optiuni printre care Refresh si chiar ultima e aspnet config), dati clic si
apoi faceti enable roles , puteti sa creati useri si sa le atribuiti roluri

- dati refresh si acum ar trebui sa va apara aspnetdb.mdf in folderul App_data

Pentru a adauga un tabel, mergeti in Server Explorer sau dati dublu clic pe baza de date si va
duce in Server Explorer. Pe nodul Table dati clic dreapta Add new table. Dupa ce introduceti
toate denumirile de campuri si tipul lor salvati tabelul.

Pentru a seta cheia primara, va pozitionati pe campul destinat cheii (gen id_poza) si, ori dati clic
dreapta set primary key, ori dati clic in meniu pe cheia ca in poza de mai jos:

Stefania Duma Laborator DAW

2



Pentru autoincrement la cheia primara, exemplu putin mai jos.

Pentru a adauga relatii intre tabele, ne pozitionam pe tabelul ce contine cheia externa si dam clic
pe Relationships ca mai jos:



Dam clic pe Add, la Tabels and Colums Specific dam pe Browse si selectam campul dupa care
se face legatura:



La laborator am lucrat cu o baza de date ce contine tabelele generate de aspnet configuration tool
si am adaugat tabelele galerii, poze si comentarii (site galerie de imagini).


Stefania Duma Laborator DAW

3

Scheme relationale:

galerii(id_galerie#, UserId, denumire, descriere, ultima_poza)
poze(id_poza#, id_galerie, UserId, titlu, descriere, locatie, data_adaugare)
comentarii(id_com#, id_poza, UserId, comentariu, data_adaugare)







Pentru fiecare tabel, stabilim chei primare si relatii intre tabele:
Stefania Duma Laborator DAW

4



Pentru fiecare tabel, facem autoincrement pentru cheia primara (identity seed ne zice care va fi
prima valoare pt cheia primara iar identity increment cu cat se va incrementa cheia).






MasterPages

Intrati pe http://www.2createawebsite.com/build/templates.html si downloadati de acolo un
template (preferabil unul care sa aiba si meniu in stanga sau dreapta cum este cel pe care vi l-am
atasat).
Sa presupunem ca ati ales sa lucrati cu templateul ce vi l-am dat eu Galery. Uitati-va in folder
si vedeti ca aveti fisiere css, un folder ce contine imaginile ce le foloseste templateul si
index.html.
Stefania Duma Laborator DAW

5

Adaugati fisierele continute in folderul Galery in proiect: clic dreapta pe root Add existing
item si selectati toate fisierele din folder. Observati ca nu se permite adaugarea unui folder, asa
ca aveti 2 optiuni: ori copiati folderul images in web siteul vostru, ori clic dreapta pe root Add
new folder pe care il denumiti images si apoi in acel folder puneti cu Add existing item toate
pozele.
Deschideti style.css. Va amintiti ca foloseam # pentru id-uri (vrem sa specificam stil pentru un
singur element) si . pentru clase (vrem sa specificam stil pentru un grup de elemente).

(Nota: pentru proiect puteti folosi un template downloadat..este chiar indicat, intrucat scopul
proiectului nu este sa scrieti css si sa va ocupati de design, ci sa creati un site dinamic care sa
aiba toate functionalitatile implementate)

Vom lucra cu master pages. Acestea ne ajuta sa afisam continut diferit pentru tipurile de
utilizatori. De exemplu, unui vizitator i se vor afisa linkuri catre autentificare sau creare de cont,
pe cand unui utilizator autentificat i se vor afisa linkuri catre schimbare de pass. Mai este si cazul
administratorului caruia din nou, i se afiseaza alte informatii. Deci, avem in vedere 3 tipuri de
useri 3 tipuri de master page. Sa cream asadar master pages care sa se ocupe de tipurile de
useri. Clic dreapta pe root Add new item Master page (de 3 ori adaugati).

Sa ne uitam acum peste index.html. Lucram cu asta si cu primul master page creat ce se va ocupa
cu vizitatorii. Treceti in modul Design al master pageului si observati ca avem atat meniu sus pe
orizontala, cat si meniu pe dreapta. Mai observati si ca avem

<div>
<asp:ContentPlaceHolder id="ContentPlaceHolder1" runat="server">
</asp:ContentPlaceHolder>
</div>

Tot ceea ce este in afara lui Content Place Holder nu se mai poate modifica. Atunci cand cream o
noua pagina aspx ii asignam un master page.

Treceti pe modul Source si observati ce div-uri avem pe acolo si impartirea logica a continutului
paginii. Copiati tagurile <title> si <link>din index.html si dati paste in interiorul tagului <head
runat="server">din master page. Copiati din body incepand cu divul <div id="wrapper">si dati
paste in master page in interiorul tagului <form id="form1" runat="server">. Stergeti ce se afla
in interiorul lui <div id="content">si puneti div-ul de mai sus cu ContentPlaceHolder.

Aveti un meniu sus ca in imaginea de mai jos. Lasam optiunea Home si stergem restul.


Stefania Duma Laborator DAW

6

In meniul din stanga vreau sa afisam Poze, Galerii si Comentarii. Asadar, modificati astfel incat
sa apara Poze in loc de Aliquam tempus si idem pt celelalte.



Acum o sa afisam in meniul stanga, la Poze, primele 6 poze adaugate de orice utilizator logat.
Ati vazut cum se lucreaza cu controlul GridView la laborator. La examen, va trebui sa lucrati si
cu controale ce necesita prelucrari si scriere de cod. Pentru a afisa ultimele poze adaugate, o sa
lucram cu un DataList. Asadar, trageti un DataList in interiorul lui Poze si trageti si un
SqlDataSource. Nu o sa mai configuram din modul Design dand next, next

O sa scriem noi codul pentru a modela comportamentul acestui control. Trecem in modul Source
si ne pozitionam in tagul <asp:DataList ID="DataList1" runat="server" > unde va vor aparea
sugestii cu atributele posibile ce le poate avea acest tag:




Stefania Duma Laborator DAW

7

Adaugati urmatoarele atribute RepeatColumns="3" RepeatDirection="Horizontal"
runat="server" DataSourceID="SqlDataSource1" ce ne indica urmatorul lucru: informatiile se
afiseaza cate 3 pe orizontala (matrice de x linii si 3 coloane).
Urmatorul pas este sa indicam ce informatii se iau din baza de date. Intrati in
MasterPage.master.cs si in interiorul metodei Page_Load scrieti codul:

string query = "SELECT TOP(6) locatie,titlu,id_poza FROM poze";
SqlDataSource1.SelectCommand = query;
SqlDataSource1.DataBind();

Am spus ca afisam primele 6 poze adaugate in baza de date. In Sql Server top restrictioneaza
numarul de rezultate returnate. Avem top(6) si RepeatColumns=3 se va afisa o matrice de 2
linii si 3 coloane.

Acum sa modelam ceea ce se afiseaza. Vrem sa afisam poze deci ne vom folosi de coloana
locatie din tabelul poze. Vrem ca atunci cand userul da clic pe poza sa fie directionat catre o
pagina in care sa fie afisata poza respectiva si detalii despre ea precum comentarii, galeria din
care face parte, etc. Mai vrem si sa afisam sub poza titlul acesteia. Pentru a afisa toate aceste
informatii ne folosim de tagul ItemTemplate.

<ItemTemplate>
<a href="Default.aspx?id_poza=<%#DataBinder.Eval(Container.DataItem,"id_poza") %>">
<img style="padding-right: 8px; background-color: #FFE4E1"
alt="<%#DataBinder.Eval(Container.DataItem,"titlu") %>"
class="poze" src="<%#DataBinder.Eval(Container.DataItem,"locatie") %>"
width="80px" height="80px" />
<div style="text-align: center; text-decoration: none">
<%#DataBinder.Eval(Container.DataItem,"titlu") %></div>
</a>
</ItemTemplate>

Daca poza are, de exemplu, id-ul 3 si vrem ca userul sa fie redirectionat catre pagina
bla.aspx?id_poza=3 atunci trebuie sa construim dinamic lucrul astaprin
DataBinder.Eval(Container.DataItem, x) se va returna informatie continuta in coloana x. De
unde stie din ce tabel sa preia coloana x? Datorita faptului ca acestui control i-a fost asociat un
SqlDataSource al carui query l-am scris in codul cs.

Trecem la div-ul cu Galerii. Vom afisa tot primele 6 galerii adaugate. Trageti un DataList, un
SqlDataSource, mergeti in cs si mai adaugati codul ce manipuleaza ce se afiseaza.

query = "SELECT top(6) ISNULL(ultimapoza,'poze/blank.png') as ultima,id_galerie,
denumire FROM galerie";
SqlDataSource2.SelectCommand = query;
SqlDataSource2.DataBind();

Observati ca am folosit ISNULL care inseamna ca: daca a fost adaugata o galerie care nu contine
nicio poza, atunci se va afisa o imagine generica numita blank.png, altfel se va afisa ultima poza
adaugata in respectiva galerie.
Stefania Duma Laborator DAW

8


Mergem iar in aspx in interiorul lui DataList2 si ii punem atributele RepeatColumns="3"
RepeatDirection="Horizontal" runat="server" DataSourceID="SqlDataSource2" si ii spunem ce
sa afiseze in ItemTemplate:

<ItemTemplate>
<a href="galerii.aspx?id_galerie=<%#DataBinder.Eval(Container.DataItem,"id_galerie") %>">
<img style="padding-right: 8px; background-color: #FFE4E1 "
alt="<%#DataBinder.Eval(Container.DataItem,"denumire") %>" class="poze"
src="<%#DataBinder.Eval(Container.DataItem,"ultima") %>" width="80px" height="80px" />
<div style="font-size: 14px; text-align: center; text-decoration:none">
<%#DataBinder.Eval(Container.DataItem,"denumire") %></div>
</a>
</ItemTemplate>





Cautare

Prelucram MasterPage.master masterul dedicat vizitatorilor
Sus in dreapta avem cautarea (un input text si un buton). Vom implementa cautarea in tabelele
poze si galerii. Asta inseamna ca daca utilizatorul introduce un cuvant in searchbox de genul
anim, atunci din baza de date se vor afisa galeriile Anime si Animale, dar si din tabelul
poze se vor afisa poze ce contin acest string (precum Animalul meu preferat).

Daca va mutati pe modul Source observati ca nu sunt controale asp. Stergem continutul div-ului
<div id="search"> si punem in acesta un textbox in care se va introduce textul pentru cautare si
un buton ce odata apasat va directiona userul spre o pagina ce ii dezvaluie rezultatele cautarii.
Asadar, continutul div-ului arata acum asa:

<div id="search">
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Cauta" />
</div>

Scriem codul in MasterPage.master.cs ce se ocupa de comportamenul butonului de cautare:

protected void Button1_Click(object sender, EventArgs e)
{
if (TextBox1.Text != "")
Response.Redirect("Cautare.aspx?cuv=" + TextBox1.Text);
else Response.Redirect("Default.aspx");

}

Stefania Duma Laborator DAW

9

Acum ne ocupam de pagina Cautare.aspx. Observati ca am transmis cand am facut
redirectionarea cuvantul in url. Dati clic pe root Add new item Web form si aveti grija sa
selectati si master page-ul pt aceasta pagina ca in poza de mai jos:



Observati ca va apare un tag ContentPlaceHolder. In acesta plasam controale, ceea ce este in
afara lui tine de master page (headerul, meniul din stanga +footerul). Punem 5 controale pe
aceasta pagina:
- un textbox setat pe visible =false si text =Cautarea nu a intors niciun rezultat. Acesta devine
vizibil in cazul in care nu se returneaza niciun rezultat din baza de date
- un control de tip Data, Repeater, la care ii vom scrie noi cod.
Folosind acest repeater vom afisa pozele din bd ce contin in titlul pozei cuvantul cautat.
- un sqldatasource ce il legam de repeaterul pt poze
- un alt repeater pt afisarea galeriilor din bd ce contin in denumire cuvantul cautat
- un sqldatasource ce il legam de repeaterul pt galerii

Pentru un repeater lucram cu taguri <HeaderTemplate>, <ItemTemplate>si <FooterTemplate>.
Daca avem un tabel, asta inseamna ca in header punem tagul <table>, in item punem taguri <tr>
si <td>, iar in footer punem tagul de inchidere </table>. Desigur, pot fi puse si alte taguri, dupa
cum vom vedea si mai jos:

<asp:Repeater ID="Repeater1" runat="server" DataSourceID="SqlDataSource1" Visible="True">
<HeaderTemplate>
<h3>Rezultate in poze</h3><br />
<table class="tabel_caut" border="0">
<tr>
<th>
Denumire</th>
Stefania Duma Laborator DAW

10

<th align="center">
Descriere</th>
<th align="center">
Utilizator</th>
</tr>
</HeaderTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
<ItemTemplate>
<tr>
<td>
<a id="a_cauta"
href='Poze.aspx?id_poza=<%#DataBinder.Eval(Container.DataItem,"id") %>'>
<%#DataBinder.Eval(Container.DataItem,"x") %>
</a>
</td>
<td>
<%#DataBinder.Eval(Container.DataItem,"y" )%>
</td>
<td>
<a class="uname"
href="User.aspx?UserName=<%#DataBinder.Eval(Container.DataItem,"z") %>" >
<%#DataBinder.Eval(Container.DataItem,"z") %>
</a>
</td>
</tr>
</ItemTemplate>
</asp:Repeater>

In mod asemanator, se scrie si codul pt repeaterul destinat galeriei.

Codul ce se ocupa cu manipularea controalelor (in Cautare.aspx.cs) este:

protected void Page_Load(object sender, EventArgs e)
{
string query;
SqlDataReader r;
Boolean ok1 = true, ok2 = true;
if (Request["cuv"] != "")
{
SqlConnection con = new
SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString
);
SqlCommand command = new SqlCommand();
command.Connection = con;
command.Connection.Open();
query = "select poze.id_poza as id, poze.titlu as x, poze.descriere as y,
aspnet_Users.UserName as z from poze inner join aspnet_Users on poze.UserId=
aspnet_Users.UserId where lower(poze.titlu) like '%" + Request["cuv"].ToLower() + "%';";
command.CommandText = query;
r = command.ExecuteReader();
if (!r.HasRows)
{
Repeater1.Visible = false;
ok1 = false;
}
Stefania Duma Laborator DAW

11

SqlDataSource1.SelectCommand = query;
SqlDataSource1.DataBind();
r.Close();
query = "select galerii.id_galerie as id, galerii.denumire as x,
galerii.descriere as y, aspnet_Users.UserName as z from galerii inner join aspnet_Users
on galerii.UserId = aspnet_Users.UserId where lower(galerii.denumire) like '%" +
Request["cuv"].ToLower() + "%';";
command.CommandText = query;
r = command.ExecuteReader();
if (!r.HasRows)
{
Repeater2.Visible = false;
ok2 = false;
}
SqlDataSource2.SelectCommand = query;
SqlDataSource2.DataBind();

if (!ok1 && !ok2) // daca nu avem rezultate in niciunul din cele 2 tabele
{
Label1.Visible = true; // afisam labelul cu textul Cautarea nu a intors
// niciun rezultat
}
}
}




Controale din grupul Login

Ati vazut controlul Login cand am facut pagina de autentificare. Acum o sa lucram cu
LoginView. Trageti un LoginView in dreapta sus, ramaneti pe AnonymousTemplate si in
interiorul sau adaugati un hyperlink si un control LoginStatus cu view setat pe LoggedOut (ca
sa va apara Login cand nu sunteti autentificati). Apoi, mutati-va pe LoggedInTemplate si
puneti in interior un label cu text Bine ai venit , un LoginName langa el, un hyperlink cu
schimbare pass si un control LoginStatus cu view setat pe LoggedIn (ca sa va apara Logout
cand sunteti autentificati).

<asp:LoginView ID="LoginView1" runat="server">
<AnonymousTemplate>
<asp:HyperLink ID="HyperLink1" runat="server"
NavigateUrl="~/register.aspx">Creeaza Cont</asp:HyperLink>
<asp:LoginStatus ID="LoginStatus1" runat="server" LogoutAction="Redirect"
LogoutPageUrl="~/default.aspx" />
</AnonymousTemplate>
<LoggedInTemplate>
<asp:Label ID="Label1" runat="server" Text="Bine ai venit"></asp:Label>
<asp:LoginName ID="LoginName1" runat="server" />
<asp:HyperLink ID="HyperLink2" runat="server"
NavigateUrl="~/changepwd.aspx">Schimba parola</asp:HyperLink>
<asp:LoginStatus ID="LoginStatus2" runat="server" LogoutAction="Redirect"
LogoutPageUrl="~/default.aspx" />
</LoggedInTemplate>
</asp:LoginView>

Stefania Duma Laborator DAW

12


ce ii apare vizitatorului


ce ii apare utilizatorului logat

Sa presupunem ca ati dat run (View in Browser) la pagina Default.aspx. Pentru ca sa faca
schimbarea intre masterpage-ul dedicat vizitatorului si masterpage-ul dedicat utilizatorului logat,
trebuie introdusa o metoda in Default.aspx.cs:

void Page_PreInit(object sender, EventArgs e)
{
// daca utilizatorul e logat
if (User.Identity.IsAuthenticated)
{
// daca utilizatorul are rolul de administrator
if (User.IsInRole("admin")) MasterPageFile = "~/MasterPage3.master";
else
// daca utilizatorul are rol de user normal

MasterPageFile = "~/MasterPage2.master";
}
else
// daca utilizatorul e vizitator
{
MasterPageFile = "~/MasterPage.master";
// Response.Redirect("Default.aspx"); !!! uneori trebuie linia asta de
//cod..adaptati la ce pagina aveti voi de creat
}
}
Stefania Duma Laborator DAW

13

UserId-ul se ia folosind: Membership.GetUser().ProviderUserKey
UserName-ul se ia folosind: Membership.GetUser().UserName




Adauga poza
Putem adauga o poza in tabelul poze chiar daca aceasta nu apartine unei galerii. Pentru
asta avem un checkbox caruia ii asociem o metoda prin care vor fi returnate galeriile disponibile
intr-un dropdownlist.


String nume_fisier;

void Page_PreInit(object sender, EventArgs e)
{
if (User.Identity.IsAuthenticated)
{
if (User.IsInRole("admin")) MasterPageFile = "~/MasterPage3.master";
else
MasterPageFile = "~/MasterPage_2.master";
}
else
{
MasterPageFile = "~/MasterPage.master";
Response.Redirect("Default.aspx");
}
}
Stefania Duma Laborator DAW

14




protected void Button1_Click(object sender, EventArgs e)
{
string query, str = "";

String extensie = Path.GetExtension(FileUpload1.FileName);
if ((extensie == ".jpg") || (extensie == ".bmp") || (extensie == ".dib") ||
(extensie == ".jpeg") || (extensie == ".jpe") || (extensie == "jfif") || (extensie ==
".gif") || (extensie == ".tif") || (extensie == ".tiff") || (extensie == ".png"))
{
nume_fisier = Path.GetFileName(FileUpload1.FileName);
FileUpload1.SaveAs(Server.MapPath("~/poze/") + nume_fisier);

}
nume_fisier = "poze/" + nume_fisier;

if (CheckBox1.Checked)
{
query = "insert into
poze(UserId,id_galerie,titlu,descriere,locatie,data_adaugare) values('" +
Membership.GetUser().ProviderUserKey + "','" + DropDownList1.SelectedValue + "','" +
TextBox1.Text + "','" + TextBox2.Text + "','" + nume_fisier + "','" +
System.DateTime.Now.ToString("MM/dd/yyyy hh:mm:ss") + "');";
str = "update galerii set ultima_poza ='" + nume_fisier + "' where
id_galerie='" + DropDownList1.SelectedValue + "';";

}
else
{
query = "insert into poze(UserId,titlu,descriere,locatie,data_adaugare)
values('" + Membership.GetUser().ProviderUserKey + "','" + TextBox1.Text + "','" +
TextBox2.Text + "','" + nume_fisier + "','" + System.DateTime.Now.ToString("MM/dd/yyyy
hh:mm:ss") + "');";
}
SqlConnection c = new
SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString
);
SqlCommand com = new SqlCommand();
com.Connection = c;
com.Connection.Open();
com.CommandText = query;
com.ExecuteNonQuery();
if (!str.Equals(""))
{
com.CommandText = str;
com.ExecuteNonQuery();
}
Response.Redirect("adauga_poza_succes.aspx");


}

protected void CheckBox1_CheckedChanged(object sender, EventArgs e)
{
if (CheckBox1.Checked)
{
Stefania Duma Laborator DAW

15

Label5.Visible = true;
DropDownList1.Enabled = true;
DropDownList1.Visible = true;
string s = "SELECT denumire, id_galerie FROM galerii where UserId='" +
Membership.GetUser().ProviderUserKey + "';";
SqlConnection c = new
SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString
);
SqlCommand command = new SqlCommand();
command.Connection = c;
command.Connection.Open();
SqlDataSource1.SelectCommand = s;
SqlDataSource1.DataBind();
}
else
{
Label5.Visible = false;
DropDownList1.Enabled = false;
DropDownList1.Visible = false;
}
}


Administrare profil

Puteti folosi GridView. Pentru comenzile de Edit si Delete adaugati itemi CommandField. In
codul cs aveti grija sa puneti conditia ca userul sa fie logat. Aici v-am pus exemplu de
administrare de poze (asemanator se face si administrare de galerii sau pt admini, administrare de
useri).
Atentie!! La examen nu aveti voie sa folositi GridView pt edit si delete! Faceti cu
ExecuteNonQuery.
Stefania Duma Laborator DAW

16



<asp:GridView ID="GridView1" runat="server" AllowPaging="True" AllowSorting="True"
AutoGenerateColumns="False" DataSourceID="SqlDataSource1" PageSize="5"
DataKeyNames="id_poza">
<Columns>
<asp:CommandField ShowEditButton="True" HeaderText="Edit">
</asp:CommandField>
<asp:CommandField ShowDeleteButton="True" HeaderText="Delete">
</asp:CommandField>
<asp:BoundField DataField="titlu" HeaderText="titlu"
SortExpression="titlu">
<ControlStyle BorderStyle="Solid" BorderWidth="2px" />
<FooterStyle BorderStyle="Dotted" />
</asp:BoundField>
<asp:BoundField DataField="descriere" HeaderText="descriere"
SortExpression="descriere">
<ControlStyle BorderColor="#E0E0E0" Width="200px" />
</asp:BoundField>
<asp:ImageField DataImageUrlField="locatie" HeaderText="Poza"
ReadOnly="True">
<ControlStyle Height="75px" Width="75px" />
Stefania Duma Laborator DAW

17

<ItemStyle Height="50px" Width="50px" />
</asp:ImageField>
</Columns>
</asp:GridView>

In codul cs:
SqlDataSource1.SelectCommand = "SELECT [id_poza], [titlu], [descriere], [locatie] FROM
[poze] where UserId='"+Membership.GetUser().ProviderUserKey+"';";
SqlDataSource1.UpdateCommand = "UPDATE [poze] SET [titlu] = @titlu, [descriere] =
@descriere WHERE [id_poza] = @id_poza";
SqlDataSource1.DeleteCommand = "delete from comentarii where id_poza = @id_poza; DELETE
FROM [poze] WHERE [id_poza] = @id_poza";
SqlDataSource1.DataBind();



Validatori
La examen lucrati cu 2 tipuri de validatori: RequiredFieldValidator (pentru ca o cerinta din
examen este sa nu aveti campuri care au allow null) si CompareValidator (pentru ca alta cerinta
din examen este sa respectati tipurile de date, cum ar fi integer la un numar de telefon).
Pentru controlul RequiredFieldValidator tot ceea ce trebuie sa setati este ControlToValidate.
Mai jos este un exemplu de CompareValidator. Trebuie sa ii setati 3 proprietati: ce control sa
valideze (ControlToValidate), ce fel de operator sa foloseasca (Operator =DataTypeCheck) si ce
tip de date verifica (Type =Integer).
<asp: Compar eVal i dat or i d="t ext 2val " Cont r ol ToVal i dat e="t ext 2"
Oper at or ="Dat aTypeCheck" Type="I nt eger " Text ="Must be i nt eger "
Di spl ay="Dynami c" Er r or Message="I nt eger " r unat ="ser ver " / >

Alte tipuri de validatori gasiti in cursul 4 postat de domnul profesor:
http://phobos.cs.unibuc.ro/appweb/4/

S-ar putea să vă placă și