Datalist i asp.NET
Förord
Inledningsvis kan det tyckas att skillnaderna mellan en DataList och en Repeater kontroll är väldigt små, men tittar man lite mer under ytan kommer man att upptäcka att det finns en enorm styrka med den förstnämnda.Innehåll
En Repeater kontroll har enbart som uppgift att presentera information baserad på de mallar som man skapar, men med en DataList får man även möjligheten att göra med komplexa saker så som att ändra informationen som presenteras.
Detta exempel kommer att bygga vidare på att visa kundinformation, men undantaget att man kommer även att kunna ta bort, samt ändra informationen som presenteras.
Precis som med en Repeater kontroll, så använder sig en DataList kontroll av mallar för att definiera hur informationen skall presenteras. Förutom de mallar som finns tillgängliga när man använder en Repeater kontroll, så finns det ytterligare två mallar:
DataList kontrollen stöder även att man skickar med en rad olika kommandon till den, så att den vet vad man vill göra. De flesta kontroller som använda för att kunna trycka på, så som Button, LinkButton och CheckBox har en egenskap som heter CommandName som anger vilket kommando den skall skicka med när man trycker på den.
För att genomföra detta exempel förutsätts det att man är bekväm med de övriga exempel som delats ut, speciellt hur man arbetar med en databas från ASP.NET, hur man arbetar med mallbaserade kontroller så som Repeater kontrollen, hur man skapar händelsehanterar, samt hur man använder lagrade procedurer.
De anrop som kommer att genomföras mot databasen, kommer att baserad på lagrade procedurer, så de är det första som vi behöver skapa innan vi går vidare med att skapa ASP.NET sidan som skall användas.
Som bas till databasen använder vi oss av en tabell med namnet Kunder som har följande uppbyggnad:
Den första lagrade proceduren som vi skall skapa, används för att hämta förnamn och efternamn för samtliga kunder i databasen:
Vi kommer även att behöva en lagrad procedur för att kunna plocka bort en enskild kunde ur databasen:
Den sista lagrade proceduren vi behöver skapa, är för att plocka bort en enskild kund:
Nu är det förberedande arbetet för uppgiften klar, och det är dags att börja skapa den sida som kommer att innehålla vår DataList kontroll och kommer låta oss att plocka bort och ändra kund information ut databasen.
När detta är klar kommer du att ha skapat en sida som ser ut som följande:
Om man tittar på den nyskapade sidan i kod läge, genom att ställa om från design till html i WebMatrix, ser man att följande html-kod har skapats:
Som nämndes tidigare, så bygger DataList kontrollen på användningen av mallar för att ange hur innehållet skall presenteras och hanteras. Detta exempel kommer att presentera informationen i en tabell med hjälp av HeaderTemplate, FooterTemplate, ItemTemplate, samt AlternatingItemTemplate.
Detta exempel kommer att bygga vidare på att visa kundinformation, men undantaget att man kommer även att kunna ta bort, samt ändra informationen som presenteras.
Precis som med en Repeater kontroll, så använder sig en DataList kontroll av mallar för att definiera hur informationen skall presenteras. Förutom de mallar som finns tillgängliga när man använder en Repeater kontroll, så finns det ytterligare två mallar:
Mall | Beskrivning |
---|---|
EditItemTemplate | Denna mallen definierar de element som skall vara tillgängliga när en rad i DataList kontrollen skall vara tillgängligt för att ändras. |
SelectedItemTemplate | Man kan ange hur en rad skall se ut om man väljer den i DataList kontrollen. I detta exempel kommer vi inte att använda denna. |
DataList kontrollen stöder även att man skickar med en rad olika kommandon till den, så att den vet vad man vill göra. De flesta kontroller som använda för att kunna trycka på, så som Button, LinkButton och CheckBox har en egenskap som heter CommandName som anger vilket kommando den skall skicka med när man trycker på den.
Kommando | Beskrivning |
---|---|
Cancel | Ser till att kontrollens CancelCommand händelse anropas och på så sätt signalerar att eventuella ändringar på informationen skall ignoreras. |
Delete | Ser till att kontrollens DeleteCommand händelse anropas och på så sätt signalerar att den aktuella raden skall plockas bort. |
Edit | Ser till att kontrollens EditCommand händelse anropas och på så sätt signalerar att mallen EditItemTemplate skall användas för att visa den aktuella raden. |
Select | Ser till att kontrollens SelectItemChanges händelse anropas och på så sätt signalerar att mallen SelectedItemTemplate skall användas för att visa den aktuella raden. |
Update | Ser till att kontrollens UpdateCommand händelse anropas och på så sätt signalerar att förändringar i den aktuella raden skall sparas. |
För att genomföra detta exempel förutsätts det att man är bekväm med de övriga exempel som delats ut, speciellt hur man arbetar med en databas från ASP.NET, hur man arbetar med mallbaserade kontroller så som Repeater kontrollen, hur man skapar händelsehanterar, samt hur man använder lagrade procedurer.
De anrop som kommer att genomföras mot databasen, kommer att baserad på lagrade procedurer, så de är det första som vi behöver skapa innan vi går vidare med att skapa ASP.NET sidan som skall användas.
Som bas till databasen använder vi oss av en tabell med namnet Kunder som har följande uppbyggnad:
Kolumn | Typ |
---|---|
ID | Int (Primärnyckel, räknare) |
Firstname | VarChar(15) |
Lastname | VarChar(15) |
Den första lagrade proceduren som vi skall skapa, används för att hämta förnamn och efternamn för samtliga kunder i databasen:
CREATE PROCEDURE GetCustomers
AS
SELECT Kunder.Firstname, Kunder.Lastname
FROM Kunder
Vi kommer även att behöva en lagrad procedur för att kunna plocka bort en enskild kunde ur databasen:
CREATE PROCEDURE UpdateCustomer
(
@id int,
@firstname varchar(15),
@lastname varchar(15)
)
AS
UPDATE Kunder
SET Kunder.Firstname = @firstname, Kunder.Lastname = @lastname
WHERE ID = @id
Den sista lagrade proceduren vi behöver skapa, är för att plocka bort en enskild kund:
CREATE PROCEDURE DeleteCustomer
(
@id int
)
AS
DELETE FROM Kunder
WHERE Kunder.ID = @id
Nu är det förberedande arbetet för uppgiften klar, och det är dags att börja skapa den sida som kommer att innehålla vår DataList kontroll och kommer låta oss att plocka bort och ändra kund information ut databasen.
- Starta WebMatrix och skapa ett nytt projekt av typen ASP.NET Page.
- Ge filen namnet DataList.aspx.
- Kontroller att det valda språket för sidan är C#.
- Klicka sedan på OK för att skapa sidan.
- Kontrollera att sidan visas i design läge.
- Placera en Label på sidan och ändra egenskapen Text till Kundregister.
- Placera markören i slutat och infoga ny rad (tryck return).
- Placera en DataList kontroll på sidan.
När detta är klar kommer du att ha skapat en sida som ser ut som följande:
Om man tittar på den nyskapade sidan i kod läge, genom att ställa om från design till html i WebMatrix, ser man att följande html-kod har skapats:
Som nämndes tidigare, så bygger DataList kontrollen på användningen av mallar för att ange hur innehållet skall presenteras och hanteras. Detta exempel kommer att presentera informationen i en tabell med hjälp av HeaderTemplate, FooterTemplate, ItemTemplate, samt AlternatingItemTemplate.
0 Kommentarer