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

Allen 版主
高級顧問
81476 345
27720 17468
發送站內信

捐贈 VP 給 Allen
在http://studyhost.blogspot.com/2007/11/aspnet-20call-backaspnet-ajax.html
這裡介紹了5種寫Ajax的方法, 我目前只學了一種 - 簡單的updatepanel, 所以想請教一下有經驗的大大,在實務上如果我要做到以下二個功能,是否仍然只用updatepanel才是比較恰當的做法

1. 請參考
http://www.allenkuo.com/userfiles/share/form1.jpg
http://www.allenkuo.com/userfiles/share/form2.jpg
我若在網頁裡放radiobutton list, 並希望根據使用者點選的radio button item,去變更它下方的表單(我要的是選了item後,下方的表單會全然不同,而不是只有部份控制項要置換而已), 就我目前的想法,這功能用updatepanel似乎很容易就做到了, 只需要在網頁裡放二個user control,在radio button 被選取時,決定哪一個user control要show/hide就可以了,不知道要做到這個功能,是否用updatepanel是比較恰當的做法?

2.請參考
http://www.allenkuo.com/userfiles/share/form3.jpg
http://www.allenkuo.com/userfiles/share/form4.jpg
若網頁裡最上方有"view","edit","design"三個radio button, 我希望像畫面裡的效果,選了edit,design時,網頁裡各個user control的外觀也要變化

選了design表示要調整各個uc的設定值,例如要顯示在左/中/右哪一個位置
選了edit表示要維護各個uc的記錄,也就是後台維護功能啦

我目前的想法是,要做到這個功能,由於畫面變動很大,乾脆就不要用Ajax了, 直接postback,再render一次就好了, 但想請教的是,如果真的要用Ajax,這類狀況是否也是用updatepanel比較恰當呢?

搜尋相關Tags的文章: [ ] ,
本篇文章發表於2008-07-29 10:58
== 簽名檔 ==
=========================================
個人網站:http://www.webapp.com.tw/
Facebook粉絲頁-格子樑: https://www.facebook.com/wa.allenkuo/

ASP.NET 一對一教學資訊: http://www.webapp.com.tw/GenericArticle/view.aspx?id=1185
1樓
不錯的參考

topcat
捐贈 VP 給 topcat 檢舉此回應
那董大的那篇文中的五個方法
其實從效能、開發簡易度這兩個角度來看
是把這兩個角度放在天秤的兩側
當著重效能(傳輸資料量少、傳輸的速度快)
那麼相對的撰寫的程式碼可能比較複雜
如果不介意傳輸量的大小,那麼使用UpdatePanel可以快速的達到Ajax的效果

從目的出發
使用ajax的目的為何呢??

如果您的需求只是要讓畫面不回閃動
那麼用UpdatePanel就足夠了...
因為UpdatePanel主要是攔截PostBack的動作,把PostBack要送回的資料透過Ajax送回
而IIS運作後,再次送出的資料也與PostBack的動作後的資料相同
不同的只是他只會維護UpdatePanel包起來的部分(傳輸的量沒有改變唷)

而如果需求是,希望能夠減少傳回後端的資料量
以及減少後端傳回的資料量
那就回到原始但是複雜的方式
使用Callback甚至使用更原始的方式去進行
^_^
本篇文章回覆於2008-07-29 11:33
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
作者回應

Allen
捐贈 VP 給 Allen 檢舉此回應
to topcat,

如果不使用update panel,而使用callback等方法,就我的想法,我必需去組合出我所需表單的html tag(<input type=text...)稍後submit也只能用Request取值,似乎又回到asp時代去了

就我目前的需要,是不會在乎傳遞的資料量,純粹只是為了不要閃一下而已,但如果為了不要閃一下而需要改回以前html的方法,我就會再三考慮閃一下的事情了
本篇文章回覆於2008-07-29 11:52
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
回應

topcat
捐贈 VP 給 topcat 檢舉此回應
這就是依需求而論

如果只是為了不要畫面那麼閃^_^a
並且不須計較流量(反正跟原本的PostBack流量差不多)
那麼就不需要太計較,UpdatePanel直接給他用下去

但是如果有特別的狀況需要計較流量時
(例如:使用這是透過3G或者GPRS來連線)
那時的流量就等於金錢
此時透過Ajax的技術就可以幫忙省錢
因為只需要傳遞參數回去,啟動後端(網頁或者WebService都可),然後傳回Client的只有資料
至於收到資料要怎麼應用...那又是Client端的Script要忙的事情了
(ps.不需要在Sever端組html啦)
^_^a
本篇文章回覆於2008-07-29 12:16
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
不錯的參考

Bibby
捐贈 VP 給 Bibby 檢舉此回應
為了不需要效能..然後要花一堆時間去組html tag這樣真的有點不划算..
當初updatepanel出來就是要讓你..閉著眼睛就可以寫出像winform的感覺..免閃閃閃閃到自己閃到別人..
當然方便是需要付出代價的..就是傳輸量..和效能問題..

所以說..有一好沒有兩好..只要評估可以接受..黑貓白貓..可以抓到老鼠的就是好貓..

舉個簡單的例子好了
1.聊天室..我可能就傾向用callback..原因..你不希望只有小貓兩三隻在線上ㄅ
2.股票看盤..我傾向用callback..原因..跟上面一樣..人一多會死..

至於updatepanel很多地方都可以使用到..尤其在多控制項的變動中..不用常常需要去作動作的地方..像新增移除插入等等等..
這些我都可以用updatepanel..這樣會讓質感好一點(XD..fu不同..)..而且使用updatepanel跑的
流程跟postback的流程是一樣有pageinit.. pageload..等等等..
不像callback只對單獨的method(你也可以寫成跑全部..一﹏一||..)..相對來說..你也可以跟處理postback一樣處理..


ps:不過話說有人聊天室用updatepanel..哇勒..還真有勇氣阿..但是老闆眼裡..看不出來..XD..
本篇文章回覆於2008-07-29 12:25
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
回應

Jeff
捐贈 VP 給 Jeff 檢舉此回應
我是 UpdatePanel 及 CallBack 並用,視使用時機決定使用何種方式。例如表單瀏覽時上下筆,因為整個頁面都需要更新,就使用 UpdatePanel 來處理,作用只是讓頁面不會閃爍;例如訂單編輯表身明細(GridView)時,就使用 CallBack 來處理,例選擇產品編號,帶回其產品名稱、計價單位、售價策略...等欄位值。

不過所有 CallBack 動作的都是底層的控制項來處理,一般開發人員完全感覺不到在使用 CallBack,而且透過 CallBack 也會模擬產生控制項的事件(如 Button 的 Click 事件、TextBox 的 TextChange 事件),讓開發人員的程式寫法一致,不會因為 PostBack 或 CallBack 需要另行判斷。

另外 UpdatePanel 及 CallBack 的效能比較可以參考下面的文章

CallBack 與 UpdatePanel 的效能比較
http://www.dotblogs.com.tw/jeff377/archive/2008/03/17/1753.aspx
本篇文章回覆於2008-07-29 12:32
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
6樓
作者回應

Allen
捐贈 VP 給 Allen 檢舉此回應
to #3,
>>至於收到資料要怎麼應用...那又是Client端的Script要忙的事情了(ps.不需要在Sever端組html啦)
由於我需要的是根據radio button不同而產生長相完全不同的UI,所以我才會覺得若不用updatepanel,那麼勢必要傳回html給client去顯示,若只是傳回xml等必要的資訊,我想client開發起來會太久了吧(用client去做出表單,含排版及定義各control的width,style等...)

to #4,#5
正由於我不是要得要"理論上..的答案",所以我才貼出我要的狀況,您也看得出來我不是要做聊天室,也由於是在後台,我想這一點小小的流量我是不會在意的

綜觀大家的回應,看來我這狀況,用update panel應該是恰當的囉?!
本篇文章回覆於2008-07-29 13:21
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
7樓
最有價值解答

Jeff
捐贈 VP 給 Jeff 檢舉此回應
依你貼的畫面,個人覺得直接使用 UpdatePanel 就可以了。
本篇文章回覆於2008-07-29 13:24
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
8樓
作者回應

Allen
捐贈 VP 給 Allen 檢舉此回應
謝囉!
本篇文章回覆於2008-07-29 14:17
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

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