我在 .aspx 页面中有一个 Gridview,它从另一个被调用的页面获取其行。作为 SQL 查询的结果,此其他页面返回单个表行 (tr)。这种情况每秒都会发生。
新行将添加到表格/网格视图的顶部。
我需要将行数限制为一个数字,比如 10。到目前为止,我的代码(主要通过 Stackoverflow 的示例找到)运行良好,除了当表格达到 10 行时,它会闪烁第 9 行和第 10 行。即它会在加载时显示 9 行,然后是 10 行,然后是 9 行,依此类推。
理想情况下,它会添加最多 10 行,然后随着新行的添加,第 10 行或最后一行会在没有任何闪烁的情况下下降。可以这么说,它会更“流畅”。就像你在滚动一样。
我发现的所有示例都由于单击按钮而删除了行。我需要 table/gridview 增长到 10,然后随着新行的添加,最后一行下降。
我希望这是有道理的。
关于如何改进这一点的任何建议?谢谢你。
<script type="text/javascript" >
var jq = jQuery.noConflict();
f1();
function f1() { // gridView updated every 1000ms
jq(document).ready(function () {
var lastid = jq.cookie("maxid"); // set by pageInit
if (lastid != "0")
jq.get("page2.aspx", function (dataReturned) {
if (dataReturned != "") // rows in database - add to the gridView
{
// add new row
jq('#<%=GridView1.ClientID %> tr:first').after(dataReturned);
// hide the new row, then fade it back in ---- tr:eq(0) is the header row.
jq('#<%=GridView1.ClientID %> tr:eq(1)').hide().fadeIn(1000, function () {
// nop
}).css('display', 'table-row');
}
window.setTimeout("f1()", 1000);
});
else
jq.get("page2.aspx", function (dataReturned) {
if (dataReturned != "") //new rows in database
{
jq('#<%=GridView1.ClientID %>').html(dataReturned);
}
window.setTimeout("f1()", 1000);
});
});
LimitRows();
}
function LimitRows(){
while (jq('#<%=GridView1.ClientID %> tr').length > '10')
{
jq('#<%=GridView1.ClientID%> tr:last').remove();
} }
</script>