ASP.NET 2.0 (C#) Response.Write help! (Opgelost)
hanswaaah - 16/05/2007 19:53
Nieuw lid
Ik ben aan het coderen en met hem command Response.Write laat ik zien wat er uit mijn SQL database komt.
Het probleem dat ik heb is dat deze informatie bovenaan in de pagina wordt getoont, en niet op de plaats waar ik het wil hebben (onderaan)
Weet iemand hoe dat moet, of weet iemand een ander commando die ik kan gebruiken?
19 antwoorden
Gesponsorde links
Abbas - 16/05/2007 19:57 (laatste wijziging 16/05/2007 20:00)
Crew .NET
Steek de waarde in een label "<asp:Label ..." en labels plaats je waar je wil op je pagina.
<asp:Label ID="label_een" runat="server" />
En de code:
string waarde = "GEGEVENS UIT DB";
label_een.Text = waarde;
string waarde = "GEGEVENS UIT DB" ;
label_een. Text = waarde;
Of je zet ergens in je formulier dit waar je wil:
<%# waarde %>
En dan dit in je code:
protected string waarde = "GEGEVENS UIT DB";
this.DataBind;
protected string waarde = "GEGEVENS UIT DB" ;
this. DataBind;
hanswaaah - 16/05/2007 20:12 (laatste wijziging 16/08/2007 10:39)
Nieuw lid
de code staat in een .cs bestand.
daarin staat hetvolgende:
protected void Button2_Click(object sender, EventArgs e)
{
string order_nr = TextBox1.Text;
SqlConnection inloggen = new SqlConnection(@"Initial Catalog=database5c.mdf;Data Source=HANS\SQLEXPRESS;Integrated Security=True");
SqlCommand myCommand = new SqlCommand("SELECT Tbl_Orderregels.aantal, Tbl_Orderregels.artikel_nr, Tbl_Artikelen.omschrijving FROM Tbl_Artikelen INNER JOIN Tbl_Orderregels ON Tbl_Artikelen.artikel_nr = Tbl_Orderregels.artikel_nr WHERE (Tbl_Orderregels.order_nr = order_nr)", inloggen);
inloggen.Open();
SqlDataReader myReader;
myReader = myCommand.ExecuteReader();
Response.Write("<TABLE>");
while (myReader.Read())
{
Response.Write("<TR><td>" + myReader.GetInt32(0) + "</td><td>" + myReader.GetInt32(1) + "</td><td>" + myReader.GetString(2) + "</td><tr>");
}
Response.Write("</TABLE>");
myReader.Close();
inloggen.Close();
}
protected void Button2_Click( object sender, EventArgs e)
{
string order_nr = TextBox1.Text ;
SqlConnection inloggen
= new SqlConnection
( @"Initial Catalog=database5c.mdf;Data Source=HANS\SQLEXPRESS;Integrated Security=True" ) ; SqlCommand myCommand
= new SqlCommand
( "SELECT Tbl_Orderregels.aantal, Tbl_Orderregels.artikel_nr, Tbl_Artikelen.omschrijving FROM Tbl_Artikelen INNER JOIN Tbl_Orderregels ON Tbl_Artikelen.artikel_nr = Tbl_Orderregels.artikel_nr WHERE (Tbl_Orderregels.order_nr = order_nr)" , inloggen
) ; inloggen.Open ( ) ;
SqlDataReader myReader;
myReader = myCommand.ExecuteReader ( ) ;
Response.Write ( "<TABLE>" ) ;
while ( myReader.Read ( ) )
{
Response.Write ( "<TR><td>" + myReader.GetInt32 ( 0 ) + "</td><td>" + myReader.GetInt32 ( 1 ) + "</td><td>" + myReader.GetString ( 2 ) + "</td><tr>" ) ;
}
Response.Write ( "</TABLE>" ) ;
myReader.Close ( ) ;
inloggen.Close ( ) ;
}
De connectie heet inloggen, dat is een verkeerde naam maar dat maakt verder niet uit.
Het gedeelte
Response.Write("<TR><td>" + myReader.GetInt32(0) + "</td><td>" + myReader.GetInt32(1) + "</td><td>" + myReader.GetString(2) + "</td><tr>");
moet dus op de pagina onderaan worden weergegeven, en dat lukt me niet.
Abbas - 16/05/2007 20:28 (laatste wijziging 16/05/2007 21:06)
Crew .NET
Even een paar zaken:
- variabelen declareer je best voor alle events
- als je met databases werkt "moet" je met try-catch werken (foutenopvang)
Ik heb je code een beetje herschreven:
string order_nr, query;
SqlConnection inloggen = new SqlConnection(@"Initial Catalog=database5c.mdf;Data Source=HANS\\SQLEXPRESS;Integrated Security=True");
SqlCommand myCommand;
SqlDataReader myReader;
protected void Button2_Click(object sender, EventArgs e)
{
protected string resultaat = "";
order_nr = Server.HtmlEncode(TextBox1.Text);
query = "SELECT Tbl_Orderregels.aantal, Tbl_Orderregels.artikel_nr, Tbl_Artikelen.omschrijving FROM Tbl_Artikelen INNER JOIN Tbl_Orderregels ON Tbl_Artikelen.artikel_nr = Tbl_Orderregels.artikel_nr WHERE (Tbl_Orderregels.order_nr = order_nr)";
myCommand = new SqlCommand(query, inloggen);
try
{
inloggen.Open();
myReader = myCommand.ExecuteReader();
resultaat += "<table>";
while (myReader.Read())
{
resultaat += "<tr><td>" + myReader.GetInt32(0).ToString() + "</td><td>" + myReader.GetInt32(1).ToString() + "</td><td>" + myReader.GetString(2) + "</td><tr>";
}
resultaat += "</table>";
myReader.Close();
}
catch (Exception x)
{
Response.Write(x.Message);
}
finally
{
inloggen.Close();
}
this.DataBind();
}
string order_nr, query;
SqlConnection inloggen = new SqlConnection( @ "Initial Catalog=database5c.mdf;Data Source=HANS\\SQLEXPRESS;Integrated Security=True" ) ;
SqlCommand myCommand;
SqlDataReader myReader;
protected void Button2_Click( object sender, EventArgs e)
{
protected string resultaat = "" ;
order_nr = Server. HtmlEncode( TextBox1. Text) ;
query = "SELECT Tbl_Orderregels.aantal, Tbl_Orderregels.artikel_nr, Tbl_Artikelen.omschrijving FROM Tbl_Artikelen INNER JOIN Tbl_Orderregels ON Tbl_Artikelen.artikel_nr = Tbl_Orderregels.artikel_nr WHERE (Tbl_Orderregels.order_nr = order_nr)" ;
myCommand = new SqlCommand( query, inloggen) ;
try
{
inloggen. Open( ) ;
myReader = myCommand. ExecuteReader( ) ;
resultaat += "<table>" ;
while ( myReader. Read( ) )
{
resultaat += "<tr><td>" + myReader. GetInt32( 0 ) . ToString( ) + "</td><td>" + myReader. GetInt32( 1 ) . ToString( ) + "</td><td>" + myReader. GetString( 2 ) + "</td><tr>" ;
}
resultaat += "</table>" ;
myReader. Close( ) ;
}
catch ( Exception x)
{
Response. Write( x. Message) ;
}
finally
{
inloggen. Close( ) ;
}
this. DataBind( ) ;
}
En op je aspx-pagina zet je waar je maar wilt:
<%# resultaat %>
Of je plaatst een label op je pagina, bvb:
<asp:Label ID="lbl_resultaat" runat="server" />
En dan doe je ipv this.DataBind();
-> lbl_resultaat.Text = resultaat;
hanswaaah - 16/05/2007 20:41 (laatste wijziging 16/05/2007 20:56)
Nieuw lid
Ik krijg constant:
Invalid token '=' in class, struct, or interface member declaration
en dat ook met token '(' ')' 'try' '+='
Hieronder staat een link naar de pagina die ik moet maken, het .aspx en .aspx.cs bestand.
De images die de pagina gebruikt staan erin en de database die wordt gebruikt staat erin.
http://84.24.98.115/orderview_en_db.zip
Zou u aub ernaar kunnen kijken, alvast bedankt
hanswaaah - 16/05/2007 21:22
Nieuw lid
hmm, ik heb je code van hierboven nogmaals erin geplakt maar zonder succes (mijn code eruitgehaald uiteraard)
ik zie echt niet wat het probleem is.
Abbas - 16/05/2007 21:33 (laatste wijziging 16/05/2007 21:33)
Crew .NET
De fout zat hem nog steeds in mijn code, stomme fout!
Die 'protected string resultaat = "" ' moest ook buiten het event staan...
protected string resultaat = "";
string order_nr, query;
SqlConnection inloggen = new SqlConnection(@"Initial Catalog=database5c.mdf;Data Source=HANS\\SQLEXPRESS;Integrated Security=True");
SqlCommand myCommand;
SqlDataReader myReader;
protected void Button2_Click(object sender, EventArgs e)
{
order_nr = Server.HtmlEncode(TextBox1.Text);
query = "SELECT Tbl_Orderregels.aantal, Tbl_Orderregels.artikel_nr, Tbl_Artikelen.omschrijving FROM Tbl_Artikelen INNER JOIN Tbl_Orderregels ON Tbl_Artikelen.artikel_nr = Tbl_Orderregels.artikel_nr WHERE (Tbl_Orderregels.order_nr = order_nr)";
myCommand = new SqlCommand(query, inloggen);
try
{
inloggen.Open();
myReader = myCommand.ExecuteReader();
resultaat += "<table>";
while (myReader.Read())
{
resultaat += "<tr><td>" + myReader.GetInt32(0).ToString() + "</td><td>" + myReader.GetInt32(1).ToString() + "</td><td>" + myReader.GetString(2) + "</td><tr>";
}
resultaat += "</table>";
myReader.Close();
}
catch (Exception x)
{
Response.Write(x.Message);
}
finally
{
inloggen.Close();
}
this.DataBind();
}
protected string resultaat = "" ;
string order_nr, query;
SqlConnection inloggen = new SqlConnection( @ "Initial Catalog=database5c.mdf;Data Source=HANS\\SQLEXPRESS;Integrated Security=True" ) ;
SqlCommand myCommand;
SqlDataReader myReader;
protected void Button2_Click( object sender, EventArgs e)
{
order_nr = Server. HtmlEncode( TextBox1. Text) ;
query = "SELECT Tbl_Orderregels.aantal, Tbl_Orderregels.artikel_nr, Tbl_Artikelen.omschrijving FROM Tbl_Artikelen INNER JOIN Tbl_Orderregels ON Tbl_Artikelen.artikel_nr = Tbl_Orderregels.artikel_nr WHERE (Tbl_Orderregels.order_nr = order_nr)" ;
myCommand = new SqlCommand( query, inloggen) ;
try
{
inloggen. Open( ) ;
myReader = myCommand. ExecuteReader( ) ;
resultaat += "<table>" ;
while ( myReader. Read( ) )
{
resultaat += "<tr><td>" + myReader. GetInt32( 0 ) . ToString( ) + "</td><td>" + myReader. GetInt32( 1 ) . ToString( ) + "</td><td>" + myReader. GetString( 2 ) + "</td><tr>" ;
}
resultaat += "</table>" ;
myReader. Close( ) ;
}
catch ( Exception x)
{
Response. Write( x. Message) ;
}
finally
{
inloggen. Close( ) ;
}
this. DataBind( ) ;
}
Ik zou ook je ConnectionString anders maken:
SqlConnection verbinding = new SqlConnection("DataSource=HANS\\SQLEXPRESS; AttachDbFileName="database.mdf"; Integrated Security=True; User INstance=True ");
SqlConnection verbinding = new SqlConnection( "DataSource=HANS\\SQLEXPRESS; AttachDbFileName=" database. mdf"; Integrated Security=True; User INstance=True " ) ;
hanswaaah - 16/05/2007 21:53 (laatste wijziging 16/05/2007 22:16)
Nieuw lid
jij hebt DataSource=HANS\\SQLEXPRESS
het moet HANS\SQLEXPRESS zijn anders kreeg ik fout meldingen maar nu werkt het met jouw script.
en de where werkt niet meer, weet jij hoe dat kan?
Heel erg bedankt!
Dan heb ik nog een klein vraagje,
ik moet met de output kunnen rekenen,
ofwel, aantal x prijs van het artikel_nr
die allemaal bij elkaar opgeteld en dan daarna nog andere kosten zoals BTW en vracht kosten, kun jij dat ook of is dat te moeilijk?
Abbas - 16/05/2007 22:28 (laatste wijziging 16/05/2007 22:40)
Crew .NET
De fout met die WHERE zit hem hier:
query = "SELECT Tbl_Orderregels.aantal, Tbl_Orderregels.artikel_nr, Tbl_Artikelen.omschrijving FROM Tbl_Artikelen INNER JOIN Tbl_Orderregels ON Tbl_Artikelen.artikel_nr = Tbl_Orderregels.artikel_nr WHERE (Tbl_Orderregels.order_nr = '" + order_nr + "')";
query = "SELECT Tbl_Orderregels.aantal, Tbl_Orderregels.artikel_nr, Tbl_Artikelen.omschrijving FROM Tbl_Artikelen INNER JOIN Tbl_Orderregels ON Tbl_Artikelen.artikel_nr = Tbl_Orderregels.artikel_nr WHERE (Tbl_Orderregels.order_nr = '" + order_nr + "')" ;
Die <order_nr> moest <'" + order_nr + "'> zijn...
Als je met de output wilt rekenen moet je het scriptje wel wat aanpassen, ik zal dit even doen...
protected string resultaat = "";
string order_nr, query;
SqlConnection inloggen = new SqlConnection(@"Initial Catalog=database5c.mdf;Data Source=HANS\\SQLEXPRESS;Integrated Security=True");
SqlCommand myCommand;
SqlDataReader myReader;
protected void Button2_Click(object sender, EventArgs e)
{
string order_nr, query;
int aantal_db;
double prijs_db, totaal_product, subtotaal;
SqlConnection inloggen = new SqlConnection(@"Initial Catalog=database5c.mdf;Data Source=HANS\\SQLEXPRESS;Integrated Security=True");
SqlCommand myCommand;
SqlDataReader myReader;
order_nr = Server.HtmlEncode(TextBox1.Text);
query = "SELECT Tbl_Orderregels.aantal, Tbl_Orderregels.artikel_nr, Tbl_Artikelen.omschrijving FROM Tbl_Artikelen INNER JOIN Tbl_Orderregels ON Tbl_Artikelen.artikel_nr = Tbl_Orderregels.artikel_nr WHERE (Tbl_Orderregels.order_nr = order_nr)";
myCommand = new SqlCommand(query, inloggen);
try
{
inloggen.Open();
myReader = myCommand.ExecuteReader();
resultaat += "<table>";
while (myReader.Read())
{
aantal_db = myReader.GetInt32(0);
prijs_db = //dit moet je dan nog ophalen adhv je artikel nr (SELECT prijs FROM ... WHERE order_nr = '" + order_nr + "')
totaal = aantal_db * prijs_db;
resultaat += "<tr><td>Aantal: " + myReader.GetInt32(0).ToString() + "</td><td>Artikel n°: " + myReader.GetInt32(1).ToString() + "</td><td>Omschrijving: " + myReader.GetString(2) + "</td><td>Totale prijs per product: </td><td>" + totaal + "</td></tr>";
subtotaal += totaal;
}
resultaat += "</table>";
myReader.Close();
}
catch (Exception x)
{
Response.Write(x.Message);
}
finally
{
inloggen.Close();
}
//hier kan je dan nog eventueel iets met je BTW doen
this.DataBind();
}
protected string resultaat = "" ;
string order_nr, query;
SqlConnection inloggen = new SqlConnection( @ "Initial Catalog=database5c.mdf;Data Source=HANS\\SQLEXPRESS;Integrated Security=True" ) ;
SqlCommand myCommand;
SqlDataReader myReader;
protected void Button2_Click( object sender, EventArgs e)
{
string order_nr, query;
int aantal_db;
double prijs_db, totaal_product, subtotaal;
SqlConnection inloggen = new SqlConnection( @ "Initial Catalog=database5c.mdf;Data Source=HANS\\SQLEXPRESS;Integrated Security=True" ) ;
SqlCommand myCommand;
SqlDataReader myReader;
order_nr = Server. HtmlEncode( TextBox1. Text) ;
query = "SELECT Tbl_Orderregels.aantal, Tbl_Orderregels.artikel_nr, Tbl_Artikelen.omschrijving FROM Tbl_Artikelen INNER JOIN Tbl_Orderregels ON Tbl_Artikelen.artikel_nr = Tbl_Orderregels.artikel_nr WHERE (Tbl_Orderregels.order_nr = order_nr)" ;
myCommand = new SqlCommand( query, inloggen) ;
try
{
inloggen. Open( ) ;
myReader = myCommand. ExecuteReader( ) ;
resultaat += "<table>" ;
while ( myReader. Read( ) )
{
aantal_db = myReader. GetInt32( 0 ) ;
prijs_db = //dit moet je dan nog ophalen adhv je artikel nr (SELECT prijs FROM ... WHERE order_nr = '" + order_nr + "')
totaal = aantal_db * prijs_db;
resultaat += "<tr><td>Aantal: " + myReader. GetInt32( 0 ) . ToString( ) + "</td><td>Artikel n°: " + myReader. GetInt32( 1 ) . ToString( ) + "</td><td>Omschrijving: " + myReader. GetString( 2 ) + "</td><td>Totale prijs per product: </td><td>" + totaal + "</td></tr>" ;
subtotaal += totaal;
}
resultaat += "</table>" ;
myReader. Close( ) ;
}
catch ( Exception x)
{
Response. Write( x. Message) ;
}
finally
{
inloggen. Close( ) ;
}
//hier kan je dan nog eventueel iets met je BTW doen
this. DataBind( ) ;
}
hanswaaah - 16/05/2007 22:35
Nieuw lid
inderdaad, bedankt
als je ook dat rekenen doet, nogmaal heel erg bedankt.
aanpassingen van mij:
voor de database insert:
resultaat += "<font face=Verdana size=10pt><table>";
na de database insert:
resultaat += "</table></font>";
hij pakt de font niet, ik krijg een zeer groot lettertype!
hanswaaah - 16/05/2007 22:50
Nieuw lid
ik heb hem op 2 gezet, dan werkt het.
ik kan niet naar pagina 1 :S
hanswaaah - 16/05/2007 22:56
Nieuw lid
hmm, heb je de code nog ? :S
Abbas - 16/05/2007 22:57 (laatste wijziging 17/05/2007 17:49)
Crew .NET
Natuurlijk
protected string resultaat = "";
protected void Button2_Click(object sender, EventArgs e)
{
string order_nr, query;
int aantal_db;
double prijs_db, totaal_product, subtotaal;
SqlConnection inloggen = new SqlConnection(@"Initial Catalog=database5c.mdf;Data Source=HANS\\SQLEXPRESS;Integrated Security=True");
SqlCommand myCommand;
SqlDataReader myReader;
order_nr = Server.HtmlEncode(TextBox1.Text);
query = "SELECT Tbl_Orderregels.aantal, Tbl_Orderregels.artikel_nr, Tbl_Artikelen.omschrijving FROM Tbl_Artikelen INNER JOIN Tbl_Orderregels ON Tbl_Artikelen.artikel_nr = Tbl_Orderregels.artikel_nr WHERE (Tbl_Orderregels.order_nr = '" + order_nr + "')";
myCommand = new SqlCommand(query, inloggen);
try
{
inloggen.Open();
myReader = myCommand.ExecuteReader();
resultaat += "<table>";
while (myReader.Read())
{
aantal_db = myReader.GetInt32(0);
prijs_db = //dit moet je dan nog ophalen adhv je artikel nr (SELECT prijs FROM ... WHERE order_nr = '" + order_nr + "')
totaal = aantal_db * prijs_db;
resultaat += "<tr><td>Aantal: " + myReader.GetInt32(0).ToString() + "</td><td>Artikel n°: " + myReader.GetInt32(1).ToString() + "</td><td>Omschrijving: " + myReader.GetString(2) + "</td><td>Totale prijs per product: </td><td>" + totaal + "</td></tr>";
subtotaal += totaal;
}
resultaat += "</table>";
myReader.Close();
}
catch (Exception x)
{
Response.Write(x.Message);
}
finally
{
inloggen.Close();
}
//hier kan je dan nog eventueel iets met je BTW doen
this.DataBind();
}
protected string resultaat = "" ;
protected void Button2_Click( object sender, EventArgs e)
{
string order_nr, query;
int aantal_db;
double prijs_db, totaal_product, subtotaal;
SqlConnection inloggen = new SqlConnection( @ "Initial Catalog=database5c.mdf;Data Source=HANS\\SQLEXPRESS;Integrated Security=True" ) ;
SqlCommand myCommand;
SqlDataReader myReader;
order_nr = Server. HtmlEncode( TextBox1. Text) ;
query = "SELECT Tbl_Orderregels.aantal, Tbl_Orderregels.artikel_nr, Tbl_Artikelen.omschrijving FROM Tbl_Artikelen INNER JOIN Tbl_Orderregels ON Tbl_Artikelen.artikel_nr = Tbl_Orderregels.artikel_nr WHERE (Tbl_Orderregels.order_nr = '" + order_nr + "')" ;
myCommand = new SqlCommand( query, inloggen) ;
try
{
inloggen. Open( ) ;
myReader = myCommand. ExecuteReader( ) ;
resultaat += "<table>" ;
while ( myReader. Read( ) )
{
aantal_db = myReader. GetInt32( 0 ) ;
prijs_db = //dit moet je dan nog ophalen adhv je artikel nr (SELECT prijs FROM ... WHERE order_nr = '" + order_nr + "')
totaal = aantal_db * prijs_db;
resultaat += "<tr><td>Aantal: " + myReader. GetInt32( 0 ) . ToString( ) + "</td><td>Artikel n°: " + myReader. GetInt32( 1 ) . ToString( ) + "</td><td>Omschrijving: " + myReader. GetString( 2 ) + "</td><td>Totale prijs per product: </td><td>" + totaal + "</td></tr>" ;
subtotaal += totaal;
}
resultaat += "</table>" ;
myReader. Close( ) ;
}
catch ( Exception x)
{
Response. Write( x. Message) ;
}
finally
{
inloggen. Close( ) ;
}
//hier kan je dan nog eventueel iets met je BTW doen
this. DataBind( ) ;
}
Ik ga nu naar Café d'Anvers dus als er nog vragen zijn, stel ze gerust hier of stuur me een PM, dan help ik je morgen verder!
hanswaaah - 16/05/2007 23:18 (laatste wijziging 16/05/2007 23:28)
Nieuw lid
hmm, hij geeft als output alleen de myReader.Get** commands
er staat bijvoorbeeld 3
ipv
Aantal: 3
weet jij hoe dit kan
de prijs wordt ook niet weergegeven, ook niet via myReader.GetString(3)
de prijs is ingevoert als een STRING
query = "SELECT Tbl_Orderregels.aantal, Tbl_Orderregels.artikel_nr, Tbl_Artikelen.omschrijving, Tbl_Artikelen.prijs FROM Tbl_Artikelen INNER JOIN Tbl_Orderregels ON Tbl_Artikelen.artikel_nr = Tbl_Orderregels.artikel_nr WHERE (Tbl_Orderregels.order_nr = order_nr)";
daarmee is de query goed met ook de prijs.
hanswaaah - 17/05/2007 17:26
Nieuw lid
bedankt
Gesponsorde links
Dit onderwerp is gesloten .