DataGrd(Asp.net)的重新绑定问题

       DataGrid(自动创建列)在绑定数据后,一般在(非grid事件触发导致的)页面回发时,是不需要重新绑定的,DataGrid仍然显示回发前的数据。但当Datagrid 处于“Edit”(编辑)模式时,就需要重新绑定,否则编辑行全是空值。假如我们取消编辑(并重新绑定),那么已编辑的值被数据源中的原始值覆盖。
       那么为什么需要重新绑定呢?本来不“Edit”的时候,数据来来回回都能显示,为什么一编辑,Grid就不知道原来数据了?需要再次绑定--给它数据。
       从模本列(ItemTemplate)的使用过程出发,或许能理解这一点。模板列为了更灵活的控制grid的显示,对编辑(可能使用TextBox)和正常显示(Literal)状态都可以灵活定制,而每种状态下的数据都可以灵活呈现。因此,在切换状态时,Grid 可能由于不知道它需要如何显示数据,而干脆不显示数据。不过事实正好相反,当Grid没有使用模板列指定编辑状态下显示控件时,默认将是TextBox,既然Bill知道这一点,也知道回发回来的数据(原Grid的数据),它为什么不自动赋值?而一次次叫大家重新绑定?
      从另一个角度去看,假如对Grid的每一列都使用模板列动态创建,它的正常显示状态,也就是模板列的ItemTemplate,都以TextBox方式显示数据而不是使用Literal。此时整个Grid显示出来时,每个单元格都是可以直接编辑的。那么页面回发后,假如不重新绑定的话,那么已编辑的值 不会被数据源中的原始值 覆盖,这是可以理解的。当假如重新绑定 ,还记得第一段的“覆盖”吗?
       这个问题或许可以如此猜测:页面回发是包含动态创建的页面,以及相关数据。但回发后Asp.net依照原始页重新创建该页,并比照回发的页数据,把该保存状态的数据重新填上。那这机制究竟是什么呢?

转载于:https://www.cnblogs.com/Arming/archive/2004/06/20/17367.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值