1. 程式人生 > >NET使用了UpdatePanel後如何彈出對話框!

NET使用了UpdatePanel後如何彈出對話框!

server obj gird eight 窗體 script 使用 pla 模板

在ajax中的UpdatePanel彈出對話窗,可以使用:

ScriptManager.RegisterStartupScript(UpdatePanel1, this.GetType(), "alert", "alert(‘更新成功!‘)", true);

修改後跳到另一個頁面中去時,可以使用:
ScriptManager.RegisterStartupScript(UpdatePanel1, this.GetType(), "click", "location.replace(‘UserManger.aspx‘);", true);

如果跳轉前還有提示信息的話,則可以使用:

ScriptManager.RegisterStartupScript(this.Page, this.GetType(), "click", "alert(‘更新成功!‘);location.replace(‘UserManger.aspx‘);", true); 例如:ScriptManager.RegisterStartupScript(this.UpdatePanel1,this.GetType(), "提示", "alert(‘購物車為空,請先購物!‘)", true); protected void UpdatePanelAlert(string str_Message)
{
ScriptManager.RegisterStartupScript(this.UpdatePanel1, this.GetType(), "提示", "alert(‘" + str_Message + "‘)", true);
} UpdatePanelAlert("無此代碼"); ///////////////////////////////////////////////////////////////////////////////////////////// asp.net ajax框架UpdatePanel彈出提示的幾種方法 2009-06-09 14:15
<asp:UpdatePanel runat="server" ID="p1">
*.cs:
Microsoft.Web.UI.ScriptManager.RegisterStartupScript(p1, this.GetType(), "click", "alert(‘ok‘)", true);

在ASP.NET的UpdatePanel中不能使用Response.write("")了,感覺不是很方便。
那就用UpdatePanel支持的方法吧!

this.ClientScript.RegisterClientScriptBlock(this.GetType(),"a","alert(‘ok!‘);",true);

for 1.0

ScriptManager.RegisterStartupScript(this.Page, this.GetType(), "click", "alert(‘ok‘)", true);
System.Web.UI.ScriptManager.RegisterStartupScript(Button1, this.GetType(), "click", "alert(‘ok‘)", true);



關於updatepanel中註冊執行javascript

好些天都在糊裏糊塗,最近也比較懶,居然看到了個留言,永遠不更新的博客一等獎,相當尷尬,哈哈。寫一些最近自己或別人遇到的小問題吧。
1、關於updatepanel註冊js
最近在項目裏需要用到altas,本人也是新手,老用最簡單的updatepanel,在註冊腳本時也遇到了困難,無法註冊。本來是在 updatepanel中放了一個gridview,偶想在girdview中一個模板列點擊彈出一個窗體,註冊window.open()來解決問題。本來不是在updatepanel中,所以用ClientScript.RegisterStartupScript直接註冊挺好使。
在拖入updatepanel後發現無法註冊腳本,想想RegisterStartupScript本來是在頁面加載時啟動js的,在updatepanel中部分刷新,肯定是無法註冊的。
後來發現了ScriptManager.RegisterStartupScript方法,挺好使,呵呵。
ScriptManager.RegisterClientScriptBlock(UpdatePanelName, typeof(UpdatePanel), "標識key", "腳本", true);
下面是一個demo,模板列定義如下:

<asp:TemplateField HeaderText="客戶ID">
<ItemTemplate>
<asp:LinkButton ID="linkbtnCID" runat="server" Text=‘<%# Eval("CID") %>‘ CommandName="linkbtnCID" > </asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>

在GridView對應的RowCommand事件中如下操作:

protected void gvClientInfo_RowCommand(object sender, GridViewCommandEventArgs e)
{
//如果是linkButton被點擊
if(e.CommandName.Equals("linkbtnCID"))
{
LinkButton lbtn = (LinkButton)e.CommandSource;
GridViewRow dgRow = (GridViewRow)lbtn.Parent.Parent;
string tmpText = lbtn.Text.ToString();
tmpText ="window.open(‘customerDetailsInfo.aspx?CID=" + tmpText + "‘ ,‘newwindow‘,‘height=550,
width=700, menubar=no ‘)";
ScriptManager.RegisterStartupScript(this.UpdatePanel2, this.GetType(), "click", tmpText, true);

}
}

2、關於RegisterStartupScript,RegisterClientScriptBlock
RegisterStartupScript 將 js嵌入到頁面的底部,</form> 的前面
RegisterClientScriptBlock 將 js嵌入到頁面中開啟元素 <form> 後面

3、關於“該行已經屬於另一個表”錯誤
這個問是出現在不同dataTable之間的行復制出現的問題。
看這個代碼:

DataTable tmpdt = sodo.getDataTable("text", strSql, sp);
dt.Rows.Add(tmpdt.Rows[0]);

這個明顯的錯誤就是tmpdt的行是一個對象引用,相當於一個指針,錯誤是難免的,可有以下解決辦法:

DataTable tmpdt = sodo.getDataTable("text", strSql, sp);
1、 dt.Rows.Add(tmpdt.Rows[0].ItemArray);
2、 dt.ImportRow(tmpdt.Rows[0]);

NET使用了UpdatePanel後如何彈出對話框!