2015-02-23 63 views
0

我有一個aspx頁面,允許用戶編輯數據庫記錄上的數據。記錄保存後,重定向會將您帶回到同一頁面。我想要的是一個帶有「記錄保存」的彈出窗口。裏面還有一個「OK」按鈕。我意識到這是非常基本的,但彈出之前發生保存,如果我只使用JavaScript(無論是前期或從代碼隱藏),這意味着你得到一個保存消息之前,任何可能的錯誤,並且根本沒有彈出如果我使用我發現的大部分代碼隱藏解決方案。舉例來說,在我的網頁:在重定向到同一頁面(或刷新)之前的數據保存之後顯示OK對話框

<ajaxToolkit:TabPanel runat="server" ID="JobPanel" HeaderText="Job Info"> 
    <ContentTemplate> 
     <table> 
      <tr> 
       <td class="left_column" colspan="2"> 
        <asp:Button ID="btnSave" OnClick="SaveAll" 
         OnClientClick="setConfirmUnload(false);" 
         runat="server" Text="Save" /> 
       </td> 
      </tr> 
     </table> 
    </ContentTemplate> 
</ajaxToolkit:TabPanel> 

在我的代碼隱藏,我曾嘗試:

ScriptManager.RegisterStartupScript(Me, Me.GetType(), "popup", 
    "alert('Record saved successfully.'); 
    window.location='EditJob.aspx? 
    JOBID='" & txtJobID.Text, True) 

然後

Dim msg As String = "Job saved." 
Dim script As String = "alert('" & msg & "');" 
script += "window.location.href = 'EditJob.aspx?JOBID='" & txtJobID.Text 
System.Web.UI.ScriptManager.RegisterClientScriptBlock(Me, Me.[GetType](), "saved", script, True) 

然後

Response.Redirect("EditJob.aspx?JOBID=" & txtJobID.Text & "&MSSG=Job%20Saved") 

與這pre_render:

If strMSSG <> "" Then 
    ScriptManager.RegisterClientScriptBlock(Me, Me.GetType(), 
    "generateSuccess", "generate('Job Saved.', 'success', 'center');", True) 
End If 

,這在ASPX:

function generate(text, type, layout) { 
    var n = noty({ 
     text: text, 
     type: type, 
     dismissQueue: true, 
     layout: layout, 
     theme: 'defaultTheme', 
     buttons: [ 
      { 
       addClass: 'btn btn-primary', text: 'Ok', onClick: function ($noty) { 
        $noty.close(); 
       } 
      } 
     ] 
    }); 
    console.log('html: ' + n.options.id); 
} 
//calls generator with success 
function generateSuccess() { 
    generate('Success', 'success', 'center'); 
} 

我喜歡Noty,這是我在這裏的另一個問題的答案中發現的外觀和感覺。但是,如果我點擊F5或刷新按鈕,由於URL中的查詢字符串,noty會再次顯示。

我有一個jquery彈出窗口的工作,但我似乎無法獲得多個在一個頁面上。我想只是另一個jQuery的彈出窗口,但這不起作用。

任何幫助,非常感謝。儘管如此,我還是不擅長javascript或jquery。

+0

(我可能是推薦noty的傢伙)。爲什麼刷新整個頁面/執行重定向?用'RegisterStartupScript'簡單地創建你的諾伊和手動更新任何需要更新數據的控件的數據源應該可以做到這一點,不需要重定向。 – mason 2015-02-23 15:46:46

+0

...我從來沒有想到...我一直都很想讓彈出窗口和頁面刷新的順序正確,我從來沒有想過其他任何東西。我會試一試,讓你知道。 – pixelmeow 2015-02-23 15:53:47

+0

到目前爲止這麼好。我現在要做的就是抓住F5,這樣頁面就不會再保存記錄。如果你把你的評論作爲答案,我會接受它。 – pixelmeow 2015-02-23 15:59:17

回答

1

無需重新導向回到同一頁面以顯示更新的數據。只需更新任何需要顯示新數據的控件的數據源即可。

記住

請求=>過程數據=>響應

請求時,你處理數據,返回響應。除非您有真正的理由這樣做(例如,您希望將消息傳遞到另一個頁面),否則不要在整個事件中纏繞大量重定向並在查詢字符串中傳遞消息。

相關問題