2009-08-03 11 views
1

Maintenant, je pourrais être un peu épais et le faire de la mauvaise façon, mais en bref, j'ai un jeu de données où je lance une requête pour récupérer ce que le client a commandé. Plus précisément, j'en ai choisi un avec plusieurs éléments à des fins de test.Je n'arrive pas à comprendre pourquoi je ne peux pas mettre en forme ce texte

Je vais vous épargner tout le code, mais le bit spécifique que je vais avoir un problème avec est:

<script runat="server"> 
      Do While reader.HasRows 
        Do While reader.Read 

       </script>        
          <tr> 
           <td valign="top" width="100"><script runat="server">Response.Write(reader("SKUN"))</script><br /></td> 
           <td valign="top" width="200"><script runat="server">Response.Write(reader("DESCR"))</script></td> 
           <td valign="top" width="50"><script runat="server">Response.Write(reader("QORD"))</script></td> 
           <td valign="top" width="50"><script runat="server">Response.Write(reader("PRIC"))</script></td> 
          </tr> 
          <script runat="server"> 
          Loop 
          reader.NextResult() 
         Loop 
</script> 

Ignore le côté de code en ligne des choses, je travaille sur un autre projet de développeurs et de la tenue en fonction de la façon dont ils travaillent, il leur est plus facile de revenir.

Cependant, cela imprime exactement ce que je veux, mais il ne le met pas en lignes dans la table elle-même, il imprime simplement une longue ligne de texte en haut de la page. Est-ce que je manque quelque chose ici ou si je me contente de le faire dans le mauvais sens? parce que je ne peux pas comprendre pourquoi il ne boucle pas les résultats pour imprimer. Response.Write() écrit directement dans le flux de réponse.

+0

vous manque les

balises autour d'elle? :) – falstro

+0

Non, je viens d'omettre cette partie du code car je ne voulais pas coller toute la page car il y a beaucoup plus de choses. – LiamGu

+0

Liam Gulliver ... J'ai éditer ma réponse, plz vérifier et laissez-moi savoir .. –

Répondre

1

Essayez ceci:

Do While reader.Read 
     Dim tNewRow As New HtmlTableRow 
     Dim cellSKU, cellDESCR, cellQORD, cellPRIC As New HtmlTableCell     
     orderNoLbl.Text = reader("NUMB")     
     cellSKU.InnerText = reader("SKUN") 
     cellDESCR.InnerText = reader("DESCR") 
     cellQORD.InnerText = reader("QORD") 
     cellPRIC.InnerText = reader("PRIC")      
     tNewRow.Cells.Add(cellSKU)      
     tNewRow.Cells.Add(cellDESCR)      
     tNewRow.Cells.Add(cellQORD)      
     tNewRow.Cells.Add(cellPRIC)    
     skusTable.Rows.Add(tNewRow)     
Loop 
+0

Déplacé, et toujours la ligne est imprimée Oo Je ne sais pas pourquoi, même si tout cela semble bien. – LiamGu

+0

Spot sur, cela a fait l'affaire. Je ne peux pas croire que c'était si évident! – LiamGu

2

Toutefois, le code HTML dans la page ASPX est d'abord traité, mis en mémoire tampon et ensuite uniquement écrit dans le flux de réponse. Cela entraîne l'envoi de vos données avant l'envoi de toute autre partie de la page.

Vous ne devez pas utiliser Response.Write(). Au lieu de cela, vous devez obtenir vos données dans le même code HTML qui est traité par le moteur de rendu ASP.NET. Utilisez la syntaxe suivante pour y parvenir:

<script runat="server"> 
     Do While reader.HasRows 
       Do While reader.Read 
      </script> 
         <tr> 
          <td valign="top" width="100"><% =reader("SKUN") %><br /></td> 
          <td valign="top" width="200"><% =reader("DESCR") %></td> 
          <td valign="top" width="50"><% =reader("QORD") %></td> 
          <td valign="top" width="50"><% =reader("PRIC") %></td> 
         </tr> 
          <script runat="server"> 
         Loop 
         reader.NextResult() 
        Loop 

Modifier en fonction des commentaires

Je pense que ceci est votre meilleure option:

<table id="someTable" runat="server"> 
.... 
<script runat="server"> 
     Do While reader.HasRows 
       Do While reader.Read 
        Dim tr as new HtmlTableRow 
        tr.Cells.Add(new HtmlTableCell(){ InnerText = reader("SKUN"),Width=100,VAlign="top"}) 
        tr.Cells.Add(new HtmlTableCell(){ InnerText = reader("DESCR"),Width=200,VAlign="top"}) 
        tr.Cells.Add(new HtmlTableCell(){ InnerText = reader("QORD"),Width=50,VAlign="top"}) 
        tr.Cells.Add(new HtmlTableCell(){ InnerText = reader("PRIC"),Width=50,VAlign="top"}) 

        someTable.Rows.Add(tr) 
      </script> 

désolé si elle n'a pas compiler dans VB.net droite de la chauve-souris .. (Je n'ai que C# installé)

+0

J'ai essayé cela, mais quand je passe de