2009-06-05 14 views
0

ユーザーが既にその行のリンクをクリックした場合に表示したいグリッドビュー(DXperience gridview)があります。各行のリンクは、ユーザーをページに送ります。このページでは、アイテムに関する詳細が表示されます。これを象徴するために、私は考えました。訪問された行の背景が異なる色になります。Gridviewと表示されたアイテム

私の質問は、これを行う最も簡単で効率的な方法は何ですか?

私の考え: 私はカンマで区切られたクッキーにアイテムのIDを保存して、行をレンダリングするときを考えている何のログインシステムが存在しないので、私はその項目があるかどうかを確認するためにクッキーになりますすでに見た。

私はグリッドビューをどのくらい遅くするかに懸念があります。私は通常、数千の行を表示しています。ユーザーが多分40個のアイテムをクリックした場合、各行の40個のアイテムを実行して、それが既に表示されているかどうかを確認するまでにしばらく時間がかかります。これは有効な懸念事項ですか、もしそうなら、どうすれば最適化できますか?

答えて

0

あなたにはいくつかの方法があります。クッキーの使用は有効な方法の1つですが、visitedをきれいに使用することはできません。

この人はバインディング時にアドレスを変更したので、一意のIDと一致します。 link IE7で色付けに問題がありました。私はこれがアンカー(#)を使用しなければならないためだと思う。 JSの配列の

var visitedSites = <asp:Literal />; 

パスと次のことができますループ、それを通って、設定:

更新

あなたの状況に応じてリテラルに行IDのリストを渡してみてくださいそのような行の色。少なくとも数百のリンクを訪問するまで、特に高いオーバーヘッドはありません。

この操作は、行バインド中にサーバー側で行うこともできます。サーバとクライアントの負荷に応じて、これがより良い選択肢かもしれません。

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

(私はメモリから働いていると仕事でのC#を使用していますが、一般的なアイデアを得ることはありません。)

+0

私の行は複数の列が含まれている、と私はの背景をしたいと思い項目にリンクしている1つの列だけではなく、完全な行を表示します。 – Dofs

+0

行をループさせ、行の色をリンクの色で設定します。しかし、それはセキュリティホール(http://www.azarask.in/blog/post/socialhistoryjs/) – Chris

+0

のため、私は読んで色を読んでも必ずうまくいくとは限りません。訪問された行建築的に言えば、よりシンプルな選択肢です。 – Chris

関連する問題