Avatar billede claushelth Nybegynder
10. februar 2004 - 15:21 Der er 5 kommentarer

Control der benytter response.Write æv

Her et eksempel i min bog der anvender Response.Write, hvilket ikke er særlig rart, når jeg anvender en Header og footer fra en klasse som alle mine aspx sider nedarver fra.

Controlen fra mn bog vil have at jeg laver den som en script fil (.ascx), men jeg har sat den i en codebehind fil i stedet (.ascx.cs). Problemet er at min control fu**** mit design op.

min aspx side kalder controlen sådan her:
<%@ Page language="c#" Codebehind="TableRead.aspx.cs" AutoEventWireup="false" Inherits="dothelth.day9.TableRead" %>
<%@ Register TagPrefix="WebBook" TagName="TableWriter" Src="ShowTable.ascx" %>
    <form id="Form1" method="post" runat="server">
        <h3>The Costomer table from Nwind DB</h3>
        <WebBook:TableWriter TableName="Customers" runat="server" />
    </form>
(Resten af mit html ligger i en klasse der nedarves fra)

controllen laver et udtræk fra en DB og udskriver resultatet i ResponseWrite, jeg ville gerne have skrevet ud i f.eks en Label eller noget...men har ikke kunnet få det til at virke

Mærkeligt at bogen ikke tager højde for Response.Write selv i en control

claus
Avatar billede claushelth Nybegynder
10. februar 2004 - 15:24 #1
på trods af at jeg skriver overskriften først i koden, så bliver den udskrevet til sidst i browseren
Avatar billede claushelth Nybegynder
10. februar 2004 - 15:39 #2
Hvis jeg laver eksemplet i .asxc filen som de gø i bagen er det ikke noget probelm, men jeg vil jo have det ud i codebehind filen, da jeg jo har en autocomplete der, samt der er kodestilen pænere!!!
Avatar billede claushelth Nybegynder
10. februar 2004 - 15:56 #3
jeg er måske kommet lidt tættere...jeg havde sat controllen ind under on_load() hvilket muligvis bliver aktiveret med det samme min aspx side angiver controllen i toppen, og derfor udskriver den som det første??? Jeg ved dog ikke hvordan den skal aktiveres fra codebehind filen
Avatar billede dj Nybegynder
19. februar 2004 - 15:56 #4
Der er flere forskellige måder hvorpå du kan kontrollere outputtet på siden.

1)

Hvis der f.eks. er tale om en enkelt tekststreng kan du som du selv er lidt inde på benytte en label. Her er et lille eksempel:

<asp:Label runat=server id="HelpLabel" />

i codebehinden skal du så definere HelpLabel, det gør du ved at skrive:

protected Label HelpLabel;

Herefter kan du så fra en metode kalde:

HelpLabel.Text = "Klik spørgsmålstegnet til højre for hjælp";  //Dette kunne selvfølgelig ligesåvel være dit output fra databasen.

Placeringen af outputtet kommer så an på hvor du har smidt dit <asp:Label> tag i din HTML kode.

2)

En knap så pæn løsning der lidt leder tankerne tilbage på ASP er følgende:

Lav en metode i din codebind fil f.eks:

protected string OutputMethod() {
  return = "Test"; //Dette kunne selvfølgelig ligesåvel være dit output fra databasen.
}

I din aspx fil kan du nu skrive følgende på det sted i koden hvor du ønsker at få outputtet ud: <%= OutputMethod(); %>

3)

Til databaseoutput ønsker man ofte at vise flere rows i f.eks. en tabel struktur, hertil kan benyttes en Repeater klasse.

I ASPX filen tilføjes:

<asp:Repeater id=Repeater1 runat="server">
  <HeaderTemplate>
    <table>
  </HeaderTemplate>
  <ItemTemplate>
    <tr>
      <td>
        <%# DataBinder.Eval(Container.DataItem, "name") %>"
      </td>
    </tr>
  </ItemTemplate>
  <FooterTemplate>
    </table>
  </FooterTemplate>
</asp:Repeater>

Codebehind delen kan så se f.eks. således ud:

protected Repeater Repeater1;

private void Page_Load(object sender, System.EventArgs e) { 
  SqlConnection OSqlConnection = new SqlConnection 
"Server=xxx;UID=xxx;PWD=xxx;Database=MinDB"); 
  string SqlStatement = "SELECT name FROM person";
  SqlCommand OSqlCommand = new SqlCommand(SqlStatement, OSqlConnection); 
  OSqlConnection.Open(); 
  SqlDataReader OSqlDataReader = OSqlCommand.ExecuteReader(); 
  Repeater1.DataSource = OSqlDataReader; 
  Repeater1.DataBind(); 
}


Håber det kunne være til lidt hjælp.
Avatar billede dj Nybegynder
21. februar 2004 - 20:46 #5
hep hep er der liv ? :)
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