2017-10-19 57 views
0

我在後面的代碼中使用以下代碼將數據傳遞到我的aspx頁面。VB.NET通過For Each Loop在Webforms頁面中打印DataSet數據

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 

而且我通過內部aspx頁面試圖循環使用下面的代碼

<% 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%> 

當我嘗試運行這個循環我收到以下錯誤。

BC30203:預期標識符。

有人可以幫助我做到這一點。我是C#程序員,也是VB.NET的新手。我已經成功地使用C#循環,但在VB中相同的方法無法正常工作。我也嘗試過asp:Repeater。與此我得到「容器未定義」錯誤。

回答

1

如果我們去掉所有的HTML標記不包括ASP.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 %> 

很清楚地看到,dataRowSystem.Data.DataRow數組來表示單列,所以你需要使用圓括號(...)的而不是方括號[...]提的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 %> 

參考:

BC30203: Identifier expected

+0

它的工作,並感謝您的幫助! – thilanka1989

1

酪氨酸這(後面的代碼)情況應該[DBO]。[案例]

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 

你的aspx代碼<%=數據行[ 「SHORT_DESCRIPTION」]。的ToString()%><%=數據行( 「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>