2012-02-20 60 views
1

在我們公司,我需要爲我們的員工保留一個網頁上的未清訂單清單。ASP.NET如何刷新數據?

在後面的代碼,我篩選基於從下拉列表中ddlList1和一個TextBox txtSearch,有點像這個選擇哪些項目搜索:

string sql 
if (!String.IsNullOrEmpty(ddlList1.SelectedValue) && 
    !String.IsNullOrEmpty(txtSearch.Text)) { 
    sql = string.Format("{0}={1}", ddlList1.SelectedValue, txtSearch.Text); 
} else { 
    sql = null; 
} 
GridView1.DataSource = db.Select(sql); 
GridView1.DataBind(); 

管理層希望這個數據是最新的,從未超過10分鐘。

我不知道如何做到這一點。我的大部分代碼都是在Windows窗體上完成的。

到目前爲止,我已經找到了一種方法使用META標籤刷新頁面:

<meta http-equiv="refresh" content="600;Summary.aspx" /> 

然而,它幾乎看起來好像WC3建議不要使用refresh屬性:

注:應該小心使用「refresh」值,因爲它會將頁面控制在遠離用戶的位置。使用「刷新」將導致W3C的Web內容無障礙指南失敗。

編號:HTML meta http-equiv

那麼,什麼是刷新我的數據是推薦的方式?

如果有幫助,我們的服務器是一個較舊的SQL 2000機器。

[注意:我找到this question on SO有人建議使用AJAX UpdatePanel。我的項目目前沒有AJAX控件。我是否可以避免AJAX的複雜性(下載最新的軟件包,將其安裝到VS2010中,將其添加到我的Project的參考列表中,然後在每個使用它的頁面中引用AJAX)或者只是咬住子彈?]

+0

只需咬住項目符號並放置一個UpdatePanel,並設置一個Timer來刷新面板每10分鐘 – 2012-02-20 16:11:39

+0

我很確定我之前在這臺機器上安裝了AJAX。我如何去添加對項目的引用?這叫什麼?我無法在名爲'AJAX'的.NET引用下找到任何東西。 – jp2code 2012-02-20 16:15:35

+0

將UpdatePanel添加到您的工具箱。它位於System.Web.Extensions.dll下的C:\ Program Files \ Reference Assemblies \ Microsoft \ Framework \ v3.5 \ – 2012-02-20 16:26:50

回答

1

如果你並不真正做太多的此頁面上的其他任何東西,你還不如見好就收自動刷新。是的,這很煩人,我討厭它,我認爲它不應該存在,但我不必使用該網站,如果這真的是客戶想要的,那就是客戶得到的。

您也可以使用javascript或asp控件強制刷新,而不僅僅是通過HTTP元標記,但它帶有完全相同的問題。

如果你使用更新面板的路線,你有幾個優點。首先,也可能是最重要的是,如果頁面上的內容很多,而不是隻更新gridview,則不會重複渲染。這可能(可能)基於整個頁面的外觀大幅降低服務器負載,或者可能很小。接下來,您對用戶的更新有更微妙的(也是可定製的)視覺影響。如果他們希望網站只是閃爍並且是最新的,那麼更新面板就可以做到這一點,而不需要更改光標,所有的紡紗工等等。(如果你希望在更新面板回發時讓用戶明白這一點,你也可以添加這樣的東西)。

+0

只是好奇的OP,你最終使用了什麼解決方案? – Servy 2012-02-24 16:31:32

1

您可以使用ajax從服務器獲取數據並在客戶端通過javascript填充html容器。我不是說微軟的更新面板,而是xmlhttp。

+0

也許,但我不知道如何執行剛描述的任何事情。就像我說的,我通常在Windows窗體上工作,而不是在網頁上工作。 – jp2code 2012-02-20 16:10:50

+0

這可能比僅使用更新面板的工作要多得多,尤其是因爲這是一個數據量很大的複雜格式/顯示要求。可以這樣做,是的,但對於這些情況來說這是不太可取的選擇。 – Servy 2012-02-20 16:14:53

0

如果你正在尋找一個簡單的解決方法,試試這個:

<script> 
    //Refreshing the page every 5 minutes 
    setInterval("location.reload()", 300000); 
</script> 
+0

這與「'(我現在在做什麼)不一樣嗎? – jp2code 2012-02-20 16:14:06

+1

不,它不是,當你使用HTML屬性(如DOM)來刷新頁面時,使用腳本將刷新委託給JavaScript事件。在幾個網站(例如新聞網站)中使用了相同的方法。 – 2012-02-20 16:31:39

+0

@GiorgioMinardi它不完全相同,但它仍然完成了幾乎完全相同的事情,它具有完全相同的坑和不良的用戶感受等。如果HTTP元被認爲是不適當的,由於它是不好的做法,這是沒有更多或較少接受解決方案。關於唯一有效的區別是,元標記將禁用JavaScript;這不會。 – Servy 2012-02-20 19:39:53