viewstate用法(viewstate 的用法)
viewstate 的用法?
网友:疯孩纸 提问
最近接触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:
在开始的时候我在page_load 里初始化使viewstate[“ShowRightAns”]=false,这样不显示正确答案,然后button_click后将viewstate[“ShowRightAns”]=true,然后返回到那个页面,按我的要求应该是能显示答案,可是怎么都没有显示,可能我对viewstate的还不是很明白,请各位高手赐教!!!Thank you!!!
看了那图,更不明白,不太清楚页面加载时,如我上面贴的代码,是不是又重新对viewsate进行了赋值,使我后面button_click事件对viewstate值的改变又一次覆盖了,所以button_click其实根本没起什么作用,如果是这样,又如何保留这个经过改变的viewstate的值呢?谢谢!
回复二楼:恩,是在ItemTemplate,那我在页面加载时如何重新计算表达式的值呢,请赐教,谢谢!
首先感谢二楼,您的第一种方法我已经想到过了,如果viewstate不好用的话,就像这样!
1楼网友:神的生死簿 解答于 2022-06-06 14:45
就在当前页面中保存数据的. 像session.是会话级别的.只要会话没有过期.session中存的数据就在. viewstate是页面级别的.只要这个页面在.viewstate中存的数据就在. 就是说viewstate中存的数据只能在声明该变量的页面中使用. 比如在某页的page_load中声明了:viewstate[“test”]=”fdasfdsa”; 那么在该页中的任何一个方法中都可以使用viewstate[“test”]来直接得到值”fdsafdsa”.
2楼网友:第四晚心情 解答于 2022-02-06 13:19
我暂时保留我的看法!
本文地址:https://www.cubemovie.cn/hetong/9774.html