台灣最大程式設計社群網站
線上人數
2677
 
會員總數:245249
討論主題:189109
歡迎您免費加入會員
討論區列表 >> AJAX / JSON / jQuery >> Ajax + GridView + Button
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
Ajax + GridView + Button
價值 : 100 QP  點閱數:2784 回應數:6

樓主

陽光之子
初學者
26 34
937 68
發送站內信

我目前是在Ajax 的 UpdatePanel1 裡面產生 GridView ,
在GridView 裡頭我有個按鈕的控制項。
因為程式的需要所以我必須在
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs)
End Sub
這裡面讓他開出新視窗,我之前的作法是用 Response.Write("<Script language='Javascript'></Script>")
可是有 Ajax 後就不行了,請問有什麼方法可以做到嗎?

搜尋相關Tags的文章: [ Ajax ] , [ GridView ] , [ Button ] ,
本篇文章發表於2007-08-28 18:40
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
1樓
最有價值解答

小毅
捐贈 VP 給 neweclipse 檢舉此回應

本篇文章回覆於2007-08-28 19:06
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
不錯的參考

Insus.NET
捐贈 VP 給 Insus.NET 檢舉此回應
首先在GridView的RowDataBound事件中,用e.Row.findControl找出这个button的ID,

然后: ScriptManager1.RegisterPostBackControl(buttonId);

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
Button btn = (Button)e.Row.FindControl(....);
ScriptManager1.RegisterPostBackControl(btn);
}
}
本篇文章回覆於2007-08-28 23:13
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
作者回應

陽光之子
檢舉此回應
感謝兩位 第二方法我還沒試,不過第一個方法OK!! 第二個方法∼今天早上再來試! ^^

我也找到我之前的問題了∼因為按下按鈕後會 PostBack,我為了讓他不要 PostBack 所以用了最笨的方法,
我在 Click 裡面加了 Me.Response.End() ,雖然程式不會PostBack 了但是第一個方法會跟他衝突。

如果不加 Me.Response.End() 我按下按鈕時,我之前在 GridView 裡動態新增的物件會消失耶!
還是有方法讓他不消失??
本篇文章回覆於2007-08-28 23:58
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
不錯的參考

topcat
捐贈 VP 給 topcat 檢舉此回應
>>因為按下按鈕後會 PostBack,我為了讓他不要 PostBack 所以用了最笨的方法,
>>我在 Click 裡面加了 Me.Response.End()
說明一下一些基本觀念

ASP.NET在運作過程中,還是有區分Server端與Client端的運作

基本上是POST Back的過程如下

因此您的動作並不是沒有PostBack
而是PostBack後,您指定Server不要運算下去(Me.Response.End())

正確的做法應該是在Server Control的Button上
設定屬性OnClientClick為return false;
這樣才能夠阻止按鈕的PostBack
本篇文章回覆於2007-08-29 09:33
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
回應

topcat
捐贈 VP 給 topcat 檢舉此回應
由於區塊的大小關係
我調整一下

本篇文章回覆於2007-08-29 09:35
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
6樓
回應

topcat
捐贈 VP 給 topcat 檢舉此回應
再來說明一下Ajax Extension 1.0的運作機制
他是透過Ajax所提供的工具,產生了一些Client端的Js
當您的UpdatePanel區塊所包含的東西發生PostBack的時候
Ajax Extension把他攔截下來
並透過他的機制與Server端溝通
然後把相關的改變送回後,透過Ajax的Clinet端js
把改變的部分的HTML置換掉

因此Ajax運作的時候會有個Clinet端的js來監控您的動作
此時如果要在設定Client端的動作時
可能會與他牴觸而造成無法正確運作

此時您必須改變註冊Client端Script的方法
以前的做法您是用Response.Write的方式
其實這樣的方式不太好
在沒有ajax的情況下應該用Me.ClientScript這個東西來註冊才是正確的

但是一旦使用Ajax後
由於Client端Script會交給ScriptManager管理
因此使用Ajax後,要註冊Client端的Script應要透過ScriptManager來處理

Me.ClientScript使用方式請查MSDN
而ScriptManager的使用方式大同小異,指是參數不同
請參考#1的方式

以上的觀念資訊提供參考
^_^
本篇文章回覆於2007-08-29 09:53
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.