在 repeater里给 服务器leble赋值 为什么会出现 指定的转换无效。
异常详细信息: 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();
}
}
问题点数:10、回复次数:7Top
1 楼yoxu(野牛)回复于 2005-08-04 04:59:32 得分 0
本来想多给点分,无奈分没了,所以没办法。Top
2 楼yoxu(野牛)回复于 2005-08-04 05:00:57 得分 0
堆栈跟踪:
[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
Top
3 楼cuike519(I will be back!)回复于 2005-08-04 06:15:22 得分 0
这个问题是由于e.Item.FindControl("lblAcCount");并没有找到lblAcCount这个控件,该方法返回的值为null,对null做类型转换就会出现上面的错误。
==》为什么在这里不行呢?
请检查这个页面的数据绑定控件的模板列中是否有叫lblAcCount的Label控件。Top
4 楼byox(越序)回复于 2005-08-04 06:35:39 得分 0
有,我检查过了。Top
5 楼byox(越序)回复于 2005-08-04 06:37:58 得分 0
<TABLE width="100%" cellpadding="1" cellspacing="0">
<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>Top
6 楼byox(越序)回复于 2005-08-04 06:39:13 得分 10
请大家耐心点,没办法标记明显的Top
7 楼hchxxzx(NET?摸到一点门槛)回复于 2005-08-04 08:43:59 得分 0
这个问题,是由以下语句引起的
行 60: //找到分类Repeater关联的数据项
行 61: DataRowView rowv = (DataRowView)e.Item.DataItem;
因为e.Item.DataItem并非DataRowView 类型,而并非找不到控件造成。Top




