Avatar billede ameq Nybegynder
09. oktober 2004 - 11:52 Der er 37 kommentarer og
1 løsning

Hjælp til gæstebog

Hej jeg sider og prøver at lære lidt asp.net, men jeg har skrivet c# i et par månderner nu men jeg har et problem med at forstå noget i asp.net...
jeg kan godt se når jeg laver en console eller en winform hvordan man kan smide et obj ind i et nyt obj og på den måde få det "flot" ud på skræmen men en ting som jeg ikke forstå i asp.net er hvordan får jeg den her data ud på min side, for jeg har fået fortalt at jeg ikke må kalde min database conn på .aspx side men jeg skal lave det hele i aspx.cs filen men hvordan får jeg lige min data over i aspx filen så? for hvis jeg bare udskriver den så kommer den i toppen af filen og hvis jeg laver et data grid så har jeg ikke den control med mit design som jeg ønsker...
Avatar billede snepnet Nybegynder
09. oktober 2004 - 13:52 #1
mener du at hvis du bare udskriver med Response.Write() eller ?

Jeg er ikke sikker på at jeg sådan er helt med på hvad det helt konkret er du er ude efter, men ;

- Det er rigtig at et datagrid som udgangspunkt er ret intetsigende når man ikke gør noget ved det, men du ganske gode muligheder for tilpasning.

- Der findes andre kontroller der som et datagrid er gode til at fremvise gentagne dataelementer. Specielt en DataList og en Repeater kan den slags, og de giver hver især bedre frihed for at sikre et personligt UI end datagriddet gør. Det kræver så også lidt mere at få dem til at vise noget.

- Der er masser af muligheder for at styre hvad der kommer "på skærmen" fuldstændig som du har lyst til.

- Response.Write() kan ikke anbefales.

Kan du ikke stille et lidt mere konkret spørgsmål... Så skal jeg nok komme med et eksempel.
Du kan også lægge noget kode ud, som du bruger nu - og som du er lidt utilfreds med... Så skal du få et bud.

mvh
Avatar billede ameq Nybegynder
09. oktober 2004 - 17:50 #2
den der Repeater har jeg læst op før og jeg tror det er noget i den stil men her er det html output som jeg ønsker udskrivet i et loop eller ind til mig rs er tomt


<table width="500" border="1">
  <tr>
    <td>Navn</td>
    <td>Email</td>
    <td>Hjemmeside</td>
  </tr>
  <tr>
    <td colspan="3">&nbsp;</td>
  </tr>
</table>

så er der en mulighed for jeg kan få loop den table ud?
Avatar billede snepnet Nybegynder
09. oktober 2004 - 18:06 #3
jepper.... du kan sådan her :

// hvis du har en form på siden med ID="Form1"
protected HtmlForm Form1;

Jeg har her gået ud fra at du har en DataTable, og at kolonnerne hedder det samme som du har skrevet.
(den kan du så kalde fra page_load).

// metode til at skrive tabellen ud - en datatable som parameter
private void GenerateTable(DataTable dt)
{
  // først en tabel
  Table tbl = new Table;
  tbl.Width = 500;
 
  // variable til rækker og celler
  TableRow tr;
  TableCell tc;

  // for hver række i tabellen
  foreach(DataRow dr in dt.Rows)
  {
      // en ny række
      tr = new TableRow();
     
      // celle til navn
      tc = new TableCell();
      tc.Text = dr["Navn"].ToString();
      tr.Cells.Add(tc);   

      // celle til email
      tc = new TableCell();
      tc.Text = dr["Email"].ToString();
      tr.Cells.Add(tc);   

      // celle til Hjemmeside
      tc = new TableCell();
      tc.Text = dr["Hjemmeside"].ToString();
      tr.Cells.Add(tc);   
     
      // rækken ind i tabellen
      tbl.Rows.Add(tr);

      // ny række (den uden indhold)
      tr = new TableRow();
      tc = new TableCell();
      tc.ColSpan = 3;
      tc.Text = "&nbsp;";
   
      // og ind med den
      tbl.Rows.Add(tr);
  }
 
  // og ind på formen med tabellen
  Form1.Controls.Add(tbl);
}

kan du følge det ?

mvh
Avatar billede snepnet Nybegynder
09. oktober 2004 - 18:06 #4
(jeg har bare skrevet det herude, så der kan godt være fejl)
Avatar billede ameq Nybegynder
09. oktober 2004 - 18:34 #5
skal det skrivs i page_load?
Avatar billede ameq Nybegynder
09. oktober 2004 - 18:35 #6
flot skal lige havde læst det hele =)
Avatar billede ameq Nybegynder
09. oktober 2004 - 18:37 #7
men et DataTable?

string strSQL = "select Navn, Hjemmeside, Email, Tekst from tagwall order by id";
Db Open = new Db(strSQL);
OleDbDataReader rs = Open.cmd.ExecuteReader();

kan det blive et datatable?
Avatar billede ameq Nybegynder
09. oktober 2004 - 18:41 #8
og er der en måde jeg kan fortælle hvor jeg vil havde den her tabel ind f.eks. et span eller et div tag
Avatar billede snepnet Nybegynder
09. oktober 2004 - 18:41 #9
nope... ikke umiddelbart, men du kan modificere det til at bruge en reader rimelig nemt :

// metode til at skrive tabellen ud - en datatable som parameter
private void GenerateTable(OleDbDataReader reader)
{
  // først en tabel
  Table tbl = new Table;
  tbl.Width = 500;
 
  // variable til rækker og celler
  TableRow tr;
  TableCell tc;

  // for hver række i tabellen
  while(reader.Read())
  {
      // en ny række
      tr = new TableRow();
     
      // celle til navn
      tc = new TableCell();
      tc.Text = reader["Navn"].ToString();
      tr.Cells.Add(tc);   

      // celle til email
      tc = new TableCell();
      tc.Text = reader["Email"].ToString();
      tr.Cells.Add(tc);   

      // celle til Hjemmeside
      tc = new TableCell();
      tc.Text = reader["Hjemmeside"].ToString();
      tr.Cells.Add(tc);   
     
      // rækken ind i tabellen
      tbl.Rows.Add(tr);

      // ny række (den uden indhold)
      tr = new TableRow();
      tc = new TableCell();
      tc.ColSpan = 3;
      tc.Text = "&nbsp;";
   
      // og ind med den
      tbl.Rows.Add(tr);
  }

  reader.Close();

  // og ind på formen med tabellen
  Form1.Controls.Add(tbl);
}


og jeps - du kan bare kalde den fra page_load... altså sådan her :

private void Page_Load(object sender, System.EventArgs e)
{
  DataTable dt = GetTheData(...); // du har sikkert noget i den stil :o)
  GenerateTable(dt);
}
Avatar billede snepnet Nybegynder
09. oktober 2004 - 18:44 #10
og mht til det med hvor den bliver placeret, så er der ikke noget ballade med det.
dels kan du sætte positionereringen med styles :
tbl.Style.Add("position","absolute");
tbl.Style.Add("left","100px");
tbl.Style.Add("top","200px");

men det nemmeste er nok hvis du bare klasker et Panel ind i designeren (hvis du bruger VS eller WebMatrix), og så sørger for at smide tabellen ind i det :

hvis din placeholder hedder ph1 skifter du bare :
Form1.Controls.Add(tbl);
ud med
ph1.Controls.Add(tbl);

mvh
Avatar billede ameq Nybegynder
09. oktober 2004 - 18:45 #11
og jeps - du kan bare kalde den fra page_load... altså sådan her :

private void Page_Load(object sender, System.EventArgs e)
{
  DataTable dt = GetTheData(...); // du har sikkert noget i den stil :o)
  GenerateTable(dt);
}

den fik jeg ikke lige ud over GenerateTable();
Avatar billede ameq Nybegynder
09. oktober 2004 - 18:48 #12
men jeg får den her fejl

A new expression requires () or [] after type
i linen Table tbl = new Table;
Avatar billede ameq Nybegynder
09. oktober 2004 - 18:49 #13
samt 'System.Web.UI.WebControls.TableCell' does not contain a definition for 'ColSpan'

tc.ColSpan = 3;
Avatar billede snepnet Nybegynder
09. oktober 2004 - 18:54 #14
ColSpan = ColumnSpan (sorry)

og det er selvfølgelig Table tbl = new Table();

og du kan kombinere din kode sådan her :

// metode til at skrive tabellen ud - en datatable som parameter
private void GenerateTable(OleDbDataReader reader)
{
  // først en tabel
  Table tbl = new Table();
  tbl.Width = 500;
 
  // variable til rækker og celler
  TableRow tr;
  TableCell tc;

  string strSQL = "select Navn, Hjemmeside, Email, Tekst from tagwall order by id";
  Db Open = new Db(strSQL);
  OleDbDataReader rs = Open.cmd.ExecuteReader();

  // for hver række i tabellen
  while(reader.Read())
  {
      // en ny række
      tr = new TableRow();
      ... osv

håber du kan få det til at funge :o)

mvh
Avatar billede ameq Nybegynder
09. oktober 2004 - 19:02 #15
det vil jeg tror det gør, men kan du forklare hvordan det fongere eller det der eller har du set link?
Avatar billede snepnet Nybegynder
09. oktober 2004 - 19:05 #16
jeg har lige fået gæster, men jeg skal nok vende tilbage... du kan lige se om du kan få det til at virke, og give en tilbagemelding - eventuelt med et par bemærkninger om hvilke dele du ikke helt kan følge.
mvh :o)
Avatar billede ameq Nybegynder
09. oktober 2004 - 19:11 #17
jeg har fået det til at virke

men er slet ikke sikker på alt det med new table
Avatar billede snepnet Nybegynder
09. oktober 2004 - 20:18 #18
Table er en serverkontrol, og det fulde navn er :
System.Web.UI.WebControls.Table

Du kan betragte det som en serverkontrol ligesom alle andre f.eks. :
System.Web.UI.WebControls.Button
System.Web.UI.WebControls.Panel
System.Web.UI.WebControls.PlaceHolder
mvh

En serverkontrol er et element som du kan instantiere, og manipulere på serveren, og som renderer "noget" ud til klienten, og dette "noget" vil så typisk være noget html.

hvis du tilføjer en Button til dit kontroltræ, vil det i sidste ende bliver til :
<input type="submit" osv ude hos klienten (altså i browseren).

Den benyttede
System.Web.UI.WebControls.Table
renderes så ud til klienten som en
<table></table>

hvert TableRow renderes som <tr></tr>, og hver TableCell renderes som <td></td>
og hvis du så tilføjer en TableCell til en TableRow sådan her :

TableRow tr = new TableRow();
TableCell tc = new TableCell();
tc.Text = "hej";
tr.Cells.Add(tc); // her tilføjes cellen til rækken

vil det resultere i :
<tr>
  <tc>hej</tc>
</tr>

og sætter du så din TableRow ind i en Table sådan her :

Table tbl = new Table();
// det fra før
TableRow tr = new TableRow();
TableCell tc = new TableCell();
tc.Text = "hej";
tr.Cells.Add(tc); // her tilføjes cellen til rækken
// rækken tilføjes tabellen
tbl.Rows.Add(tr);

vil det resultere i dette :
<table>
<tr>
  <tc>hej</tc>
</tr>
</table>

Kan du følge det - eller er det helt sort snak ?
(du spørger bare løs... så håber jeg at jeg kan forklare det på en eller anden måde så du synes det giver mening)

mvh
Avatar billede ameq Nybegynder
09. oktober 2004 - 20:23 #19
Table tbl = new Table();
// det fra før
TableRow tr = new TableRow();
TableCell tc = new TableCell();
tc.Text = "hej";
tr.Cells.Add(tc); // her tilføjes cellen til rækken
// rækken tilføjes tabellen
tbl.Rows.Add(tr);

det vil sige at man starter med at lave <table> taget, så laver en en <tr> og i den <tr> tilføjer man en <td> hvor man har sætter et indhold (tekst)

men hvis nu jeg godt vil lave en 2 x 2 table? hvordan ser det lige ud?
Avatar billede snepnet Nybegynder
09. oktober 2004 - 20:27 #20
Sådan her :

Table tbl = new Table();
TableRow tr = new TableRow();

//
// ind med 2 celler
//
// første celle
TableCell tc = new TableCell();
tc.Text = "1";
tr.Cells.Add(tc); // her tilføjes cellen til rækken
// anden celle
TableCell tc = new TableCell();
tc.Text = "2";
tr.Cells.Add(tc); // her tilføjes cellen til rækken

// rækken tilføjes tabellen (og rækken indeholder så nu 2 celler
tbl.Rows.Add(tr);
Avatar billede snepnet Nybegynder
09. oktober 2004 - 20:29 #21
hov... 2x2... så skal du jo lige have en række og 2 nye celler sådan her :

//
// ind med 2 celler
//
// første celle
TableCell tc = new TableCell();
tc.Text = "1_1";
tr.Cells.Add(tc); // her tilføjes cellen til rækken
// anden celle
TableCell tc = new TableCell();
tc.Text = "1_2";
tr.Cells.Add(tc); // her tilføjes cellen til rækken
tbl.Rows.Add(tr); // her tilføjes rækken til tabellen
//
// ind med en række med 2 celler til
//
tr = new TableRow();
TableCell tc = new TableCell();
tc.Text = "2_1";
tr.Cells.Add(tc); // her tilføjes cellen til rækken
// anden celle
TableCell tc = new TableCell();
tc.Text = "2_2";
tr.Cells.Add(tc); // her tilføjes cellen til rækken
tbl.Rows.Add(tr); // her tilføjes rækken til tabellen

mvh
Avatar billede ameq Nybegynder
10. oktober 2004 - 08:30 #22
okey hvad nu hvis jeg skal span dem? så jeg har 1 td også nede under har jeg 2?

og hvis jeg har en jeg vil havde en stor i venstre side og højre side skal være to celler?
Avatar billede ameq Nybegynder
10. oktober 2004 - 11:12 #23
men sider lige og arbejde med at lave en constructors til at lave et OleDbDataReader
som jeg så vil lave en get metode til. Men jeg få en fejl at den ikke kunne OleDbDataReader om til en string, kan man kun get en string?
Avatar billede snepnet Nybegynder
10. oktober 2004 - 15:01 #24
der tabte du mig......
Avatar billede ameq Nybegynder
10. oktober 2004 - 15:57 #25
det her er så lige fra et nyhed system men iden skulle være den samme

        private OleDbDataReader Listen;

        public Nyheder()
        {
            string strSQL = "select * from nyheder order by nyhed_id";
            Db Conn = new Db(strSQL);
            Listen = Conn.cmd.ExecuteReader();
            Conn.Close();
        }
       
        public string List
        {
            get
            {
                return Listen;
            }
        }

også ville jeg kalde List fra min aspx.cs fil men Return Listen skal være en string kan man løse det? eller er hele ide "dum"
Avatar billede snepnet Nybegynder
10. oktober 2004 - 17:19 #26
hvis der nu er 10 nyheder.... hvordan ville du så returnerer dem som én string ?
... det giver ikke så meget mening synes jeg.
hvorfor skal det være én string du får tilbage ?
Avatar billede ameq Nybegynder
10. oktober 2004 - 18:43 #27
nej jeg ville havde det overført som et OleDbDataReader men der er lidt of topic så det tager vi en anden dag

men
Kommentar: ameq
10/10-2004 08:30:21
okey hvad nu hvis jeg skal span dem? så jeg har 1 td også nede under har jeg 2?

og hvis jeg har en jeg vil havde en stor i venstre side og højre side skal være to celler?

og hvadan skulle jeg få den ind på side hvor jeg ønsker, skulle jeg bruge en user control? eller hva der et tag til det?
Avatar billede snepnet Nybegynder
10. oktober 2004 - 18:58 #28
Hej ameq :o)

Med hensyn til det med placeringen, så skrev jeg lidt om det her :
09/10-2004 18:44:58

Spanning på cellerne indgår her :
09/10-2004 18:06:07
(bare skift ColSpan ud med ColumnSpan jf. 09/10-2004 18:54:27)

Med hensyn til selve opbygningen af tabellen, så må du jo bare sætte kolonner og rækker ind indtil du synes det passer....
Du kan jo eventuelt bygge en statisk tabel op til at styre layoutet med, og så vælge en af cellerne som du så propper din dynamiske tabel ind i fra koden.

Men... fortæl lige hvilket udviklingsmiljø du bruger - så kan det nogen gange være lidt nemmere at være konkret omkring praktisk løsning.

mvh
Avatar billede ameq Nybegynder
11. oktober 2004 - 07:52 #29
MS Visual Studio 2003
Avatar billede snepnet Nybegynder
16. oktober 2004 - 23:47 #30
Hej ameq :o)
(ved ikke om du har læst min besked herude, men jeg har været væk den sidste uge).
har du stadig problemer her, og er der noget "der hænger" ?
mvh
Avatar billede ameq Nybegynder
17. oktober 2004 - 10:24 #31
hey igen og wb =)

jeg er på skole lige nu hvor vi har noget om asp.net og jeg vil lige vente med at bruge mere af dig tid, end til jeg ved hvor meget jeg lære på mit skole ophold for så kan det jo være at jeg selv kan løste mit problem.

men skal vi ikke sige at jeg skrive til dig når jeg er færdig, så kan vi se om jeg skal havde et svar eller hvordan?
Avatar billede snepnet Nybegynder
17. oktober 2004 - 11:23 #32
bare iorden :o)
vi skrives ved.
mvh
Avatar billede snepnet Nybegynder
06. november 2004 - 00:16 #33
hej ameq :o)
hvordan går det her ?
(jeg smider lige et svar hvis du kunne bruge det til noget)
mvh
Avatar billede ameq Nybegynder
06. november 2004 - 13:10 #34
jeg blic færdig i gå på skolen, så det går okey =)
og ville til at snakker om design og layout i MS Visual Studio 2003.

For jeg har ikke rigtig fået løst mit program, jeg forstå godt det eks. med tablen... men er der ikke en anden og smadre måde at gøre det på? hvor meget design kan du lave på et datagrid?
Avatar billede snepnet Nybegynder
06. november 2004 - 13:32 #35
du kan lave en hel del, men der er bedre muligheder med en datalist eller en repeater. det var fordi du spurgte om du kunne loope det ud du fik den med tabellen.

datagriddet er bedst til excell-stilen, så hvis du allerede fra starten ved at der stilles lidt mere avancerede krav til din liste bør du tage en af de andre.
(de kræver så også at man laver lidt mere arbejde for at få noget på skærmen)

mvh
Avatar billede ameq Nybegynder
06. november 2004 - 16:40 #36
okey jeg vil lige lave et nyt sprøgsmål for det er vist en anden snak =) men tak for hjlæpen
Avatar billede snepnet Nybegynder
06. november 2004 - 17:09 #37
du er i hvert fald meget velkommen :o)
(hvis du søger på msdn tror jeg du kan finde en stak sammenligninger af de 3 kontroller... fordele, ulemper og muligheder mv, men det kan du jo nok også finde andre steder på nettet)
mvh
Avatar billede ameq Nybegynder
07. november 2004 - 10:39 #38
okey tak
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