我有一个gridview(DXperience gridview),如果用户已经点击该行中的链接,我想显示。每行上的链接将用户发送到一个页面,其中显示有关该项目的更多详细信息。为了象征这一点,我想到了使访问行的背景以不同的颜色。
我的问题是,最简单,最有效的方法是什么?
我的想法: 由于没有登录系统,我曾考虑将项目的ID保存在以逗号分隔的cookie中,并且在渲染行时,我将查看cookie以查看该项目是否已被查看。
我担心这将使gridview变得多慢。我通常会显示几千行,如果用户点击了大约40个项目,则需要一段时间才能浏览每行40个项目,以检查是否已经查看过。这是一个有效的问题吗?如果是,我该如何优化呢?
答案 0 :(得分: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#,但是你会得到一般的想法。)