0

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

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

私の考え: ログイン システムがないため、項目の ID をコンマで区切って Cookie に保存することを考えました。行をレンダリングするときに、Cookie を調べて、その項目が既に表示されているかどうかを確認します。

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

4

1 に答える 1

0

いくつかの方法があります。Cookie を使用することは有効な方法の 1 つですが、おそらく :visited をきれいに使用することはできません。

この人はバインド時にアドレスを変更したため、一意の ID に一致します。 リンクIE7 でのカラーリングに問題がありました。これは、アンカー (#) を使用しなければならなかったためだと思われます。

更新

状況に応じて、行 ID のリストをリテラルに渡すことができます。

var visitedSites = <asp:Literal />;

JS 配列を渡すと、それをループして行の色をそのように設定できます。少なくとも数百のリンクを訪問するまでは、オーバーヘッドが特に高くなるわけではありません。

これは、行のバインド中にサーバー側で行うこともできます。サーバーとクライアントの負荷によっては、これがより適切なオプションになる場合があります。

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

(私はメモリから作業しており、仕事で C# を使用していませんが、一般的なアイデアは理解できます。)

于 2009-06-05T20:53:35.857 に答える