Avatar billede bmdk Nybegynder
08. oktober 2008 - 19:31 Der er 19 kommentarer og
2 løsninger

Udskrive html

Hej eksperter,

Sidder i øjeblikket og er ved at lære ASP.NET og har tænk på, hvordan man får det til at udskrive html?

F.eks. i PHP, der vil man jo bare skrive html'en i et loop. Hvordan gør man det i asp.net?
Avatar billede thesurfer Nybegynder
08. oktober 2008 - 19:42 #1
Du kan udskrive via: Response.Write("<b>Din tekst</b>")
Så står "Din tekst" med fed.
Avatar billede thesurfer Nybegynder
08. oktober 2008 - 19:44 #2
Hvis det er ikke svaret, smide lige noget PHP kode så man kan se hvad du mener..
Avatar billede arne_v Ekspert
08. oktober 2008 - 19:44 #3
Man kan men man boer ikke - Response.Write er ikke god ASP.NET !

Brug server side kontroller.

Og skal man endelig selv formatere i en loop saa brug en repeater !
Avatar billede bmdk Nybegynder
08. oktober 2008 - 19:44 #4
hey thesurfer,

ja, det fandt jeg lige ud af hehe. Men hvad nu, hvis man skriver selve koden i .cs filen? Så er man doomed? ;)
Avatar billede bmdk Nybegynder
08. oktober 2008 - 19:46 #5
Hey arne :)

Det lyder meget smart, må lige se hvad sådan en repeater gør! Du har tilfældigvis ikke nogle kode eksempler på det, vel? Helst i C# :)
Avatar billede arne_v Ekspert
08. oktober 2008 - 20:08 #6
<%@ import namespace="System.Data" %>
<%@ import namespace="System.Data.SqlClient" %>
<html>
<head>
<script language="C#" runat="server">
void Page_Load(Object sender, EventArgs e)
{
    SqlConnection con = new SqlConnection("server=ARNEPC3;Integrated Security=SSPI;database=Test");
    con.Open();
    SqlCommand cmd = new SqlCommand("SELECT * FROM T1", con);
    SqlDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
    MyDataList.DataSource = rdr;
    MyDataList.DataBind();
}
</script>
</head>
<body>
<form runat=server>
    <table border>
        <asp:Repeater id="MyDataList" runat="server">
            <ItemTemplate>
                <tr>
                <td><%# DataBinder.Eval(Container.DataItem,"F1") %></td>
                <td><%# DataBinder.Eval(Container.DataItem,"F2") %></td>
                </tr>
            </ItemTemplate>
        </asp:Repeater>
    </table>
</form>
</body>
</html>
Avatar billede arne_v Ekspert
08. oktober 2008 - 20:13 #7
C# koden er inline men kunne lige saa godt vaere i .aspx.cs
Avatar billede bmdk Nybegynder
08. oktober 2008 - 20:14 #8
Mange tak! Jeg fandt også lidt selv - google ved jo alt ;)

Nu er det så bare det, at jeg hiver noget data ud fra databasen og smider det i lister. Er det muligt at bruge den i forbindelse med en liste af objekter på nogen måde?

Er godt nok lidt blank på det punkt ;)
Avatar billede arne_v Ekspert
08. oktober 2008 - 20:27 #9
Jeg tror bare at du skal finde en passende server side web kontrol.
Avatar billede bmdk Nybegynder
08. oktober 2008 - 20:36 #10
Hmm, må vist bare bruge Response.Write tror jeg - det andet er vist for avanceret til mit miveau.

Ved ikke, hvem af jer der skal have point? Eller skal I dele dem?
Avatar billede thesurfer Nybegynder
08. oktober 2008 - 22:01 #11
bmdk> Du skriver "smider det i lister".. hvad mener du med det?

I ASP.NET har du f.eks. ListBox og DropDownList. Begge disse tager imod typen ListItem.

Du kunne f.eks. loope og tilføje dem.. noget i stil med

for(int i = 0; i < 5; i++)
{
  ListItem li = new ListItem("vaerdi_nr_" + i,"tekst nr: " + i);
  IdPåDinListe.Items.Add(li);
}
Erstat "IdPåDinListe" med ID'et på din liste..

Noget i den stil.. jeg husker ikke helt syntaxen.. :-)
Avatar billede bmdk Nybegynder
08. oktober 2008 - 22:07 #12
hey thesurfer,

Jeg hiver data ud af db'en og bygger objekter op. Disse objekter bliver lagret i en liste, som sendes med op igennem lagene.

Dvs. at jeg vil have den til at udskrive som følger på web (pseudo kode):

for(Objekt o i MinListe)
{
  <table>
    <tr>
      <td>o.Navn</td>
      <td>o.Adresse</td>
    </tr>
  </table>
}

Ligesom man kan i f.eks. JSP og PHP. Dvs den udskriver en ny tabel for hvert objekt. Hpber det giver mening :)
Avatar billede thesurfer Nybegynder
08. oktober 2008 - 22:14 #13
Jeg har næsten lige arbejdet med VB.NET, så syntaksen er nok ikke helt korrekt..

Men det bliver nok noget i stil med:

for(Objekt o i MinListe)
{
  Table t = new Table;
  TableRow tr = new TableRow;
 
  TableCell navn = new TableCell;
  TableCell adresse = new TableCell;
 
  navn.Text = o.Navn;
  adresse.Text = o.Adresse;
 
  tr.Cells.Add(navn);
  tr.Cells.Add(adresse);
  t.Rows.Add(tr);

}

Det kan godt være, at der skal "()" før ";" ved defineret af "t", "tr", "navn" og "adresse" kontrollerne..
Avatar billede thesurfer Nybegynder
08. oktober 2008 - 22:17 #14
Doh! Det kommer man ingen steder med.. :-)

Linien "  Table t = new Table;" skal ikke være der, da den jo så kun eksisterer i selve løkken..

Jeg ved dog ikke helt hvordan man tilføjer en control til siden, i stedet for bare en anden control..

Eksempel: Hvis der allerede eksisterer en tabel med ID "t" og runat="server", kan man tilføje rows via:

t.Rows.Add(DenNyeRow)

Jeg tror at man skal tilføje tabellerne til Page.

Dvs: Page.Controls.Add(t)
Avatar billede arne_v Ekspert
09. oktober 2008 - 04:20 #15
For sådan en tabel vil du enten bruge en passende server side kontrol eller selv lave
HTML tags med en repeater som vist ovenfor.

Og den pæne måde at lave det på i JSP er også med taglibs (JSTL, Struts, JSF, whatever),
hvilket svarer rimeligt til ASP.NET måden.
Avatar billede arne_v Ekspert
28. oktober 2008 - 02:29 #16
bmdk ?
Avatar billede bmdk Nybegynder
28. oktober 2008 - 08:48 #17
Sorry, havde fuldstændig glemt den tråd her :(

Jeg fik hul på bylden til sidst med asp.net - skulle lige fatte det med controls og databind osv :) så det er perfekt!

Vil I dele points, eller?
Avatar billede arne_v Ekspert
28. oktober 2008 - 14:19 #18
fint med mig
Avatar billede bmdk Nybegynder
28. oktober 2008 - 19:37 #19
Cool! :) smider du også lige et svar så, thesurfer?
Avatar billede thesurfer Nybegynder
29. oktober 2008 - 02:54 #20
Yeps :-)
Avatar billede bmdk Nybegynder
29. oktober 2008 - 08:27 #21
Således :) I skal have mange tak for hjælpen!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester