日期:2014-05-18  浏览次数:20431 次

动态生成控件 实时保存导致页面占用资源过大!
是这样的,公司需求考试项目,在线考试的时候题目是从数据库抽出来在后台动态生成控件.如果题目过多,动态生成的控件就会很多,导致页面过慢,而且动态生成控件只能写在Page_Load里面,不能写在Page_Load的if (!IsPostBack)里面,否在页面再次加载的时候动态生成控件会没有,由于需求里有一项是考试途中万一断电就要保存这些资料.所以我把每个动态生成得控件家了事件.每触发一个事件的时候就要调用Page_Load里面动态生成控件的代码.所以导致页面资源占用过大,而且触发事件的时候还要做到页面不能刷新.这点我用了AJAX里的UpdatePanel控件.现在我就是想触发动态生成控件事件时,能不能直接触发动态生成控件的事件,不触发Page_Load?或者还有别得办法帮我解决这个问题.

------解决方案--------------------
一定要放在同一个页面么?可以分批生成,分页显示,换页时保存
------解决方案--------------------
好像直接用Ajax.dll,调用服务器方法不会调用Page_load
------解决方案--------------------
不触发postback事件,用ajax保存。
------解决方案--------------------
帮顶
------解决方案--------------------
up
------解决方案--------------------
探讨
帮顶

------解决方案--------------------
网上有很多的,我用的是Ajax.dll
C# code

    protected void Page_Load(object sender, EventArgs e)
    {
        Ajax.Utility.RegisterTypeForAjax(typeof(Test_TestAjaxnet));
    }

   [Ajax.AjaxMethod(HttpSessionStateRequirement.ReadWrite)]
    public Object GetValue(string newparam)
    {
        Session.Add("tt", "gg");
        return new string[2] { newparam, this.GetTest() };
    }

    JS:
        function onchangeText()
        {
            var getvalue = Test_TestAjaxnet.GetValue('newparam');
            var txt = document.getElementById("Text1");
            txt.value = getvalue.value[0] + getvalue.value[1];
        }

------解决方案--------------------
通过js端直接传参数调用服务端方法,在服务端方法进行业务处理