Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Artiklar / Titel på artikeln

Skapa tabellverk codebehind

Postad 2006-04-10 av Pelle Johansson i sektionen ASP.NET, C#, Okategoriserat med 0 Kommentarer | Läst av: 4562, Betyg: 80%

Förord

Tidigare i asp är du van vid att bygga strängar av html blandat med programkod. I asp.net finns den färdiga datagridd-kontrollen som är otroligt smidig. Men hur skulle man kunna arbeta med tanken att bygga en datagrid från codebehind och utan att konkatenera html-strängar? Svaret är inte så svårt faktiskt, man använder asp.net table-kontrollen, dvs och fyller, formaterar upp data. I denna artikel kommer jag visa den grundläggande tekniken.
Innehåll
  » Förord
  » Hämta data som vanligt
  » Dra en serverkontroll table till formuläret
  » Loopa datat
  » Formatera cellerna lite också
  » Summering
  » Nästa artikel
Relaterade artiklar
  » Förbered ett projekt mot dataklassen
  » Loopa data från datareader och dataset
  » Skapa ett databaslager
  » Visa data från sqldatabas via en datagrid


Förord

Nu har vi kommit så långt i artikelserien att vi har lyckats ansluta till en datakälla via en komponent vi byggt. Vi kan välja att hämta ut informationen via datareader eller dataset och som ni kommer ihåg, datareader är det som gäller så ofta det går eftersom den är snabbare och tar mindre internminne från servern.


Hämta data som vanligt

Vi börjar med att hämta informationen från databasen som vanligt. Vi kommer senare begränsa oss till några få fält genom att välja ut dessa i vår sql-sats. Koden är som tidigare:


' VB.Net

Dim dr As SqlClient.SqlDataReader = DataFunctions.SQLFunctions.ReturnDataReader("select * from customers")
While dr.Read
' ...
End While
dr.Close()



// c#

SqlClient.SqlDataReader dr = DataFunctions.SQLFunctions.ReturnDataReader("select * from customers");

while (dr.Read) {...}
while (dr.Read) {
// ....
}
dr.Close();



Dra en serverkontroll table till formuläret

Det vi nu skall göra är att använda oss av en serverkontroll som heter table. Ni ser den till vänster i er toolbox. Dra den till formuläret och sätt dess id till tblCust. Nu har vi en serverkontroll som ser ut som följer i vårt formulär:





Om du har ett tabellverk redan skapat, kan du lägga kontrollen i någon av dess celler för att bestämma vart tabellen skall ligga i förhållande till andra delar på din aspx-sida.


Loopa datat

Vi gör också som du sett ovan med koden. Vi loopar datat som vanligt för där är ingen skillnad. Det vi skall göra däremot är något helt annat inuti loopen. Vi skall skapa nya tr och td-taggar för varje rad, fylla dessa med text och sedan lägga in i vår tblCust. Så här går det till.

1. För varje rad i loopen, skapa ny tr och td-taggar.
2. Fyll td-taggarna med värden
3. Addera td-taggarna till tr-taggen
4. Addera tr-taggen till tblCust

För att "addera" kontroller till en annan används kommandot Controls.Add(). Vi skall titta närmare på detta nu.


' VB.Net
' vi rensar ut vad som fanns tidigare, exempelvis om viewstate
' håller reda på innehållet och vi vill se förändringarna
tblCust.Rows.Clear

Dim dr As SqlClient.SqlDataReader = DataFunctions.SQLFunctions.ReturnDataReader("select * from customers")
While dr.Read

Dim tr as New TableRow
Dim td1 As New TableCell
Dim td2 As New TableCell

td1.Text = dr(1)
td2.Text = dr(2)

tr.Controls.Add(td1)
tr.Controls.Add(td2)

tblCust.Controls.Add(tr)

End While
dr.Close()



// C#

tblCust.Rows.Clear();
SqlClient.SqlDataReader dr = DataFunctions.SQLFunctions.ReturnDataReader("select * from customers");
while (dr.Read) {
TableRow tr = new TableRow();
TableCell td1 = new TableCell();
TableCell td2 = new TableCell();
td1.Text = dr(1);
td2.Text = dr(2);
tr.Controls.Add(td1);
tr.Controls.Add(td2);
tblCust.Controls.Add(tr);
}
dr.Close();


Ungefär såhär ser det enklaste exemplet ut. Studera det en sekund så du förstår innebörden ordentligt. Får du kläm på detta, ja då kan du göra hur avancerade kontroller själv sen, till och med en egen datagrid för alla dina projekt i framtiden. Tänk så smidigt att bara skicka in en sql-sats.

Om du nu testar detta exempel nu skall du se vad som händer. Datat kommer att komma ut i en tabell. Du kan även sätta properties på tabellen, antingen via IDE:t eller så kan du göra det code-behind.


With tblCust
.Rows.Clear()
.CellPadding = 0
.CellSpacing = 0
.BorderStyle = BorderStyle.Dotted
.BorderWidth = Unit.Pixel(1)
End With



Här använder jag With-kommandot och det gör jag för att slippa skriva ut tblCust på varenda rad. Som du för övrigt ser, kan du gör i stort sett precis vad du vill här. Egenskaperna listas upp genom att bara skriva punkt . och med intellisense så får du alla properties (egenskaper) som objektet tblCust har att använda sig av.

I c# finns inte motsvarigheten, så där får du helt enkelt skriva som vanligt


tblCust.Rows.Clear();
tblCust.CellPadding = 0;
tblCust.CellSpacing = 0;
tblCust.BorderStyle = BorderStyle.Dotted;
tblCust.BorderWidth = Unit.Pixel(1);


Ni ser också en ny funktion, Unit.Pixel. Den används för att bestämma värden på många saker, inte bara bredd utan även fontstorlek osv. det funns även exempelvis Unit.Percentage(32) om man vill använda det.


Formatera cellerna lite också

Givetvis kan du göra precis samma sak med tr, td1 och td2 också. Vi kan ta en enkel variant och det är att färga varannan rad röd. Då kan du använda dig av MOD kommandot för att känna av om det är udda eller jämna nummer.


' VB.Net
Private Function BuildTableCodeBehind()

With tblCust
.Rows.Clear()

.CellPadding = 0
.CellSpacing = 0
.BorderStyle = BorderStyle.Dotted
.BorderWidth = Unit.Pixel(1)
End With

Dim dr As SqlClient.SqlDataReader = DataFunctions.SQLFunctions.ReturnDataReader("select * from customers")

Dim rownumber As Integer = 0

While dr.Read

Dim tr As New TableRow
Dim td1 As New TableCell
Dim td2 As New TableCell

td1.Text = dr(1)
td2.Text = dr(2)

rownumber += 1
If rownumber Mod 2 = 0 Then
tr.BackColor = Color.Red
End If

tr.Controls.Add(td1)
tr.Controls.Add(td2)

tblCust.Controls.Add(tr)

End While
dr.Close()

End Function




// C#
Private Function BuildTableCodeBehind()

With tblCust
.Rows.Clear()

.CellPadding = 0
.CellSpacing = 0
.BorderStyle = BorderStyle.Dotted
.BorderWidth = Unit.Pixel(1)
End With

Dim dr As SqlClient.SqlDataReader = DataFunctions.SQLFunctions.ReturnDataReader("select * from customers")

Dim rownumber As Integer = 0

While dr.Read

Dim tr As New TableRow
Dim td1 As New TableCell
Dim td2 As New TableCell

td1.Text = dr(1)
td2.Text = dr(2)

rownumber += 1
If rownumber Mod 2 = 0 Then
tr.BackColor = Color.Red
End If

tr.Controls.Add(td1)
tr.Controls.Add(td2)

tblCust.Controls.Add(tr)

End While
dr.Close()

End Function



Summering

Som du ser i denna artikel har vi inte skrivit en enda rad kod med strängar som byggs ihop. I stället har vi förlitat oss på de objekt som så effektivt kan användas i .net och det går fort också, du kommer märka att tabellerna byggs riktigt fort - om inte snabbare än datagridden eftersom den server-komponenten har så mycket mer funktionalitet.


Nästa artikel

I nästkommande artikel tänkte jag visa lite mer hur du kan manipulera information, lägga till annat än text, exempelvis knappar eller länkar.
Upp

0 Kommentarer

Skriv en kommentar på artikeln

Ditt betyg på artikeln



Kommentar:





Nyligen

  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo
  • 14:25 Tips på verktyg för att skapa QR-k
  • 14:23 Tips på verktyg för att skapa QR-k
  • 20:52 Fungerer innskuddsbonuser egentlig

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 569 153
27 952
271 704
1 018
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies