首页
新闻
论坛
群组
Blog
文档
下载
读书
Tag
网摘
搜索
.NET
Java
游戏
视频
人才
外包
培训
数据库
书店
程序员
欢迎您:
游客
| 退出
| 登录
注册
帮助
我的帖子
我参与的帖子
我的空间
我的网摘
CSDN
CSDN社区
.NET技术
ASP.NET
将帖子提前
放进我的网摘
推荐给好友
我要提问
帖子加分
生成帖子
置顶
推荐(加精)
取消推荐(加精)
锁定帖子
移动帖子
结贴去...
管理菜单
页面风格切换
标准风格
老版本论坛
有请高手“未将对象引用设置到对象的实例”
[无满意答案结贴]
加为好友
发送私信
在线聊天
kx_z2007
太阳的世界都是金子
等级:
发表于:
2008-05-07 14:51:38
楼主
未将对象引用设置到对象的实例。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.NullReferenceException: 未将对象引用设置到对象的实例。
源错误:
行 70: strPanelName = "pnlForm" + ViewState[ "CurrentPage" ];
行 71: pnlPanel = (Panel)FindControl(strPanelName);
行 72: pnlPanel.Visible = false;
行 73:
行 74: // Show Current Panel
源程序如下:
protected void btnNextPage_Click(object sender , System.EventArgs e)
{
Panel pnlPanel=new Panel();
string strPanelName;
// Hide Previous Panel
strPanelName = "pnlForm" + ViewState[ "CurrentPage" ];
pnlPanel = (Panel)FindControl(strPanelName);
pnlPanel.Visible = false;
// Show Current Panel
int currentPage = (int)ViewState["CurrentPage"];
currentPage+=1;
ViewState["CurrentPage"] = currentPage;
strPanelName = "pnlForm" + ViewState[ "CurrentPage" ];
pnlPanel = (Panel)FindControl( strPanelName );
pnlPanel.Visi
问题点数:
10
回复次数:
23
显示所有回复
显示星级回复
显示楼主回复
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
hecong875
全世界失眠
等级:
发表于:
2008-05-07 14:57:19
1
楼 得分:
0
你自己看他报的是那句 没有想对象引用设置到对象的实力 你给那里打个断点 看那里的哪个对象的值是多少!
一般着情况下!说明对象为null
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
kx_z2007
太阳的世界都是金子
等级:
发表于:
2008-05-07 15:02:55
2
楼 得分:
0
报错报的是
行 72: pnlPanel.Visible = false;
这句有问题,但原因是pnlPanel未取到数值,进而问题就出在
行 71: pnlPanel = (Panel)FindControl(strPanelName);
这句,这里的“strPanelName”可以取到值,但左边的“pnlPanel“始终没有数值,是不是等号右边的语句写的有问题?请高手不惜赐教。
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
live_7sky
天山寒雪
等级:
发表于:
2008-05-07 15:06:37
3
楼 得分:
0
pnlPanel = (Panel)FindControl(strPanelName);
语句有问题 ,
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
leo5381544
敲敲
等级:
发表于:
2008-05-07 16:53:27
4
楼 得分:
0
你调试下就可以看到 程序里pnlPanel是null
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
xiahouwen
武眉博<活靶子.NET>
等级:
发表于:
2008-05-07 17:13:26
5
楼 得分:
0
FindControl返回可能为null
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
phper2008
站着撒尿的鱼
等级:
发表于:
2008-05-07 17:15:57
6
楼 得分:
0
(Panel)FindControl(strPanelName),
一般都是Controls.FindControl你前面是用什么寻找控件的!
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
wxg22526451
☆旋风☆
等级:
发表于:
2008-05-07 17:17:54
7
楼 得分:
0
引用 5 楼 xiahouwen 的回复:
FindControl返回可能为null
//应该就是这错误
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
quanwuling
松鼠
等级:
发表于:
2008-05-07 17:25:48
8
楼 得分:
0
判断一下ViewState,有可能为空
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
zcl26
zchonest
等级:
发表于:
2008-05-07 17:30:49
9
楼 得分:
0
应该是ViewState[ "CurrentPage" ]的问题吧,跟踪下它的值……
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
GengWH
GengWh
等级:
发表于:
2008-05-07 17:53:23
10
楼 得分:
0
FindControl返回可能为null
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
bobo_555
bobo
等级:
发表于:
2008-05-07 18:59:55
11
楼 得分:
0
我的也出现了这样的问题,findCOntrol为空,方法没错,但就是找不到控件,不知道是什么问题,关注一下。。
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
insus
Insus.NET
等级:
发表于:
2008-05-07 21:27:07
12
楼 得分:
0
把71和72行改一下:
if (FindControl(strPanelName) != null)
{
pnlPanel = (Panel)FindControl(strPanelName);
pnlPanel.Visible = false;
}
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
kx_z2007
太阳的世界都是金子
等级:
发表于:
2008-05-08 09:56:48
13
楼 得分:
0
按各位的指点我又试了试的确是“FindControl返回为null”,但现在的问题是怎样写能使其不为NULL呢?正如bobo_555所说的那样,方法应该没有问题但就是找不到控件。我最近baidu和Google了很多相关的网页,网上虽然早有人提出了类似的问题但是一直没有有效解决的方法,请大家能否给出一个可行的解决办法,再次感谢!
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
baiyicug
龙腾四海
等级:
发表于:
2008-05-08 13:48:32
14
楼 得分:
0
正如6楼所说,FindControl前应该加上控件所在的上一级控件的ID,
也就是说“ (Panel)FindControl(strPanelName);” 这里的 strPanelName 你有可能放在其他控件中了
你把前台代码放出来看看吧
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
kx_z2007
太阳的世界都是金子
等级:
发表于:
2008-05-08 14:29:22
15
楼 得分:
0
OK!按照大家所说的,前台代码如下:
<form id="Form1" method="post" runat="server">
<asp:Panel id="pnlForml" runat="server">
<H3>Page <%=ViewState["CurrentPage"]%> of 3 </H3>
<HR>
First Name:
<asp:TextBox id="txtFirstname" runat="server"> </asp:TextBox>
<HR>
Last Name:
<asp:TextBox id="txtLastname" runat="server"> </asp:TextBox>
<HR>
<asp:Button id="Button1" onclick="btnNextPage_Click" runat="server" Text="Next Page>>"> </asp:Button>
</asp:Panel>
<asp:Panel id="pnlForm2" runat="server" Visible="False">
<H3>Page <%=ViewState["CurrentPage"]%>of 3 </H3>
<HR>
Favorite Color:
<asp:TextBox id="txtFavColor" runat="server"> </asp:TextBox>
<HR>
<asp:Button id="Button2" onclick="btnPrevPage_Click" runat="server" Text=" < <Prev Page"> </asp:Button>
<asp:Button id="Button3" onclick="btnNextPage_Click" runat="server" Text="Next Page"> </asp:Button>
</asp:Panel>
<asp:Panel id="pnlForm3" runat="server" Visible="False">
<H3>Page <%=ViewState["CurrentPage"]%>of 3 </H3>
<HR>
Favorite Philosopher:
<asp:RadioButtonList id="radlFavPhilosopher" runat="server">
<asp:ListItem Value="Frege" Selected="True">Frege </asp:ListItem>
<asp:ListItem Value="Russell">Russell </asp:ListItem>
<asp:ListItem Value="Carnap">Carnap </asp:ListItem>
</asp:RadioButtonList>
<HR>
<asp:Button id="Button4" onclick="btnPrevPage_Click" runat="server" Text=" < <Prev Page"> </asp:Button>
<asp:Button id="Button5" onclick="btnFinish_Click" runat="server" Text="Finish"> </asp:Button>
</asp:Panel>
<asp:Panel id="pnlForm4" runat="server" Visible="False">
<asp:Label id="lblSummary" runat="server"> </asp:Label>
</asp:Panel>
</form>
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
baiyicug
龙腾四海
等级:
发表于:
2008-05-09 10:34:06
16
楼 得分:
0
楼主的意思是要隐藏掉某个Panel吧,
看代码,这些Panel都是直接在Page对象下的,所以FindControl前省略掉Page也是可以的
行 70: strPanelName = "pnlForm" + ViewState[ "CurrentPage" ];
你看一下这里的strPanelName, ViewState[ "CurrentPage" ] 是否有值,如果有值是什么
还发现一个问题:第一个Panel的ID <asp:Panel id="pnlForm
l
" runat="server">
是数字1,还是英文l
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
kx_z2007
太阳的世界都是金子
等级:
发表于:
2008-05-10 21:41:23
17
楼 得分:
0
我跟了一下程序,这里“CurrentPage”的值是1,也就是strPanelName 的值是pnlForm1,对了这里的是数字1而不是字母L.
<asp:Panel id="pnlForml" runat="server">里的pnlForml同样是数字1而不是字母L.
现在的关键是
行 71: pnlPanel = (Panel)FindControl(strPanelName);
中的pnlPanel 取不到值.一直不知道该怎么解决,请高手们指点个方法.
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
skyaspnet
W3CWEB QQ 343397317 欢迎交流(1594)
等级:
发表于:
2008-05-11 00:05:32
18
楼 得分:
0
以前遇到过这个问题, 可以这样试一下:
先把strPanelName表示的控件类型设置一个控件变量(Panel类型控件名),
然后设置它的ID为strPanelName, 再将pnlPanel = (Panel)FindControl(strPanelName);改为
pnlPanel = (Panel)FindControl(控件变量);
你试一下吧
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
baiyicug
龙腾四海
等级:
发表于:
2008-05-12 10:11:57
19
楼 得分:
0
引用 17 楼 kx_z2007 的回复:
我跟了一下程序,这里“CurrentPage”的值是1,也就是strPanelName 的值是pnlForm1,对了这里的是数字1而不是字母L.
<asp:Panel id="pnlForml" runat="server">里的pnlForm
l
同样是数字
1
而不是字母L.
。。。
兄弟,你看清楚啦,这里的pnlForm
l
明显的不是数字1嘛,要不就是你的输入法的问题,反正肯定不是数字1,
你改一下应该就会好啦
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
amandag
高歌
等级:
发表于:
2008-05-12 22:35:44
20
楼 得分:
0
先看看是不是输入错误..
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
shadowjl
shadowow
等级:
发表于:
2008-05-13 08:07:19
21
楼 得分:
0
学习
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
kx_z2007
太阳的世界都是金子
等级:
发表于:
2008-05-13 16:15:24
22
楼 得分:
0
谢谢提醒,的确是粗心大意把pnlform1写成了pnlforml了!以后一定小心注意,可现在改过来之后又出现了如下的错误:
异常详细信息: System.InvalidCastException: 指定的转换无效。
源错误:
行 70: // Hide Previous Panel
行 71: strPanelName = "pnlForm" + ViewState[ "CurrentPage" ];
行 72: pnlPanel = (Panel)FindControl( strPanelName );
行 73: pnlPanel.Visible = false;
具体的就是 行 72: pnlPanel = (Panel)FindControl( strPanelName );的Panel强制转换出错,再次请各位高手指导。
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
flashlove2008
减肥做回帅哥
等级:
发表于:
2008-05-13 22:49:41
23
楼 得分:
0
出现这种情况想到就是用的对象值为空
修改
删除
举报
引用
回复
将帖子提前
放进我的网摘
推荐给好友
我要提问
帖子加分
结贴去...
管理菜单
页面风格切换
标准风格
老版本论坛
网站简介
-
广告服务
-
网站地图
-
帮助
-
联系方式
-
诚聘英才
-
English
-
问题报告
世纪乐知(北京)网络技术有限公司 版权所有 京 ICP 证 020026 号
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
abc推荐给好友