在数据表中的for循环中出错

本文关键字:循环 出错 for 数据表 | 更新日期: 2023-09-27 18:25:19

我在一个数据表中遇到一个错误,我想在aspx代码中显示它。(%>)

它给我带来了一个例外:

编译为该请求提供服务所需的资源时出错。请查看以下特定错误的详细信息,并适当地修改源代码。

这是代码:

<%for (int i = 0; i < DTview.Rows.Count; i++)%>
     <% {%>
        <tr><%=DTview.Rows[i]["blog_total_views"].ToString(); %></tr>
        <tr><%=DTview.Rows[i]["first_name"].ToString(); %></tr>
        <tr><%=DTview.Rows[i]["is_affiliate"].ToString(); %></tr>
        <tr><%=DTview.Rows[i]["rating"].ToString(); %></tr>
        <tr><%=DTview.Rows[i]["price"].ToString(); %></tr> 
        <tr><%=DTview.Rows[i]["current_city"].ToString(); %></tr>
      <%}%>

感谢

在数据表中的for循环中出错

试试这个:

 <%for (int i = 0; i < DTview.Rows.Count; i++)%>
 <% {%>
    <tr>
        <td><%=DTview.Rows[i]["blog_total_views"] %></td>
        <td><%=DTview.Rows[i]["first_name"] %></td>
        <td><%=DTview.Rows[i]["is_affiliate"] %></td>
        <td><%=DTview.Rows[i]["rating"] %></td>
        <td><%=DTview.Rows[i]["price"] %></td>
        <td><%=DTview.Rows[i]["current_city"] %></td>
     </tr>
  <%}%>

使用<%=%>时必须去掉分号(;),因为它将直接写入变量的输出,而且当字段值为Null时,您将使用.ToString()获得Null异常。

这样行吗?

<% foreach (DataRowView row in DTview)
{ %>
   <tr><td><%= row["blog_total_views"].ToString() %></td></tr>
   // Rest of the rows
<% } %>

至少可以说,您的方法并不好。

将DataTable中的数据显示为HTML表的理想方法是使用GridView控件,这为您提供了对数据的最大灵活性和控制。

如果你不急于花时间学习如何使用以上内容,那没关系,你需要的"第二好"方法是中继器控制,所以我会给出所需的代码。

首先,有这样的.aspx标记:

<asp:Repeater id="rptMyView" runat="server">
    <HeaderTemplate><table><tbody></HeaderTemplate>
    <ItemTemplate>
        <tr>
            <td><%# DataBinder.Eval(Container.DataItem, "blog_total_views")%></td>
            <td><%# DataBinder.Eval(Container.DataItem, "first_name")%></td>
            <td><%# DataBinder.Eval(Container.DataItem, "is_affiliate")%></td>
            <td><%# DataBinder.Eval(Container.DataItem, "rating")%></td>
            <td><%# DataBinder.Eval(Container.DataItem, "price")%></td>
            <td><%# DataBinder.Eval(Container.DataItem, "current_city")%></td>
        </tr>
    </ItemTemplate>
    <FooterTemplate></tbody></table></FooterTemplate>
</asp:Repeater>

然后在后面的代码中:(例如Page_Load方法)

rptMyView.DataSource = DTview;
Repeater1.DataBind();