| 在AJAX支援的網站中使用想使用Response.Wrie(“”); 或 Page. RegisterStartupScript (); 彈出一些提示對話方塊,沒有效果。有如下兩種解決方案: (1) System.Web.UI.ScriptManager.RegisterStartupScript來替代Page.ClientScript.RegisterStartupScript ==>函數原型: System.Web.UI.ScriptManager.RegisterStartupScript(Contrl control, Type type,string key,string script, bool addScriptTags); ==>參數: control-----------------要要註冊此段javascript語句的控制項ID,如下面樣本的按鈕ID btnUnReport type--------------------這個參數是註冊指令碼塊控制項的類型,即updatepanel的類型。一般直接用this.GetType()即可 key---------------------為要執行的javascirpt語句起的名字,可以隨便起,類似控制項的name屬性 script------------------javascript語句 addScriptTags------為true時,前邊的script參數可以不用再寫javascript標籤;為false,則需自己為script參數添加<script language=’javascript’></script>標籤。 註:要多傳一個Control參數,如果這個control在UpdatePanel裡,則運行腳步,如果這個control不在UpdatePanel則不允許這段腳步。 ==>Eg. System.Web.UI.ScriptManager.RegisterStartupScript(btnUnReport, this.GetType(), "unReport", "alert('撤銷上報操作失敗,請勾選要上交的課題!');window.close();", true); (2)註冊DataItem方法: 樣本: <%@ Page Language="C#" AutoEventWireup="true" CodeFile="WebForm1.aspx.cs" Inherits="WebForm1" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title>無標題頁</title> </head> <body> <form id="form1" runat="server"> <asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager> <script type="text/javascript"> Sys.WebForms.PageRequestManager.getInstance().add_pageLoading( function(sender, e) ...{ var dataItem = e.get_dataItems()["<%= this.UpdatePanel1.ClientID %>"](); alert(dataItem.Name); }); </script> <div> <asp:UpdatePanel ID="UpdatePanel1" runat="server"> <ContentTemplate> <asp:Button ID="test" runat="server" Text="test" OnClick="test_Click" /> </ContentTemplate> </asp:UpdatePanel> </div> </form> </body> </html> using System; using System.Data; using System.Configuration; using System.Collections; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; using System.Web.Script.Serialization; public partial class WebForm1 : System.Web.UI.Page ...{ protected void Page_Load(object sender, EventArgs e) ...{ } protected void test_Click(object sender, EventArgs e) ...{ JavaScriptSerializer serializer = new JavaScriptSerializer(); ScriptManager.GetCurrent(this.Page).RegisterDataItem(this.UpdatePanel1, "var _f = function(){alert('Hello World!');}; _f;", true); } } (3) 使用Javascript的非模態對話方塊彈出提示 Eg. Page.RegisterStartupScript("alert", "<script language='javascript'>window.showModelessDialog(\"javascript:alert('撤銷上報操作失敗,請勾選要上交的課題!');window.close();\",\"\",\"status:no;resizable:no;help:no;dialogHeight:height:30px;dialogHeight:40px;\")</script>"); |