首页
新闻
论坛
群组
Blog
文档
下载
读书
Tag
网摘
搜索
.NET
Java
游戏
视频
人才
外包
培训
数据库
书店
程序员
欢迎您:
游客
| 退出
| 登录
注册
帮助
我的帖子
我参与的帖子
我的空间
我的网摘
CSDN
CSDN社区
.NET技术
ASP.NET
将帖子提前
放进我的网摘
推荐给好友
我要提问
帖子加分
生成帖子
置顶
推荐(加精)
取消推荐(加精)
锁定帖子
移动帖子
取消引用
结帖去...
管理菜单
页面风格切换
标准风格
老版本论坛
viewstate 的用法~~~~
[已结帖,结帖人:zimu312500]
加为好友
发送私信
在线聊天
zimu312500
等级:
可用分等级:
贫农
总技术分:
0
总技术分排名:
325861
结帖率:
100.00%
发表于:
2008-11-01 18:08:36
楼主
最近接触ViewState,很是迷茫,代码如下:
Default.aspx.cs:
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
ViewState["ShowRightAns"] = false;
BindDate();
}
}
protected void Button1_Click(object sender, EventArgs e)
{
string StuAnswer="";
for (int i = 0; i < GridView1.Rows.Count; i++)
{
if ((GridView1.Rows[i].FindControl("choice1") as RadioButton).Checked)
StuAnswer += "|1";
else if ((GridView1.Rows[i].FindControl("choice2") as RadioButton).Checked)
StuAnswer += "|2";
else if ((GridView1.Rows[i].FindControl("choice3") as RadioButton).Checked)
StuAnswer += "|3";
else if ((GridView1.Rows[i].FindControl("choice4") as RadioButton).Checked)
StuAnswer += "|4";
else
StuAnswer += "|0";
}
ViewState["ShowRightAns"] = true;
Response.Write(StuAnswer);
}
private void BindDate()
{
try
{
SqlConnection conn = DAL.DB.conn();
string sql = "select top 10 * from [Exam_Question] order by newid()";
SqlDataAdapter sda = new SqlDataAdapter(sql, conn);
DataSet ds = new DataSet();
sda.Fill(ds);
this.GridView1.DataSource = ds.Tables[0].DefaultView;
this.GridView1.DataBind();
}
catch (Exception ex)
{
Response.Write(ex.ToString());
}
}
}
Default.aspx:
<asp:Label ID="Label1" runat="server" Text=' <%#"正确答案:"+Eval("Answer") %>' Visible=' <%#ViewState["ShowRightAns"] %>'> </asp:Label>
在开始的时候我在page_load 里初始化使viewstate["ShowRightAns"]=false,这样不显示正确答案,然后button_click后将viewstate["ShowRightAns"]=true,然后返回到那个页面,按我的要求应该是能显示答案,可是怎么都没有显示,可能我对viewstate的还不是很明白,请各位高手赐教!!!Thank you!!!
问题点数:
50
回复次数:
21
显示所有回复
显示星级回复
显示楼主回复
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
sp1234
程序员把软件重新组合一下改头换面就可以自己找sales卖了,你会怎么管理呢?
等级:
可用分等级:
富农
总技术分:
78216
总技术分排名:
83
发表于:
2008-11-01 18:45:53
1
楼 得分:
10
换一种有效的编程方法,参考:
http://www.google.cn/search?hl=zh-CN&newwindow=1&rls=com.microsoft%3A*%3AIE-SearchBox&rlz=1I7GGIJ&q=Scott+Mitchell+%E7%9A%84ASP.NET+2.0%E6%95%B0%E6%8D%AE%E6%95%99%E7%A8%8B&btnG=Google+%E6%90%9C%E7%B4%A2&meta=&aq=f&oq=
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
sp1234
程序员把软件重新组合一下改头换面就可以自己找sales卖了,你会怎么管理呢?
等级:
可用分等级:
富农
总技术分:
78216
总技术分排名:
83
发表于:
2008-11-01 18:47:00
2
楼 得分:
0
你在asp.net2.0的编程方法中,看不到类似:
if (!IsPostBack)
{
BindDate();
}
这样的代码。你的问题可以因此而彻底解决。
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
zimu312500
等级:
可用分等级:
贫农
总技术分:
0
总技术分排名:
325861
发表于:
2008-11-01 18:51:44
3
楼 得分:
0
谢谢楼上,先学习下!
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
bossma
等级:
可用分等级:
中农
总技术分:
1101
总技术分排名:
18461
发表于:
2008-11-01 18:53:50
4
楼 得分:
10
可能和页面加载顺序有关;可以在页面回发后 BindDate()看看
看看这个,做个测试应该就知道原因了
http://chensujun.blog.sohu.com/71633710.html
ViewState["ShowRightAns"] = true; 执行的时间
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
simson2010
大狗狗
等级:
可用分等级:
中农
总技术分:
595
总技术分排名:
29408
发表于:
2008-11-01 23:14:46
5
楼 得分:
5
BindData()只在第一次请求页面时发生,即以后每次PostBack时,页面类只从ViewState中取得数据绑定GridView(注:发生在Page_Load()中),而Button_Click是发生Page_Load()之后,
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
forthx
等级:
可用分等级:
长工
总技术分:
0
总技术分排名:
325861
发表于:
2008-11-02 00:16:09
6
楼 得分:
0
哦~我也疑惑这个加载顺序的问题呢
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
zimu312500
等级:
可用分等级:
贫农
总技术分:
0
总技术分排名:
325861
发表于:
2008-11-02 10:45:15
7
楼 得分:
0
引用 5 楼 simson2010 的回复:
BindData()只在第一次请求页面时发生,即以后每次PostBack时,页面类只从ViewState中取得数据绑定GridView(注:发生在Page_Load()中),而Button_Click是发生Page_Load()之后,
也就是说当页面重新加载的时候,viewstate中根本没有保存我在Button_click里改变的值?那应该怎么实现我要的效果呢?而且有一种情况就是当我对页面进行分页时,点击下一页,然后再点击上一页,上一页选择的值就没了,看来viewstate保留的是当前页面的值,而且只对当前页面有效,看来如果还要保留那个值的话,还得专门进行记录!
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
mengxj85
漂零
等级:
可用分等级:
富农
总技术分:
5360
总技术分排名:
4136
发表于:
2008-11-02 12:34:56
8
楼 得分:
0
学习,ViewState有些神秘
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
yistudio
阳光灿烂的日子
等级:
可用分等级:
掌柜
总技术分:
8836
总技术分排名:
2278
发表于:
2008-11-02 12:49:23
9
楼 得分:
5
“然后返回到那个页面”——这样的话页面重新被加载,page_load又被执行一遍,你的那个viewstate当然始终是false啦
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
zimu312500
等级:
可用分等级:
贫农
总技术分:
0
总技术分排名:
325861
发表于:
2008-11-02 13:36:52
10
楼 得分:
0
引用 9 楼 yistudio 的回复:
“然后返回到那个页面”——这样的话页面重新被加载,page_load又被执行一遍,你的那个viewstate当然始终是false啦
是的,不过我是放在If(!Ispostback)里,第二次加载时并不会又对viewstate重新进行赋值啊。
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
konglingkang
该用户很懒,没有设置昵称
等级:
可用分等级:
中农
总技术分:
62
总技术分排名:
116878
发表于:
2008-11-03 18:53:05
11
楼 得分:
0
页面当你点击的时候页面回调了 就不执行!IsPostBack的代码了!!!
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
yistudio
阳光灿烂的日子
等级:
可用分等级:
掌柜
总技术分:
8836
总技术分排名:
2278
发表于:
2008-11-03 19:14:29
12
楼 得分:
0
记得没错的话 !Ispostback 只是在页面刷新的时候不被执行吧,页面加载可是要执行的
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
zimu312500
等级:
可用分等级:
贫农
总技术分:
0
总技术分排名:
325861
发表于:
2008-11-04 08:58:15
13
楼 得分:
0
是啊,不执行!IsPostBack,所以不会对viewstate重新进行赋值了啊。不过看到12楼的解释,又有些困惑了,页面刷新和页面加载这2个又有什么区别!!!
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
gdf2627
等级:
可用分等级:
贫农
总技术分:
318
总技术分排名:
45599
发表于:
2008-11-04 10:13:21
14
楼 得分:
10
自己写个文件测试吧,我一直都不明白ViewState与全局变量有什么不同?
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
takako_mu
賣醬油的
等级:
可用分等级:
贫农
总技术分:
1541
总技术分排名:
13679
发表于:
2008-11-04 10:37:23
15
楼 得分:
0
我對if (!IsPostBack)也很感冒,到現在都不會,跟你同樣的疑惑。
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
mingch516548094
草鞋
等级:
可用分等级:
乞丐
总技术分:
258
总技术分排名:
52302
发表于:
2008-11-04 10:38:51
16
楼 得分:
0
帮顶
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
cylkiss
该用户很懒,没有设置昵称
等级:
可用分等级:
长工
总技术分:
10
总技术分排名:
220020
发表于:
2008-11-04 10:49:41
17
楼 得分:
0
学习
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
conan19771130
残疾人程序员, study sharepoint
等级:
可用分等级:
掌柜
总技术分:
6507
总技术分排名:
3296
发表于:
2008-11-04 10:58:31
18
楼 得分:
0
debug
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
jxph123535
等级:
可用分等级:
长工
总技术分:
71
总技术分排名:
109857
发表于:
2008-11-04 11:05:03
19
楼 得分:
10
e~~
简单的说
页面首次加载不是PostBack
引用Microsoft的一段解释:
{
Page_Load:出现此事件期间,您可以执行一系列的操作来首次创建 ASP.NET 页面或响应由投递引起的客户端事件。在此事件之前,已还原页面和控件视图状态。使用 IsPostBack 页面属性检查是否为首次处理该页面。如果是首次处理,请执行数据绑定。此外,请读取并更新控件属性。
}
看杂文野史 不如看微软的正统
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
jxph123535
等级:
可用分等级:
长工
总技术分:
71
总技术分排名:
109857
发表于:
2008-11-04 11:15:50
20
楼 得分:
0
说句不太严紧的话
你可以把页面的首次加载看成是Client 用Get方法访问Server
其他的表单的访问全部都是Post
这点可能会让你略微的理解
Frist_load others_load的区别
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
zimu312500
等级:
可用分等级:
贫农
总技术分:
0
总技术分排名:
325861
发表于:
2008-11-08 10:33:22
21
楼 得分:
0
非常感谢楼上的几位,虽然搞的还是模棱两可!呵呵!
修改
删除
举报
引用
回复
将帖子提前
放进我的网摘
推荐给好友
我要提问
帖子加分
结帖去...
管理菜单
页面风格切换
标准风格
老版本论坛
网站简介
-
广告服务
-
网站地图
-
帮助
-
联系方式
-
诚聘英才
-
English
-
问题报告
北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
abc推荐给好友