2009-05-27 110 views
5

我需要一種強制回傳或頁面代碼隱藏的方式。嘗試使用一些JavaScript,但沒有得到它的工作。瀏覽網絡我看到第一個問題是「爲什麼」?Asp.Net(vb)強制回傳代碼隱藏

情況是,我有一個autopostback下拉列表,並且gridview數據源的selectparameter派生自該下拉列表的選定值。因此,頁面正常工作正常,並且每當選擇的項目被更改時內容都會更新。但是一些鏈接和按鈕會將客戶從頁面中移出,以便稍後再回來。

這個想法是將最後一個選擇存儲在會話中,並檢查第一個page.load事件,如果會話選項不是默認值。現在我可以基於此更改下拉列表的selectedindex,但顯然數據源的觸發速度比page.load快,所以除非我可以強制重新加載,否則這將無濟於事。

任何想法?當然,整頁的回發/重載不是唯一的選擇,只是迫使gridview/datasource刷新就足夠了。我只是不知道如何做,而不是重新加載整個頁面。

謝謝。

回答

9

你可以在頁面上放一個ajax定時器,當它們返回時啓用它,一旦頁面呈現就引起OnTick autopostback,然後禁用它,但說實話...這是一個可怕的工作微不足道的問題。

爲什麼不能在編程式更改下拉列表值後重新綁定GridView。例如時間線會是這樣的。

  • 人返回頁面(不回發)
  • 用默認值
  • 頁面加載
    • 檢查您的會話變量
    • 如果找到一個值
    • 設置GridView控件綁定你的DropDownList選擇值
    • 再次爲GridView/DataSource調用.DataBind()強迫它重新綁定。
+0

媽......你一滾今天真!+1 :-) – Cerebrus 2009-05-27 10:29:10

+0

哈歡呼花花公子;!)直接回答問題 – 2009-05-27 10:33:09

2

爲什麼你不能使用不同的頁面事件?你嘗試過PreRenderComplete嗎?記住事件的順序在回傳中很重要。 PreRenderComplete是最後的事件在頁面呈現之前被調用。 Page_Load實際上位於中間的某處。

我一直在做這樣的事情。

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

該代碼可能不正確,但它只是給你一個事件的想法。

1

爲什麼不處理GridView的DataBinding事件並檢查該處理程序中的Session中的值?如果它不等於dropdownlist參數,則可以更改它並讓數據綁定順利進行。對於更改數據源控件的SelectCommand的更一般示例,請參見my answer here。以同樣的方式你應該能夠改變ControlParameter的值。This answer也是如此,但對於(嵌套)Repeater。

如果這不起作用,那麼約恩的回答會是最好的方式(重新綁定的GridView)。

0

感謝大家的幫助。我正要跟隨Cerebrus的建議,但一位同事提出了另一個想法。註釋行被替換爲未註釋的行,如下所示。

 
<SelectParameters> 
    <%--<asp:Parameter Name="timevalue" Type="String" DefaultValue="now" />--%> 
    <asp:ControlParameter ControlID="timevalueDropDownList" PropertyName="SelectedValue" Name="timevalue" DefaultValue="now" /> 
</SelectParameters> 

除此之外,一切都在我的第一篇適用。在頁面加載中,我檢查了會話並像以前一樣將更改應用於timevalueDropDownList。會議總是更新在SelectedIndexChanged事件等

但一如既往,以響應好點子出現,我一定會提及這些類似的問題在未來。我有很多這些,但只是找到了其他方式,現在我可能不需要。 ;)

0

我有一個類似的問題... Kezzer的修復爲我工作。

只要把:

Chart1.databind() 

在PreRenderComplete事件代碼隱藏。

由於PreRender在圖表呈現之前作爲最後一件事情運行,如果您在此處「綁定」圖表,它會確保在下拉菜單中直觀地「顯示」的內容實際上將用作值渲染你的圖表。

我們的問題是,支持自動回傳級聯下拉菜單。我們有國家,州,城市下拉菜單。如果用戶選擇「美國」,「俄亥俄州」,「克利夫蘭」,一切正常,但如果他們恢復並將國家更改爲「法國」,則會導致圖表上的錯誤,即使下拉菜單具有自動針對此更改進行調整,並將州和市重置爲可用的第一個值。

添加自動回在PreRenderComplete被迫圖表「獲得:它的值後的下拉列表中已經自動糾正...真棒

0

另一種方式,如果你還在尋找一個回做! response.redirect("~/ImOnThisPageAlready");到同一頁面。
很簡單,不知道您的網站多麼繁忙,但它的工作原理非常快,我的小應用程序。