首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

关于ViewState有关问题怎么将更改后的datatable保存到ViewState中

2012-06-15 
关于ViewState问题如何将更改后的datatable保存到ViewState中求解,将最新的数据保存到viewstate中为什么每

关于ViewState问题如何将更改后的datatable保存到ViewState中
求解,将最新的数据保存到viewstate中为什么每次得到的都是初始保存进去的数据.

C# code
public string ReaderQuestion(string type)        {            //所有题目            DataTable ddt = (DataTable)ViewState["question"];            //获取选择的答案            string answer = Request.Form["answer"];            //获取题目序号            int num = Convert.ToInt32(hidNum.Text);            int sum = Convert.ToInt32(HidSum.Text);            //给上一题的答案赋值            if (num - 1 >= 0)            {                ddt.Rows[num - 1]["Answer"] = answer;            }            if (type == "up")            {                if (num <= sum && num > 0)                {                    num = num - 1;                }            }            else if (type == "next")            {                if (num < sum)                {                    num = num + 1;                }            }            hidNum.Text = num.ToString(); ;            //查询当前序号的题目信息            DataRow[] drs = ddt.Select(string.Format("QuestionNum={0}", num));            if (drs.Length > 0)            {                DataRow dr = drs[0];                StringBuilder sb = new StringBuilder();                sb.Append("<table cellpadding=\"3\" cellspacing=\"0\" border=\"0\" class=\"intable\"><tr><td class=\"borr\" colspan=\"4\"><div>");                sb.Append(num + "." + dr["Title"]);                sb.Append("</div></td></tr><tr>");                string QuestionType = dr["QuestionType"].ToString().Trim();                //判断题目类型生成不同的HTML                if ("多选".Trim().Equals(QuestionType))                {                    string[] selectAn = dr["SelectAn"].ToString().Split('|');                    for (int i = 0; i < selectAn.Length; i++)                    {                        sb.Append("<td class=\"bor\"><input id=\"input_" + i + "\" type=\"checkbox\"  name=\"answer\" value=" + selectAn[i] + "/>" + selectAn[i] + "</td>");                    }                }                else if ("单选".Trim().Equals(QuestionType))                {                    string[] selectAn = dr["SelectAn"].ToString().Split('|');                    for (int i = 0; i < selectAn.Length; i++)                    {                        sb.Append("<td class=\"bor\"><input id=\"input_" + i + "\" type=\"radio\"  name=\"answer\" value=" + selectAn[i] + " />" + selectAn[i] + "</td>");                    }                }                else if ("更多题型".Trim().Equals(QuestionType))                {                }                sb.Append("</tr></table>");                ViewState["question"] = ddt;  //将最新的数据保存到viewstate中                  return sb.ToString();            }            else            {                return "已经没有题目了!";            }        }


[解决办法]
怎么可能?
1,防止服务器会发
2,定义的时候 用静态。
[解决办法]
这段代码看上去应该是正常的.
[解决办法]
你的值是否发生改变了,改变了是否接受改变了
[解决办法]
ReaderQuestion 这是一个属性么?估计这个属性每次都会被初始化的
------解决方案--------------------


你把这个定义的,Load 事件中,并且在页面 展示的时候 初始化,之后在回发的时候不要对其操作,应该不会出现你说的那种情况的。
if (!ispostback)
{
定义在这个里边;
}
其他事件只对其修改。
[解决办法]
这段代码看上去应该是正常的. 

热点排行