DataGrid(自动创建列)在绑定数据后,一般在(非grid事件触发导致的)页面回发时,是不需要重新绑定的,DataGrid仍然显示回发前的数据。但当Datagrid 处于“Edit”(编辑)模式时,就需要重新绑定,否则编辑行全是空值。假如我们取消编辑(并重新绑定),那么已编辑的值被数据源中的原始值覆盖。
那么为什么需要重新绑定呢?本来不“Edit”的时候,数据来来回回都能显示,为什么一编辑,Grid就不知道原来数据了?需要再次绑定--给它数据。
从模本列(ItemTemplate)的使用过程出发,或许能理解这一点。模板列为了更灵活的控制grid的显示,对编辑(可能使用TextBox)和正常显示(Literal)状态都可以灵活定制,而每种状态下的数据都可以灵活呈现。因此,在切换状态时,Grid可能由于不知道它需要如何显示数据,而干脆不显示数据。不过事实正好相反,当Grid没有使用模板列指定编辑状态下显示控件时,默认将是TextBox,既然Bill知道这一点,也知道回发回来的数据(原Grid的数据),它为什么不自动赋值?而一次次叫大家重新绑定?
从另一个角度去看,假如对Grid的每一列都使用模板列动态创建,它的正常显示状态,也就是模板列的ItemTemplate,都以TextBox方式显示数据而不是使用Literal。此时整个Grid显示出来时,每个单元格都是可以直接编辑的。那么页面回发后,假如不重新绑定的话,那么已编辑的值不会被数据源中的原始值覆盖,这是可以理解的。当假如重新绑定,还记得第一段的“覆盖”吗?
这个问题或许可以如此猜测:页面回发是包含动态创建的页面,以及相关数据。但回发后Asp.net依照原始页重新创建该页,并比照回发的页数据,把该保存状态的数据重新填上。那这机制究竟是什么呢?
asp.net gridview asp.net gridview 重新绑定后样子改变
转载本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
Asp.Net Core 配置动态WebApi
.Net Core 配置动态WebApi
动态生成 Web 应用服务 -
ASP.NET GridView导出
/// /// 将Web控件或页面信息导出(带文件名参数) /// /// 控件实例 /// 导出类型:Excel或Word /// 保存文g
gridview asp.net excel 导出 html -
Asp.net有关GridView的使用
色方法四、两个事件五、GridView实现自动编号不难写
自动编号 背景色 连接字符串