数据表中for循环出错

时间:2012-02-22 09:47:46

标签: c# asp.net

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

它给我一个例外:

  

在编译服务此请求所需的资源期间发生错误。请查看以下特定错误详细信息并相应地修改源代码。

这是代码:

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

由于

3 个答案:

答案 0 :(得分:5)

试试这个:

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

使用&lt;%=%&gt;时必须删除分号(;),因为它会直接编写变量的输出,当字段值使用.ToString()时也会得到Null异常是空的。

答案 1 :(得分:2)

这会有用吗?

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

答案 2 :(得分:1)

至少可以说,你的做法并不好。

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

如果您不急于花时间学习如何使用上述方法,那么您需要的“第二最佳”方法是Repeater控件,因此我将为此提供所需的代码。

首先,有这样的.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();