我有一个使用Table tableRepriceResponseFiles中的Datatable插件显示数据的网页。在这里,我基本上在Javascript中做了以下两件事。
1.如果NoOfDays> 7,区分红色文本
2.Datatable Pagination
以下代码显示以下脚本错误消息。
停止运行此脚本? “此页面上的脚本导致您的网络浏览器运行缓慢。如果它继续运行,您的计算机可能会无响应。”
当我评论以下两个中的任何一个时,它不会显示该脚本错误消息。但我想将文本颜色更改为红色并应用分页。
我想知道如何摆脱这条消息?任何投入都受到高度赞赏。
<script type="text/javascript">
$(document).ready(function () {
//If the NoOfDays > 7, differentiate the text in Red color
$('#RepriceResponseFiles td.clsDays').each(function () {
if (parseInt($(this).text()) > 7) {
$(this).css("color", "red");
}
});
//Datatable Pagination
$('#RepriceResponseFiles').dataTable(
{
"sPaginationType": "full_numbers",
"aLengthMenu": [[10, 25, 50, 100, -1], [10, 25, 50, 100, "All"]],
"iDisplayLength": 100
});
});
</script>
答案 0 :(得分:1)
做客户端的事情可能很好,但是根据表的大小,JQuery和应用样式的相关插件,表格分页和排序可能需要相当多的时间。这里没有大号桌子的“硬编号”。你可以尝试一些事情:
您应用的样式应该很容易做服务器端。在视图模型中添加一个名为style的属性,并在循环浏览视图模型时使用该属性设置行颜色。
分页内容将更难实现服务器端(创建一个需要(int PageNumber, int Count)
的操作方法。虽然有很多SO帖子可以做到这一点,你应该看到一个不错的性能提升如果脚本超时,则在页面加载时间。Example Post 1,Example Post 2(如果您使用的是MVC3,看起来有WebGrid that can take care of this for you,但我还没有使用它而你将需要做一些腿部工作,看看它是否会为你做正确的事情)
也许您使用的JQuery插件根本不是一个好的插件?我不知道你在用什么,但是你可以和其他人一起玩,看看你是否有更好的表现。
第2点的基本思路如下:
public ActionResult GetPagedData(int pageNumber, int ItemCount){
return PartialViewResult("MyGrid",
this.GetMyItems().skip((PageNumber -1) * ItemCount).Take(ItemCount));
}
总的来说,JQuery的东西非常好,但是对于大型数据集,您可以在分页和排序服务器端获得更好的性能。这就是我认为你的减速来自的地方。这些JQuery插件的工作方式,服务器发送整个数据集,JQuery根据您设置的选项显示/隐藏行。通过执行此分页服务器端,您只需将所需数据发送到客户端,以获取他们正在查看的数据页面。这样可以减少从服务器发送的数据,并消除您看到的警告。您仍然可以使用AJAX请求获取下一页/上一页的数据,以保持AJAX-y对插件的感觉。