为什么老是出现将对象引用设置到对象的实例的错误

cwflixi8 2006-04-03 11:50:35
前台其中代码
<cc1:dispage id="DisPage1" runat="server" PageSize="12" PageTitleBorder="None" Width="1px"
TitleBorderColor="Gainsboro" PageTitleColor="224, 224, 224" TitleState="Bottom" geGroup="3"BorderWidth="1px" BackColor="Transparent" BorderStyle="None" erColor="#FFFFC0" ForeColor="Black" Width="100%">
<DATATEMPLATE>
<asp:DataList id="DataList1" runat="server" BorderWidth="1px" BackColor="White" BorderStyle="None" BorderColor="#CC9966" Width="100%" RepeatDirection="Horizontal" ShowFooter="False" ShowHeader="False" GridLines="Both" CellPadding="4"> <SelectedItemStyle Font-Bold="True" ForeColor="#663399" ></SelectedItemStyle> <AlternatingItemStyle BackColor="Snow"></AlternatingItemStyle> <ItemStyle ForeColor="#330099" BorderStyle="Dashed" ckColor="White"></ItemStyle> <ItemTemplate> <TR> <TD vAlign="top" align="middle" width="100"> <asp:label id="Label2" runat="server"><%# DataBinder.Evaler.DataItem, "incept") %></asp:label><asp:label id="Label3" runat="server"><%# DataBinder.Eval(Container.DataItem, "sender") %></asp:label> </TD>
<TD vAlign="top" align="middle" width="123">
<%# DataBinder.Eval(Container.DataItem, "SendTime") %>
</TD>
<TD vAlign="top" align="middle" width="30">
<asp:CheckBox id="CheckBox1" runat="server"></asp:CheckBox>
</TD>
</TR>
</ItemTemplate>
<FooterStyle ForeColor="#330099" BackColor="#FFFFCC"></FooterStyle> <HeaderStyle Font-Bold="True" ForeColor="#FFFFCC" Color="#990000"></HeaderStyle>
</asp:DataList>
</DATATEMPLATE>
</cc1:dispage>
后台其中代码
if((Request.Cookies["UserLoginID"]!=null)&&(Session["SLoginID"]==null))
{
int id=Int32.Parse (Request.Cookies ["UserLoginID"].Value);
string UserLoginName=pub.GetUserName(id);
pub.GetSpIncceptMsg(UserLoginName);
DisPage1.Open(pub.DataSet1);
DataList1.FindControl("Label2").Visible =true;
DataList1.FindControl("Label3").Visible =false;
}
出现的错误是说
DataList1.FindControl("Label2").Visible =true;
DataList1.FindControl("Label3").Visible =false;
未将对象引用设置到对象的实例
...全文
409 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
hchxxzx 2006-04-04
  • 打赏
  • 举报
回复
1.首先,必须先绑定,如果没有绑定而直接求取子控件是不能得到控件对象的.
2.直接用DataList1.FindContorl方法求取控件,是无法获取到存在各行之间的控件对象的,datalist之下只有一个子控件,即是它生成的一个table.
3.你必须使用如下方式:
int icount = this.DataList1.Items.Count;
for(int i=0;i<icount;i++)
{
((Label)this.DataList1.Items[i].FindControl("Label2")).Visible =true;
((Label)this.DataList1.Items[i].FindControl("Label3")).Visible =false;
}
chenyu112 2006-04-04
  • 打赏
  • 举报
回复
同意webdiyer(陕北吴旗娃)
webdiyer 2006-04-04
  • 打赏
  • 举报
回复
你的代码写在什么地方?要获取DataList模板中的控件,必须在绑定数据之后。
cwflixi8 2006-04-03
  • 打赏
  • 举报
回复
哎,我快郁闷死了,写程序真累
cwflixi8 2006-04-03
  • 打赏
  • 举报
回复
还是[NullReferenceException: 未将对象引用设置到对象的实例。]
card.UserPal.UserMsg.BindData() in e:\web\card\userpal\usermsg.aspx.cs:57
card.UserPal.UserMsg.Page_Load(Object sender, EventArgs e) in e:\web\card\userpal\usermsg.aspx.cs:43
System.Web.UI.Control.OnLoad(EventArgs e)
System.Web.UI.Control.LoadRecursive()
System.Web.UI.Page.ProcessRequestMain()
webdiyer 2006-04-03
  • 打赏
  • 举报
回复
你的Label在DataList的模块列中,那就不是一个控件而是多个控件了,因为DataList可以有多行数据,一行数据中就有一个控件,所以你应该这样写:

foreach(DataListItem dlItem in dataList1.Items){
if(dlItem.ItemType==ListItemType.Item||dlItem.ItemType==ListItemType.AlternatingItem){
Label lb=dlItem.FindControl("Label1") as Label;
if(lb!=null)
lb.Visible=true;
}
}

======================
www.webdiyer.com
cwflixi8 2006-04-03
  • 打赏
  • 举报
回复
还是不行
int64 2006-04-03
  • 打赏
  • 举报
回复
(Label)(DataList1.FindControl("Label2")).Visible =true;
cwflixi8 2006-04-03
  • 打赏
  • 举报
回复
谁知道呀,分不够还可以加
cwflixi8 2006-04-03
  • 打赏
  • 举报
回复
还是一样的错误提示
cwflixi8 2006-04-03
  • 打赏
  • 举报
回复
我换过了还是不行
dapanda 2006-04-03
  • 打赏
  • 举报
回复
datagrid是这样写的啊DataGrid1.某行.FindControl
难道DataList1这么强大,这样找都找得出来?
cwflixi8 2006-04-03
  • 打赏
  • 举报
回复
是直接从DataList1中FindControl的
dapanda 2006-04-03
  • 打赏
  • 举报
回复
是直接从DataList1中FindControl的吗?
不是DataList1.某行.FindControl的吗?
cwflixi8 2006-04-03
  • 打赏
  • 举报
回复
主要出错的代码
前台
<cc1:dispage id="DisPage1" runat="server">
<DATATEMPLATE>
<asp:DataList id="DataList1" runat="server">
<ItemTemplate> <TR> <TD >
<asp:label id="Label2" runat="server">
<%# DataBinder.Evaler.DataItem, "incept") %></asp:label>
<asp:label id="Label3" runat="server">
<%# DataBinder.Eval(Container.DataItem, "sender") %></asp:label> </TD>
</asp:DataList>
</DATATEMPLATE>
</cc1:dispage>
后台想进行控制Label2,Label3的显示如下
if((Request.Cookies["UserLoginID"]!=null)&&(Session["SLoginID"]==null))
{
int id=Int32.Parse (Request.Cookies ["UserLoginID"].Value);
string UserLoginName=pub.GetUserName(id);
pub.GetSpIncceptMsg(UserLoginName);
DisPage1.Open(pub.DataSet1);
DataList1.FindControl("Label2").Visible =true;
DataList1.FindControl("Label3").Visible =false;
}
出现的错误是说
DataList1.FindControl("Label2").Visible =true;
DataList1.FindControl("Label3").Visible =false;
未将对象引用设置到对象的实例
如果去掉
DataList1.FindControl("Label2").Visible =true;
DataList1.FindControl("Label3").Visible =false;

显示就正长,但达不到我想控制它的目的,帮帮忙在看看
周力 2006-04-03
  • 打赏
  • 举报
回复
对象没有实例化.

C# 每个对象都不是乱跑出来的,,
检查下哪个对象是乱跑的。
Tom_Real 2006-04-03
  • 打赏
  • 举报
回复
你还没绑定DataList,当然会错了。
bingbingcha 2006-04-03
  • 打赏
  • 举报
回复
在你使用对象之前一定要保证对象被分配内存..代码太长了.不敢看.

尤其是从数据库取出来的字段..比如dr["a"].ToString(),这个时候如果a字段没有值的话,就会出现错误...

另外要注意 Null和""是有区别的~~~
lovebanyi 2006-04-03
  • 打赏
  • 举报
回复
对象没有实例化.

62,041

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧