login  Naam:   Wachtwoord: 
Registreer je!
 Forum

ASP.NET 2.0 (C#) Response.Write help! (Opgelost)

Offline hanswaaah - 16/05/2007 19:53
Avatar van hanswaaahNieuw 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
Offline Abbas - 16/05/2007 19:57 (laatste wijziging 16/05/2007 20:00)
Avatar van Abbas Gouden medaille

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:
  1. string waarde = "GEGEVENS UIT DB";
  2. label_een.Text = waarde;


Of je zet ergens in je formulier dit waar je wil:
<%# waarde %>

En dan dit in je code:
  1. protected string waarde = "GEGEVENS UIT DB";
  2. this.DataBind;
Offline hanswaaah - 16/05/2007 20:12 (laatste wijziging 16/08/2007 10:39)
Avatar van hanswaaah Nieuw lid de code staat in een .cs bestand.

daarin staat hetvolgende:

  1. protected void Button2_Click(object sender, EventArgs e)
  2. {
  3. string order_nr = TextBox1.Text;
  4. SqlConnection inloggen = new SqlConnection(@"Initial Catalog=database5c.mdf;Data Source=HANS\SQLEXPRESS;Integrated Security=True");
  5. 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);
  6. inloggen.Open();
  7. SqlDataReader myReader;
  8. myReader = myCommand.ExecuteReader();
  9. Response.Write("<TABLE>");
  10. while (myReader.Read())
  11. {
  12. Response.Write("<TR><td>" + myReader.GetInt32(0) + "</td><td>" + myReader.GetInt32(1) + "</td><td>" + myReader.GetString(2) + "</td><tr>");
  13. }
  14. Response.Write("</TABLE>");
  15. myReader.Close();
  16. inloggen.Close();
  17. }



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.
Offline Abbas - 16/05/2007 20:28 (laatste wijziging 16/05/2007 21:06)
Avatar van Abbas Gouden medaille

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:
  1. string order_nr, query;
  2. SqlConnection inloggen = new SqlConnection(@"Initial Catalog=database5c.mdf;Data Source=HANS\\SQLEXPRESS;Integrated Security=True");
  3. SqlCommand myCommand;
  4. SqlDataReader myReader;
  5.  
  6. protected void Button2_Click(object sender, EventArgs e)
  7. {
  8. protected string resultaat = "";
  9. order_nr = Server.HtmlEncode(TextBox1.Text);
  10. 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)";
  11.  
  12. myCommand = new SqlCommand(query, inloggen);
  13.  
  14. try
  15. {
  16. inloggen.Open();
  17. myReader = myCommand.ExecuteReader();
  18. resultaat += "<table>";
  19. while (myReader.Read())
  20. {
  21. resultaat += "<tr><td>" + myReader.GetInt32(0).ToString() + "</td><td>" + myReader.GetInt32(1).ToString() + "</td><td>" + myReader.GetString(2) + "</td><tr>";
  22. }
  23. resultaat += "</table>";
  24. myReader.Close();
  25. }
  26. catch (Exception x)
  27. {
  28. Response.Write(x.Message);
  29. }
  30. finally
  31. {
  32. inloggen.Close();
  33. }
  34. this.DataBind();
  35. }


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;
Offline hanswaaah - 16/05/2007 20:41 (laatste wijziging 16/05/2007 20:56)
Avatar van hanswaaah 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
Offline Abbas - 16/05/2007 21:06 (laatste wijziging 16/05/2007 21:25)
Avatar van Abbas Gouden medaille

Crew .NET
Als je even goed had gekeken, had je gezien dat de try-catch een "}" teveel had, dat heb ik aangepast...

De SqlConnection heb ik ook aangepast: "\" moest "\\" zijn, normaal zou het dan moeten werken, als het dan niet werkt zal ik de zip eens bekijken. 

edit:
Ik zal de zip eens bekijken 
Offline hanswaaah - 16/05/2007 21:22
Avatar van hanswaaah 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.
Offline Abbas - 16/05/2007 21:33 (laatste wijziging 16/05/2007 21:33)
Avatar van Abbas Gouden medaille

Crew .NET
De fout zat hem nog steeds in mijn code, stomme fout!
Die 'protected string resultaat = "" ' moest ook buiten het event staan...

  1. protected string resultaat = "";
  2. string order_nr, query;
  3. SqlConnection inloggen = new SqlConnection(@"Initial Catalog=database5c.mdf;Data Source=HANS\\SQLEXPRESS;Integrated Security=True");
  4. SqlCommand myCommand;
  5. SqlDataReader myReader;
  6.  
  7. protected void Button2_Click(object sender, EventArgs e)
  8. {
  9. order_nr = Server.HtmlEncode(TextBox1.Text);
  10. 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)";
  11.  
  12. myCommand = new SqlCommand(query, inloggen);
  13.  
  14. try
  15. {
  16. inloggen.Open();
  17. myReader = myCommand.ExecuteReader();
  18. resultaat += "<table>";
  19. while (myReader.Read())
  20. {
  21. resultaat += "<tr><td>" + myReader.GetInt32(0).ToString() + "</td><td>" + myReader.GetInt32(1).ToString() + "</td><td>" + myReader.GetString(2) + "</td><tr>";
  22. }
  23. resultaat += "</table>";
  24. myReader.Close();
  25. }
  26. catch (Exception x)
  27. {
  28. Response.Write(x.Message);
  29. }
  30. finally
  31. {
  32. inloggen.Close();
  33. }
  34. this.DataBind();
  35. }


Ik zou ook je ConnectionString anders maken:

  1. SqlConnection verbinding = new SqlConnection("DataSource=HANS\\SQLEXPRESS; AttachDbFileName="database.mdf"; Integrated Security=True; User INstance=True ");
Offline hanswaaah - 16/05/2007 21:53 (laatste wijziging 16/05/2007 22:16)
Avatar van hanswaaah 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?
Offline Abbas - 16/05/2007 22:28 (laatste wijziging 16/05/2007 22:40)
Avatar van Abbas Gouden medaille

Crew .NET
De fout met die WHERE zit hem hier:
  1. 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...

  1. protected string resultaat = "";
  2. string order_nr, query;
  3. SqlConnection inloggen = new SqlConnection(@"Initial Catalog=database5c.mdf;Data Source=HANS\\SQLEXPRESS;Integrated Security=True");
  4. SqlCommand myCommand;
  5. SqlDataReader myReader;
  6.  
  7. protected void Button2_Click(object sender, EventArgs e)
  8. {
  9. string order_nr, query;
  10. int aantal_db;
  11. double prijs_db, totaal_product, subtotaal;
  12. SqlConnection inloggen = new SqlConnection(@"Initial Catalog=database5c.mdf;Data Source=HANS\\SQLEXPRESS;Integrated Security=True");
  13. SqlCommand myCommand;
  14. SqlDataReader myReader;
  15.  
  16. order_nr = Server.HtmlEncode(TextBox1.Text);
  17. 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)";
  18.  
  19. myCommand = new SqlCommand(query, inloggen);
  20.  
  21. try
  22. {
  23. inloggen.Open();
  24. myReader = myCommand.ExecuteReader();
  25. resultaat += "<table>";
  26. while (myReader.Read())
  27. {
  28. aantal_db = myReader.GetInt32(0);
  29. prijs_db = //dit moet je dan nog ophalen adhv je artikel nr (SELECT prijs FROM ... WHERE order_nr = '" + order_nr + "')
  30. totaal = aantal_db * prijs_db;
  31. 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>";
  32. subtotaal += totaal;
  33. }
  34. resultaat += "</table>";
  35. myReader.Close();
  36. }
  37. catch (Exception x)
  38. {
  39. Response.Write(x.Message);
  40. }
  41. finally
  42. {
  43. inloggen.Close();
  44. }
  45. //hier kan je dan nog eventueel iets met je BTW doen
  46. this.DataBind();
  47. }
Offline hanswaaah - 16/05/2007 22:35
Avatar van hanswaaah 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!
Offline Abbas - 16/05/2007 22:41
Avatar van Abbas Gouden medaille

Crew .NET
Kijk naar het script hierboven voor de berekeningen, met de font kan ik je niet direct verderhelpen. Misschien eens 10 zonder die 'pt' proberen? 
Offline hanswaaah - 16/05/2007 22:50
Avatar van hanswaaah Nieuw lid ik heb hem op 2 gezet, dan werkt het.
ik kan niet naar pagina 1 :S
Offline Abbas - 16/05/2007 22:55
Avatar van Abbas Gouden medaille

Crew .NET
Ik ook niet 
Offline hanswaaah - 16/05/2007 22:56
Avatar van hanswaaah Nieuw lid hmm, heb je de code nog ? :S
Offline Abbas - 16/05/2007 22:57 (laatste wijziging 17/05/2007 17:49)
Avatar van Abbas Gouden medaille

Crew .NET
Natuurlijk 

  1. protected string resultaat = "";
  2.  
  3. protected void Button2_Click(object sender, EventArgs e)
  4. {
  5. string order_nr, query;
  6. int aantal_db;
  7. double prijs_db, totaal_product, subtotaal;
  8. SqlConnection inloggen = new SqlConnection(@"Initial Catalog=database5c.mdf;Data Source=HANS\\SQLEXPRESS;Integrated Security=True");
  9. SqlCommand myCommand;
  10. SqlDataReader myReader;
  11.  
  12. order_nr = Server.HtmlEncode(TextBox1.Text);
  13. 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 + "')";
  14.  
  15. myCommand = new SqlCommand(query, inloggen);
  16.  
  17. try
  18. {
  19. inloggen.Open();
  20. myReader = myCommand.ExecuteReader();
  21. resultaat += "<table>";
  22. while (myReader.Read())
  23. {
  24. aantal_db = myReader.GetInt32(0);
  25. prijs_db = //dit moet je dan nog ophalen adhv je artikel nr (SELECT prijs FROM ... WHERE order_nr = '" + order_nr + "')
  26. totaal = aantal_db * prijs_db;
  27. 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>";
  28. subtotaal += totaal;
  29. }
  30. resultaat += "</table>";
  31. myReader.Close();
  32. }
  33. catch (Exception x)
  34. {
  35. Response.Write(x.Message);
  36. }
  37. finally
  38. {
  39. inloggen.Close();
  40. }
  41. //hier kan je dan nog eventueel iets met je BTW doen
  42. this.DataBind();
  43. }


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! 
Offline hanswaaah - 16/05/2007 23:18 (laatste wijziging 16/05/2007 23:28)
Avatar van hanswaaah 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.

Offline Abbas - 17/05/2007 15:19
Avatar van Abbas Gouden medaille

Crew .NET
Weer foutje in de query: <order_nr> moet <'" + order_nr + "'> worden...
Offline hanswaaah - 17/05/2007 17:26
Avatar van hanswaaah Nieuw lid bedankt
Offline Ultimatum - 17/05/2007 17:40
Avatar van Ultimatum PHP expert Om naar pagina 1 te gaan:p
http://www.site...ite_help/1
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.267s