本人做网页较少,一直没很好理解asp.net的运行机制,什么时候(操作)会引发回发导致页面重新加载从而眼来的数据丢失
我认为一般是按button的时候现在碰到一个很奇怪的现象:单步到
new DBDataFullConnectWithGirdView(this, _DataMg, GridView1, fieldDataGridViewColumnMap, fieldControlDecodeDataMap, ref index);在此处的_DataMg里面是有数据源的;按F11进入这个类的构造函数,却发现
  public DBDataFullConnectWithGirdView(Page page,DBDataFullMg dataMg, GridView gv, Dictionary<string, string> fieldDataGridViewColumnMap, Dictionary<string, StringDictionary> fieldDataGridViewDecodeDataMap,ref int index)
        {
            _page = page;
            _DataMg = dataMg;
//.........
                }
在这里的dataMg的数据源竟然没了count属性为0
是什么原因,求解释(越详细越好),我这里是直接按F11进入的,难道中间还会有其他的操作导致数据丢失

解决方案 »

  1.   

    把相关代码段贴上_DataMg 的值
      

  2.   

    dataMg 这个只能逐步检查。。重你第一步传值开始。到哪步没得。再有的前面输出一下。
      

  3.   

    这里的相关代码很多很多的,有一些弄到dll里面去了
    不纠结这个问题了  就想问一下大虾们在做asp.net时,如何处理这样的回发机制,在Winform里面本来只需要读取一次的到这里读取N遍了,这样(当数据量打的时候)我担心速度会很慢,你们一般是怎么处理的呢用static虽然可以,但是他的生命期是Application级别的,担心变慢
      

  4.   

    一般都是分页、部分刷新、cache之类
    不能完全用winform的思维来搞
      

  5.   

    如果是分页的话,是在存储过程里面多次读取
    还是一次性读取保存后,以后就这这里读取呢(用什么来存储DataTable)
      

  6.   

    先搞清cache, ViewState, session的概念(这是几种比较简单的缓存办法)
      

  7.   

    Page_Load里代码写到if(!IsPostBack)中