我在asp.NET
中动态创建现有数据网格的不同行中的dragrids我生成的数据网格有一列是TemplateColumn(一个CheckBox列)。
在我的父数据网格中,我有一个带复选框的模板列。当我选中或取消选中复选框的值时,会调用check_change方法(autopostback设置为true),动态生成的datagrids将丢失已选中的复选框(复选框都将再次取消选中)。但是,如果我检查子项(动态生成的)网格的任何复选框并按F5,它会刷新页面,但我仍然选中了复选框。
发生了什么事?如何回复不同于刷新F5 ???理解这可能有助于我解决我的问题:DataGrid not being altered!
答案 0 :(得分:2)
很简单,浏览器缓存响应。因此,如果您按F5,您通常会每次都看到带有选中复选框的网格。但是,如果您在代码中进行回发,则强制浏览器连接到服务器并发布数据。
然后等待来自服务器的响应,并返回回发的原因。
很烦人,但这就是浏览器的工作原理。您可以通过按Ctrl + F5强制完成刷新而不是模拟回发。
这有时(有时)取决于浏览器,因为并非所有浏览器的行为都与您在此处描述的相同。
如果需要回发,但您仍希望将复选框状态保持为已选中状态,我建议您改为使用AJAX。
答案 1 :(得分:1)
“刷新”只是调用最后一个页面请求。因此,如果 你只是浏览了一个页面然后点击刷新,它只是要求该页面 试。
回发本质上是发送页面上的一个操作 信息回到服务器。
答案 2 :(得分:0)
理想情况下,它是PostBack,但如果您在每次访问时将其设置为“服务器请求”页面,或者从“本地Histroy缓存”中选择,则它将取决于您的浏览器设置。
点击“刷新”按钮将从服务器向页面发出新请求,
并且它不会更改Http Method(Get , Post)
的状态,我的意思是它不会更改页面的IsPostBack
状态。
但是,提交表单(发布表单)会将IsPostBack
属性设置为true
并且约page_load
将调用两个案例