Asp.Net(vb)在代码隐藏中强制回发

Asp.Net(vb)在代码隐藏中强制回发,asp.net,postback,reload,code-behind,Asp.net,Postback,Reload,Code Behind,我需要一种在codebehind中强制回发或重新加载页面的方法。尝试使用一些javascript,但没有成功。浏览网络我看到的第一个问题是“为什么” 情况是,我在autopostback上有一个dropdownlist,gridview数据源的selectparameter是从该dropdownlist的选定值派生出来的。因此,页面正常工作,并且每当所选项目发生更改时,内容都会更新。但是有些链接和按钮会让客户离开页面,所以他们会稍后再链接回来 其思想是将最后一个选项存储在会话中,如果会话选项不是

我需要一种在codebehind中强制回发或重新加载页面的方法。尝试使用一些javascript,但没有成功。浏览网络我看到的第一个问题是“为什么”

情况是,我在autopostback上有一个dropdownlist,gridview数据源的selectparameter是从该dropdownlist的选定值派生出来的。因此,页面正常工作,并且每当所选项目发生更改时,内容都会更新。但是有些链接和按钮会让客户离开页面,所以他们会稍后再链接回来

其思想是将最后一个选项存储在会话中,如果会话选项不是默认选项,则在第一个page.load事件中进行检查。现在我可以在此基础上更改dropdownlist的selectedindex,但显然datasource的触发速度比page.load快,因此除非我可以强制重新加载,否则这不会有任何帮助

有什么想法吗?当然,完整页面的回发/重新加载并不是唯一的选项,只要强制gridview/datasource刷新就足够了。我只是不知道怎么做,除了重新加载整个页面


谢谢。

您可以在页面上放置一个ajax计时器,在它们返回时启用它,在页面呈现时立即导致OnTick autopostback,然后禁用它,但老实说。。。对于一个小问题来说,这是一个可怕的工作

为什么不能在通过编程更改下拉列表值后重新绑定GridView呢。e、 时间线应该是这样的

  • 人员返回页面(不是回发邮件)
  • GridView使用默认值绑定
  • 页面加载
    • 检查会话变量
    • 如果找到一个值
    • 设置DropDownList的选定值
    • 再次调用
      .DataBind()
      ,以强制GridView/DataSource重新绑定

    • 为什么不能使用不同的页面事件?你试过预渲染完成吗?记住,事件的顺序在回发中很重要。PreRenderComplete是呈现页面之前调用的最后一个事件。PaqyLoad实际上在中间的某个地方。

      我在工作中总是这样做

      Protected Sub Page_PreRenderComplete(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.PreRenderComplete
          Session("Value") = ddlList.SelectedValue
      End Sub
      

      该代码可能不正确,但它只是让您了解了事件。

      为什么不处理GridView的数据绑定事件并在该处理程序的会话中检查值?如果它不等于dropdownlist参数,您可以更改它并让数据绑定自行进行

      有关更改Datasource控件的SelectCommand的更一般的示例,请参阅。同样,您应该能够更改ControlParameter的值。执行相同的操作,但用于(嵌套)中继器


      如果这不起作用,那么Eoin的答案将是最好的方法(重新绑定GridView)。

      谢谢大家的帮助。我本来打算听从塞伯鲁斯的建议,但后来一位同事提出了一个不同的想法。注释行替换为未注释行,如下所示

      <SelectParameters> <%--<asp:Parameter Name="timevalue" Type="String" DefaultValue="now" />--%> <asp:ControlParameter ControlID="timevalueDropDownList" PropertyName="SelectedValue" Name="timevalue" DefaultValue="now" /> </SelectParameters> 除此之外,我第一篇文章中的所有内容都适用。在pageload中,我检查了会话,并像以前一样将更改应用于timevalueDropDownList。会话始终在SelectedIndexChanged事件等中更新


      但是,和往常一样,好的想法和回应,我一定会在以后类似的问题中提到这些。我曾经有过很多这样的经历,但我只是找到了其他方法来解决它们,现在我可能不需要了

      我也遇到了类似的问题……凯泽的解决方案对我很有效

      只要说:

      Chart1.databind()
      
      在代码隐藏中的PreRenderComplete事件中

      由于PreRender complete作为图表渲染之前的最后一件事运行,如果您在此处“绑定”图表,它将确保在下拉列表中直观“显示”的内容实际上将用作渲染图表的值

      我们的问题是自动回发级联下拉列表。我们有国家、州、城市的下拉列表。如果用户选择“美国”、“俄亥俄州”、“克莱夫兰”,一切正常,但如果用户返回并将国家更改为“法国”,则会在图表上导致错误,即使下拉列表已自动调整此更改,并将州和城市重置为第一个可用值


      在PreRenderComplete中添加autopostback会迫使图表“获取:下拉列表已被自动更正后的值……太棒了!

      如果您仍在寻找回发以进行
      响应。重定向(“~/imonthispageready”);
      到同一页面。

      非常简单,不知道你的网站有多忙,但我的小应用程序运行得非常快。

      该死……你今天很顺利!+1:-)非常好,简洁的解决方案,直接回答了这个问题。+1!请参阅我上面的答案……你应该能够调用你的GridView.DataBind()在您通过编程设置下拉列表值后,我实际上在将会话值设置到数据源后立即尝试了数据绑定,但没有成功。这是我想做的第一件事。老实说,我不确定是否意识到将下拉列表放在autopostback=“true”上“不过在那之前。正如我所说的,我很感激所有的答案,并且一如既往,我投票支持你们。当我说我将来会在类似的问题上检查这个线程时,我是认真的。我以前每次都这样做过。我只是来这里问什么时候会有DL,或者我已经被困太久了,自己也无法找到答案