Js控制ASPX頁面刷新的土辦法

 

這樣如果在客戶端通過調用 javascript 進行頁面刷新,知道在 aspx 頁面裏激發一個事件都需要把頁面 Post 服務器。 IE 就會彈出提示框問是否重新提交,但是本意只是想刷新數據顯示。怎麼辦呢,想的方法就是模擬控件激發事件的動作,讓 .net 誤認爲是改變了控件的狀態或點擊了刷新按鈕,讓頁面 Post 達到刷新數據的作用。

設置此控件的 ID 這裏爲了改變狀態方便拖入的 checkbox 然後在此控件的代碼里加上【 style="DISPLA Y: none" 這個屬性意在隱藏此控件,       首先拖入一個服務器控件到 aspx 頁面。但不能用【 Visible=fals 這樣控件就不會加載到客戶端了控件的代碼如此形式: <asp:checkbox id="chkReload" style="DISPLA Y:none" runat="server" AutoPostBack="True"></asp:checkbox>

       添加客戶端 js 代碼: CS 頁面加入處置此控件的事件代碼:這樣只要客戶端調用 js reload 方法就可以刷新頁面了跟我點擊刷新按鈕的效果一致。沒有深入研究不知道有沒有更好的方法。

<script language="javascript">

funct reload {

document.Form1.chkReload.check = !document.Form1.chkReload.checked;

'' ;  __doPostBack 'chkReload'.

}

System.EventA rg e </script>priv void chkReload_CheckedChang object sender.

{

            Bind ;

}

如果頁面上沒有需要實現 autopostback 控件,確實不是所有 aspx 文件解析到客戶端後都會添加 __doPostBack 函數。就不會添加 __doPostBack 函數。

並且實現了自定義分頁;每一行有一個 “ 編輯 ” 按鈕用來彈出一個模態窗口讓用戶編輯該行數據,俺補充一下:如果在主頁面中有一個 DataGrid 用來顯示錶格狀數據。如果在編輯完成後,主窗口調用 window.location.reload 或者類似的刷新操作,則主窗口的 onload 事件會被調用,這時問題呈現了 DataGrid 頁碼會被回覆到第一頁,即以前的 ViewStat 不會被保存下來。這時使用樓主說的方法來代替 window.location.reload 就可以達到 DataGrid 頁碼仍然保留在原來頁數的效果了   

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章