0

我有一个gridview(DXperience gridview),如果用户已经点击了该行中的链接,我想在其中显示。每行上的链接将用户带到一个页面,其中显示了有关该项目的更多详细信息。为了象征这一点,我想到了例如将访问行的背景设置为不同的颜色。

我的问题是最简单和最有效的方法是什么?

我的想法: 由于没有登录系统,我曾考虑将项目的 ID 保存在以逗号分隔的 cookie 中,并且在呈现行时,我将查看 cookie 以查看该项目是否已被查看。

我担心这会使gridview变得多慢。我通常显示几千行,如果用户单击了大约 40 个项目,则需要一段时间才能在每行上运行 40 个项目,以检查它是否已被查看。这是一个有效的问题,如果是,我该如何优化它?

4

1 回答 1

0

有几种方法可以做到这一点。使用 cookie 是一种有效的方式,尽管它可能不允许干净地使用 :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 回答