2010-03-17 35 views
1

問題: -如何使用asp.net c#保留過濾器的值及其結果?

頁面是一個典型的搜索頁面,其上沒有幾個過濾器。當基於過濾器搜索記錄時,它會在Gridview中顯示結果。從網格視圖記錄中,用戶可以單擊任何記錄來查看將重點放在新頁面上的詳細信息。 目前爲止工作狀況良好。 現在當用戶從細節頁面回到搜索頁面。我失去了選定的過濾器值,並沒有在網格視圖中的結果。 當用戶返回搜索頁面時,如何顯示選定的過濾器及其在gridview中的結果?任何例子等?

僅供參考,我正在使用會話將參數傳遞給ObjectDatasource。

+0

用戶如何從細節頁面回到搜索頁面?使用一些鏈接,後退瀏覽器按鈕? – 2010-03-17 15:04:45

+0

兩者。有一個鏈接,他們也使用後面的瀏覽器按鈕 – Jango 2010-03-17 15:07:18

回答

1

將搜索參數存儲在cookie或會話變量中。當用戶返回到搜索屏幕時,使用這些參數。

1

如果您在返回到搜索頁面時丟失了這些值,我假設您讓用戶通過鏈接,菜單等導航到搜索頁面?在這種情況下,當URL在瀏覽器中加載時,搜索頁首次加載(預期行爲)。

您有幾種選擇堅持的信息:

1.會話:當初始搜索表單填寫和頁面回,堅持/存儲在會話中的表單值。然後修改頁面,以便在初始加載時查找這些會話值並綁定網格。這將允許這些值持續存在。

寬鬆的例子:

protected void btnSearchButton_Click(object sender, EventArgs e) 
{ 
    //store the values of the form in session 
} 

protected void Page_Load(object sender, EventArgs e) 
{ 
    if(!Page.IsPostBack) 
    { 
     //check if the values are in session. 
     //If so, remove them and use them to bind the grid. 
    } 
} 

上述唯一的問題是,你會在你的網格失去客戶的狀態,因此,如果網格具有分頁等,用戶是第4頁最初,當上面的綁定它會回到第1頁。當用戶單擊網格中的鏈接時,您可以通過在會話中存儲狀態信息來解決此問題(假設網格導致回發,而不是直接的客戶端導航詳細信息頁面)。您可以存儲頁面#,排序列等,並在用戶返回時應用這些。

2.歷史/ JavaScript的:如果搜索的導航結構 - >詳細信息頁面是這樣的,你有一個「返回到搜索」鏈接的詳細信息頁面上,你有信心,只是時間的細節頁面加載是通過搜索 - >細節,然後你可以依靠javascript退一步在歷史中。我相信瀏覽器會保留上一頁(搜索頁面)的狀態,並允許用戶繼續使用它。

鬆散實施例(細節頁面標記):

<a href="#" onclick="history.go(-1);">Return to Search Page</a> 

<a href="javascript:history.go(-1);">Return to Search Page</a> 

上面是未經測試但在理論上可能工作。它將允許用戶單擊該鏈接,或者使用瀏覽器中的後退按鈕來獲得相同的效果。如果您有一個非常可控的工作流程,您可以保證該人員從搜索頁面到達詳細信息頁面,它只會在理論上起作用。

只是一些想法...

相關問題