VB.NET通过For Each Loop在Webforms页面中打印DataSet数据

问题描述:

我在后面的代码中使用以下代码将数据传递到我的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。与此我得到“容器未定义”错误。

如果我们去掉所有的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

酪氨酸这(后面的代码)情况应该[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>