2013-01-12 42 views
1

替代我在更新面板GridView和我做交兩秒後背部這樣使用的UpdatePanel

<script language="javascript" type="text/javascript"> 
     window.setInterval(function() { 
    __doPostBack('<%= UpdatePanel1.ClientID %>', ''); 
     }, 2000); 
</script> 

和在服務器端我使用這個代碼在每次回發加載網格更新面板

if (IsPostBack) 
     { 
      GridView2.DataBind(); 
      SqlDataSource1.DataBind(); 
     } 

它相應地在兩秒鐘後加載Gridview。但問題是它沒有工作有點慢的互聯網連接或也使Web服務器上的負載我只想問是否有客戶端或與JavaScript,所以它應該做的所有客戶端級別不在服務器列弗el.Plz給出了一個更好的主意

回答

1

說不過去,這是關於UpdatePanel最糟糕的可能使用。您正在渲染整個頁面(幕後),每隔2秒更新一次該面板。

有幾個備選方案:

  1. Page Methods
  2. 支持HTTP的WCF終結其用於響應AJAX請求的內容。
  3. MVC控制器集成到您的Web窗體應用程序中,它也響應AJAX請求。

所有這些方法都不需要渲染頁面,只需要實際需要的內容。因此,他們立即更有效率。

選項#2和#3將需要一些手動JavaScript來進行AJAX調用。 jQuery對此很好地工作。

但是,您仍然在處理您必須每隔幾秒查詢一次服務器的事實。爲了避免這種情況,您可能需要閱讀有關long polling以實現推送通知。

參見:ASP.Net SignalR

+0

我使用formaly的SqlDataSource與gridivew沒有別的 – user1915635

+0

表演,每幾秒鐘數據綁定可能是什麼拖慢應用程序綁定。您需要找到一種方法來廉價確定數據已更改,然後才能獲取數據並將更改後的數據發送到客戶端。 –

+0

我不知道下一步要做什麼,你會爲此展示一些例子或代碼 – user1915635