2012-02-22 96 views
0

我在数据表中出现错误,我想在aspx代码中显示它。 (%>)数据表for循环中的错误

扔我一个例外:

出错该请求提供服务所需资源的编译过程中出现。请查看以下具体的错误细节并适当修改您的源代码。

这是代码:

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

由于

+1

不要你还需要一个''​​在那里? – Niklas 2012-02-22 09:52:01

+3

我不认为在声明结尾处允许使用分号。 – Abbas 2012-02-22 09:52:51

+1

你的错误信息中引用的具体错误细节在哪里?他们说什么? – kufi 2012-02-22 09:52:53

回答

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

你必须下降分号(;),使用时<%=%> ,因为它会直接编写变量的输出,当字段值为null时,您还将使用.ToString()来获得Null异常。

+0

我想你(或OP)应该忽略除第一个''和除最后一个''之外的所有内容。 – 2012-02-22 10:03:37

+0

@hans,谢谢,我认为每一次迭代应该只有1 创建 – jerjer 2012-02-22 10:07:17

2

这项工作?

<% foreach (DataRowView row in DTview) 
{ %> 
    <tr><td><%= row["blog_total_views"].ToString() %></td></tr> 
    // Rest of the rows 
<% } %> 
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();