2017-10-19 4 views
0

J'utilise le code suivant dans mon code pour transmettre des données à ma page ASPX.VB.NET imprimer une donnée DataSet dans la page Webforms via For Each Loop

Public Function GetFirstElement() As DataSet 
    Dim ds As New DataSet 
    Dim alUtil As New ALUtility 
    Dim connString As String = AppSettings("conSQL") 
    Using cnn As New SqlConnection(connString) 
     cnn.Open() 
     Using dad As New SqlDataAdapter("SELECT TOP 10 * FROM case", cnn) 
      dad.Fill(ds) 
     End Using 
     cnn.Close() 
    End Using 
    Return ds 

End Function 

Et je suis en train de parcourir la page à l'intérieur de ASPX avec le code suivant

<% For Each dataRow As Data.DataRow In Me.GetFirstElement().Tables(0).Rows %> 

           <div class="widget-body padset-lg"> 
            <div class="row cancel-paddings"> 
             <div class="col-md-1"> 
             </div> 
             <div class="col-md-11"> 
              <h2 class="darker-text font-size-sm fonts-tight cancel-margin fonts-bold margset-bottom-md"> 
               <%= dataRow["short_description"].ToString() %></h2> 
              <p class="pale-text font-size-sm cancel-margin fonts-bold"> 
               <%= dataRow["case_id"].ToString() %></p> 
              <p class="darker-text font-size-xs fonts-tight fonts-bold cancel-margin"> 
               Medium Priority, New<br /> 
               John Doe ABC Company, 
               <br /> 
               10.23AM, 12/11/2016</p> 
             </div> 
            </div> 
            <div class="card-content height-auto"> 
            </div> 
           </div> 
        </div> 
        <% Next%> 

Lorsque je tente de lancer cette boucle, je reçois l'erreur suivante.

BC30203: Identificateur attendu.

Quelqu'un peut-il m'aider à ce sujet. Je suis un programmeur C# et nouveau sur le VB.NET. J'ai utilisé avec succès des boucles avec C#, mais les mêmes méthodes dans VB ne fonctionne pas. Et j'ai essayé asp: Repeater aussi. Avec cela, je reçois erreur "conteneur non défini".

Répondre

1

Si nous Désape tous les balises HTML hors ASP.NET les spéciales, nous obtenons cette structure en boucle:

<% For Each dataRow As Data.DataRow In Me.GetFirstElement().Tables(0).Rows %> 

    <%-- omitted --%> 

    <%= dataRow["short_description"].ToString() %> 

    <%-- omitted --%> 

    <%= dataRow["case_id"].ToString() %> 

    <%-- omitted --%> 

<% Next %> 

Il est clairement visible que dataRow est un tableau System.Data.DataRow pour représenter seule ligne, vous devez donc utiliser des parenthèses (...) plutôt que de crochets [...] en mentionnant les noms de colonnes dans le contexte VB.NET:

<% For Each dataRow As Data.DataRow In Me.GetFirstElement().Tables(0).Rows %> 

    <%-- omitted --%> 

    <%= dataRow("short_description").ToString() %> 

    <%-- omitted --%> 

    <%= dataRow("case_id").ToString() %> 

    <%-- omitted --%> 

<% Next %> 

Référence:

BC30203: Identifier expected

+0

Cela a fonctionné et merci pour votre aide! – thilanka1989

1

Tyr ce (votre code derrière) cas devrait être [dbo]. [Cas].

Public Function GetFirstElement() As DataSet 
    Dim ds As New DataSet 
    Dim alUtil As New ALUtility 
    Dim connString As String = AppSettings("conSQL") 
    Using cnn As New SqlConnection(connString) 
     cnn.Open() 
     Using dad As New SqlDataAdapter("SELECT TOP 10 * FROM [dbo].[case]", cnn) 
      dad.Fill(ds) 
     End Using 
     cnn.Close() 
    End Using 
    Return ds 

End Function 

Votre code ASPX <% = datarow [ "short_description"]. ToString()%> devrait être <% = datarow ("short_description") ToString().%>.

<div class="widget-body padset-lg"> 
     <div class="row cancel-paddings"> 
      <div class="col-md-1"> 
      </div> 
       <div class="col-md-11"> 
       <h2 class="darker-text font-size-sm fonts-tight cancel-margin fonts-bold margset-bottom-md"> 
       <%= dataRow("short_description").ToString() %></h2> 
       <p class="pale-text font-size-sm cancel-margin fonts-bold"> 
       <%= dataRow("case_id").ToString() %></p> 
       <p class="darker-text font-size-xs fonts-tight fonts-bold cancel-margin"> 
       Medium Priority, New<br /> 
       John Doe ABC Company, 
       <br /> 
       10.23AM, 12/11/2016</p> 
       </div> 
      </div> 
     <div class="card-content height-auto"> 
     </div> 
    </div>