最近做了一个系统里边大量用到了动态生成控件的东西
需要动态生成的控件我放在了repeater里 再绑定一个没业务意义的数据源List<string>, 每次需要“添加一组”的时候 数据源.add(string.Empty)就行,这样来控制比定义一堆控件再添加到容器里要容易的多,但美中不足的是每次添加一组控件或者删除一组控件时需要repeater重新绑定一下,这样原来的控件里的值就没有了,现在要请教的就是如何方便简单地保存repeater里控件的值?
(ps.除了每次遍历repeater.items里的控件挨个存到ViewState里  觉得这样太麻烦了 当前就是用的这个方式  快写吐了)ps2.以上说的是webform动态控件repeater控件状态

解决方案 »

  1.   

    refer related:
    http://www.cnblogs.com/insus/p/3193619.html
    http://www.cnblogs.com/insus/archive/2013/04/23/3035447.html
    http://www.cnblogs.com/insus/p/3148345.html一些物件在postback之后,丢失:
    http://www.cnblogs.com/insus/archive/2013/07/18/3197194.html
    http://www.cnblogs.com/insus/archive/2012/09/24/2700658.html
      

  2.   

     ???不明白,跟ajax有什么关系??
      

  3.   

     ???不明白,跟ajax有什么关系??每次添加一组控件或者删除一组控件时需要repeater重新绑定一下这个不能用js写吗
      

  4.   

     ???不明白,跟ajax有什么关系??每次添加一组控件或者删除一组控件时需要repeater重新绑定一下这个不能用js写吗  那就不用repeater了,而且动态添加的控件是服务器控件  用JS不行
      

  5.   

    要想简单可以用webform现成的双向绑定功能:<%# Bind("xxx") %>或asp.net 4.5以后的<%# BindItem.xxx %>这种。
    但是Repeater不支持双向绑定,功能近似的可以支持双向绑定的是ListView,但是ListView设计成同时只能有一个列表项处于编辑状态,这个大概和你的要求也不符合。所以只能回到你现在的处理方式,循环处理模板中的每一个控件。但是这个过程是可以简化的。比如如果你的控件的Id都和后台某个model类的属性一一对应,模板中使用控件的方式又比较简单(没有嵌套和动态的情况),那就可以写一个自动化的方法枚举控件并对model类进行赋值,相当于自己做一个简单的data model binding功能。