我不想把这个变量放到viewstate,session,cache中,不知道是否可以实现。
也就是,页面postback之后,如何保存变量?

解决方案 »

  1.   

    可以的,你去找dataTable每一个单元格的值
      

  2.   

    我知道不太好实现,但是我也有苦恼。
    用session弱点太多了。用viewstate,无法串行话。另外数据量也太大。用cache的话,禁止使用,就麻烦了。
    不知道是否有方法,生成一个静态的变量,一直存在?
      

  3.   

    to fancyf(凡瑞) 
    画面postback以后,就得不到这个datatable的值了,如何去找?
      

  4.   

    你这个问题比较苛刻。。既然上面的那些方法你都否决了。似乎没什么更好的办法
    session是可以考虑。。出错的问题我至今是没遇到过。但是还是有些人常有遇到。我本人没遇到
    感觉没出什么意外的话,SESSION还是挺不错的
      

  5.   

    To hackate 无法定义 static 类型的变量吗?
      

  6.   

    你可用一个静态变量来保存,但存在多人操作时会产生变化的问题.
    其实最好的办法是用cache来保存.
    楼主说"禁止使用就麻烦了",怎么会禁止使用?这个是服务器的东西,不是用户说禁止就禁止得了的.你可能把它和cookies混起来了.
      

  7.   

    用Application或者static变量的话所有用户都是共享的,如果这个datatable所有用户都一样,可以用这两者之一
      

  8.   

    to hchxxzx(NET?摸到一点门槛) :
      请教,cache类似session那样,每个user独立,还是像application,所有user共用?我的程序是aspx
    to fancyf(凡瑞) :
      static 变量是所有user公用吗?怎末做呢?我的程序是aspx
      

  9.   

    cache/Application/static都是全部用户共享的要用static的话在一个类增加一个public static DataTable dt;成员,然后就可以通过ClassName.dt来访问了
      

  10.   

    To fancyf(凡瑞):
     这样就麻烦了,能保存一个变量,对用户独立的吗?
    我的需求是这样
      

  11.   

    你一定要这样的话,在SQL中建一个临时表保存吧。提交后查询SQL中的临时表。
      

  12.   

    Session.Cookie不就是针对单个用户的吗?
      

  13.   

    session是最好的,但进程内易出错
    用状态服务器是没问题的但保存前要先串行化,取出时再反串行化
      

  14.   

    lxg13(翔子):
       viewState中保存dataTable,如何先串行化?取出的时候,如何反串行化?
      

  15.   

    用session或viewstate都可以,datatable本身就是可序列化的
    你要是不放心Session的话可以用StateServer或者SqlServer来保存Session
    以StateServer为例,
    在应用程序的web.config文件中,将<sessionstate>元素mode属性设置为stateserver。
     <sessionState 
                mode="StateServer"
                stateConnectionString="tcpip=localhost:42424"
                cookieless="false" 
                timeout="5" 
        />
    SqlServer配置还要复杂一点
      

  16.   

    用session或viewstate都可以,datatable本身就是可序列化的
    你要是不放心Session的话可以用StateServer或者SqlServer来保存Session
    以StateServer为例,
    在应用程序的web.config文件中,将<sessionstate>元素mode属性设置为stateserver。
     <sessionState 
                mode="StateServer"
                stateConnectionString="tcpip=localhost:42424"
                cookieless="false" 
                timeout="5" 
        />
    SqlServer配置还要复杂一点
      

  17.   

    fancyf(凡瑞) :
    我现在可以把dataTable放到viewstate里面去,但拿出来的时候,就出错了,提示我无法串行化
      

  18.   

    保存:Me.viewstate.Add("dtDisplay", dt)提取:
    data.dsDisplay = CType(Me.viewstate("dtDisplay"), DataTable)
      

  19.   

    data.dsDisplay data是你自己写的类吗?dsDisplay是属性。那么这个属性接受的是datatable类型的吗??照你的代码看是没有错误的,目前最有可能的问题就是出在data.dsDisplay上
      

  20.   

    data.dsDisplay 是我自己写的一个属性,就是datatable型的,问题处在提取的那句话,会出错,提示我没有串行化
      

  21.   

    现在我不明白,datatable放到viewstate中,是否没有问题
      

  22.   

    DataTable肯定是可以序列化的,你那两句话也没问题,要是出了这种提示,就要看一看你的DataTable中是不是保存了无法序列化的对象?
    你也可以用一个空的DataTable试一下
      

  23.   

    你也可以用一个静态的哈希表来维护,key用sessionID加上页面名称就可以了
    结束会话里把相关table清除。