2009-06-05 46 views
0

我有一個gridview(DXperience gridview)我想顯示,如果用戶已經點擊了該行中的鏈接。每行上的鏈接將用戶發送到顯示有關該項目的更多細節的頁面。爲了象徵這個,我想到了例如使訪問行的背景具有不同的顏色。Gridview和查看項目

我的問題是什麼是最簡單和最有效的方法來做到這一點?

我的想法: 由於沒有登錄系統我已經想保存項目的ID在用英文逗號分隔一個cookie,並渲染行的時候我會看在餅乾,看看是否能產品已經看過。

我有一個關於這將使網格視圖有多慢。我通常會顯示幾千行,如果用戶點擊了大約40個項目,則需要一段時間才能運行每行中的40個項目,以檢查它是否已被查看。這是一個有效的關注,如果是的話,我怎麼能優化它?

回答

0

有幾種方法可以做到這一點。使用cookie是一種有效的方法,儘管它可能不允許乾淨地使用:visited。

此人更改了綁定地址,因此它與唯一ID匹配。 link他們在IE7中着色問題;我懷疑這是因爲他們不得不使用錨點(#)。

更新

根據您的情況,您可以嘗試通過行ID的列表,以文字:

var visitedSites = <asp:Literal />; 

傳遞一個JS數組可以遍歷它,並設置這種方式的行顏色。這不是特別高的開銷,至少直到你通過訪問的幾百個鏈接。

您也可以在行綁定期間在服務器端執行此操作。根據服務器與客戶端的負載情況,這可能是更好的選擇。

function gridLinks_OnRowDataBound (...) { 
    if (visited.Contains(e.Row.DataItem["field"])) 
    //Set color 
} 

(我是從內存的工作和在工作中不使用C#,但你的總體思路。)

+0

我行包含多列,我想提出的背景完整的行,而不僅僅是鏈接到該項目的一列,如果訪問過,則是一個distint顏色。 – Dofs 2009-06-05 21:16:52