CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  ASP.NET

在 repeater里给 服务器leble赋值 为什么会出现 指定的转换无效。

楼主yoxu(野牛)2005-08-04 04:55:45 在 .NET技术 / ASP.NET 提问

异常详细信息:   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%">&nbsp;<A   class="H1"   href="category.aspx?cateid=<%#DataBinder.Eval(Container.DataItem,"acId")%>"><%#DataBinder.Eval(Container.DataItem,"acCategory")%></A>&nbsp;|&nbsp;<A   class="H1"   href="article.aspx?articleid=<%#DataBinder.Eval(Container.DataItem,"aId")%>">发表评论</A>&nbsp;<asp:Label   ID="lblAcCount"   Runat="server"></asp:Label>&nbsp;条</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

相关问题

  • 在 repeater里给 服务器控件leble赋值 为什么会出现 指定的转换无效。高分求助!!
  • 模板列赋值无效,请高手帮我看看
  • 控件上Load事件里的绑定问题:AddNew后的赋值无效.
  • repeater控件里的赋值问题?请大家帮忙谢谢.
  • 请教:Repeater中加入控件并对其赋值的问题
  • 变量赋值!
  • 链表赋值
  • 如何赋值!!!
  • 如何赋值
  • 无法赋值。

关键词

  • 转换
  • 控件
  • lblaccount
  • rowv
  • yoxublog
  • repeater
  • datarowview
  • arid
  • repeateritemeventargs
  • webcontrols

得分解答快速导航

  • 帖主:yoxu
  • byox

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo