问题:
我写了一个自定义控件,继承了WebControl类和IPostBackEventHandler接口,我的控件的功能是在页面上动态增加表格,我用了Table和TextBox
两个类来生成表格,其中每个表格里内欠一个textbox,我现在的问题是当用户在表格(其实是每个表格中的textbox)中输入了数据后再增加表格后,先前
填写的数据全都丢失了。我怎样在不丢失用户先前数据的情况下动态增加表格,也就是说怎样保存用户先前的数据。
ASP.net提供了“视图状态”和“控件状态”这两个技术,我该选取哪一个?具体怎样来操作,比如说现在已经建立了4*9的表格,我怎样将这些表格的数据
保留下来然后再增加一行变成4*10的表?请高手指点,谢谢!

解决方案 »

  1.   

    你应该是还要对你的table进行操作的,不然你怎么实现添加。
    看看这个对你有没有帮助:http://www.souzz.net/html/edu/net/net4/13537.html
      

  2.   


    动态增加的好像不好整啊,实在不行的话,用Session存放吧
      

  3.   

    用ViewState来保存状态,这是以前慕白大侠的写的一段程序,顺便也拿点分:
    http://topic.csdn.net/t/20061229/14/5264344.html
      

  4.   

    这个问题,在BS中遇到的频率是非常高的,这个问题的原因是页面的自动刷新,导致了原有的数值为空啊想解决他如果是在BS页面中出现这个问题,你可以用ajax,或这其他方法,比如dojo这样的javaScript代码,如果是在CS类库中,建议你使用ViewState。
      

  5.   

    楼上的doney_dongxiang说的对啊,最主要的原因就是页面的自动刷新,我现在就是要保留住页面原来的状态然后再进行操作。
    多谢5楼的wangkun9999给的连接。看来我还要更好的理解视图状态和控件状态的意思。那位高手还有更好的解决方法阿,给多指点指点,我实在是新手以前没有开发控件的经验!
    顺便谢谢楼上的几位!
    嫌分少我会再加的。
      

  6.   

    根据wangkun9999提供的链接,我现在可以实现动态行的添加了。
    但是我是在控件类里定义和申明table的,也就是这样:
    Table table = new Table();
    这样的话每次点击一个页面按钮,页面重新刷新,table也就重新申明了。
    我怎样才能持久住table中的内容在页面刷新的时候不丢失呢?
    恳请赐教。谢谢!