异常详细信息: System.InvalidCastException: 指定的转换无效。源错误:
行 59: Label lblAcCount = (Label) e.Item.FindControl("lblAcCount");
行 60: //找到分类Repeater关联的数据项
行 61: DataRowView rowv = (DataRowView)e.Item.DataItem;
行 62: //提取分类ID
行 63: int arId = Convert.ToInt32(rowv["aId"]);
源文件: c:\inetpub\wwwroot\yoxublog\default.aspx.cs 行: 61 源文件如下,在其他页面上,同样是用这个代码是可以,为什么在这里不行呢?
private void repMain_ItemDataBound(object sender, System.Web.UI.WebControls.RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
Label lblAcCount = (Label) e.Item.FindControl("lblAcCount");
//找到分类Repeater关联的数据项
DataRowView rowv = (DataRowView)e.Item.DataItem;
//提取分类ID
int arId = Convert.ToInt32(rowv["aId"]);
int num = bll.article.GetArtCommentCount(arId);
lblAcCount.Text =num.ToString();
}
}
行 59: Label lblAcCount = (Label) e.Item.FindControl("lblAcCount");
行 60: //找到分类Repeater关联的数据项
行 61: DataRowView rowv = (DataRowView)e.Item.DataItem;
行 62: //提取分类ID
行 63: int arId = Convert.ToInt32(rowv["aId"]);
源文件: c:\inetpub\wwwroot\yoxublog\default.aspx.cs 行: 61 源文件如下,在其他页面上,同样是用这个代码是可以,为什么在这里不行呢?
private void repMain_ItemDataBound(object sender, System.Web.UI.WebControls.RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
Label lblAcCount = (Label) e.Item.FindControl("lblAcCount");
//找到分类Repeater关联的数据项
DataRowView rowv = (DataRowView)e.Item.DataItem;
//提取分类ID
int arId = Convert.ToInt32(rowv["aId"]);
int num = bll.article.GetArtCommentCount(arId);
lblAcCount.Text =num.ToString();
}
}
解决方案 »
- ASPxGridView中禁止排序不起作用????
- 小白求教:asp.net预览出现错误:无法打开登录所请求的数据库 "DropdownTest"。登录失败。用户 'sa' 登录失败。
- dropdownlist中DataValueField的问题
- 关于ASP。net 的 Response.Redirect 问题
- 自定义控件为什么不刷新主页面呢?
- 有谁用socket做过网络版的聊天室?
- 在利用.NET作网络程序过程中,遇到的两个问题 急!!!!!!!
- 怎样从安全证书中提取用户的公钥?
- 如何连接sybase数据库?
- 大件
- 一个超郁闷的问题,是关于SWF的
- 怎样把服务器端的值(字符窜)传递给客户端的iframe?
[InvalidCastException: 指定的转换无效。]
yoxublog._default.repMain_ItemDataBound(Object sender, RepeaterItemEventArgs e) in c:\inetpub\wwwroot\yoxublog\default.aspx.cs:61
System.Web.UI.WebControls.Repeater.OnItemDataBound(RepeaterItemEventArgs e) +110
System.Web.UI.WebControls.Repeater.CreateItem(Int32 itemIndex, ListItemType itemType, Boolean dataBind, Object dataItem) +139
System.Web.UI.WebControls.Repeater.CreateControlHierarchy(Boolean useDataSource) +474
System.Web.UI.WebControls.Repeater.OnDataBinding(EventArgs e) +48
System.Web.UI.WebControls.Repeater.DataBind() +23
yoxublog._default.Page_Load(Object sender, EventArgs e) in c:\inetpub\wwwroot\yoxublog\default.aspx.cs:29
System.Web.UI.Control.OnLoad(EventArgs e) +67
System.Web.UI.Control.LoadRecursive() +35
System.Web.UI.Page.ProcessRequestMain() +750
==》为什么在这里不行呢?
请检查这个页面的数据绑定控件的模板列中是否有叫lblAcCount的Label控件。
<asp:Repeater id="repMain" runat="server" >
<ItemTemplate>
<tr height="2">
<td colSpan="2"></td>
</tr>
<TR>
<TD colSpan="2" align="center"><%#DataBinder.Eval(Container.DataItem,"aTitle")%>
</TD>
</TR>
<tr height="3">
<td colSpan="2"></td>
</tr>
<TR>
<TD colSpan="2"><%#DataBinder.Eval(Container.DataItem,"aContent")%>
</TD>
</TR>
<tr height="1">
<td colSpan="2"></td>
</tr>
<TR>
<td width="50%"> <A class="H1" href="category.aspx?cateid=<%#DataBinder.Eval(Container.DataItem,"acId")%>"><%#DataBinder.Eval(Container.DataItem,"acCategory")%></A> | <A class="H1" href="article.aspx?articleid=<%#DataBinder.Eval(Container.DataItem,"aId")%>">发表评论</A> <asp:Label ID="lblAcCount" Runat="server"></asp:Label> 条</td>
<TD align="right" width="50%"><%#DataBinder.Eval(Container.DataItem,"aDate")%></TD>
</TR>
</ItemTemplate>
<SeparatorTemplate>
<tr>
<td height="1" colspan="2" bgcolor="#d4dded"></td>
</tr>
<tr>
<td height="6" colspan="2"></td>
</tr>
<tr>
<td height="1" colspan="2" bgcolor="#d4dded"></td>
</tr>
</SeparatorTemplate>
</asp:Repeater>
</TABLE>
行 60: //找到分类Repeater关联的数据项
行 61: DataRowView rowv = (DataRowView)e.Item.DataItem;
因为e.Item.DataItem并非DataRowView 类型,而并非找不到控件造成。