0

呼び出された別のページから行を取得する .aspx ページに Gridview があります。この別のページは、SQL クエリの結果として 1 つのテーブル行 (tr) を返します。これは毎秒発生します。

テーブル/グリッドビューの上部に新しい行が追加されます。

行数を 10 などの数値に制限する必要があります。これまでのコード (主に Stackoverflow の例で見つかります) は、テーブルが 10 行になると 9 番目と 10 番目の行がちらつくことを除いて、かなりうまく機能します。つまり、9 行、次に 10 行、次に 9 行というように表示されます。

理想的には、行を 10 まで追加し、新しい行が追加されると、10 番目または最後の行がちらつきなくドロップオフします。いわばより「流動的」です。スクロールしているかのように。

私が見つけたすべての例は、ボタンのクリックの結果として行を削除します。テーブル/グリッドビューを 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>
4

0 に答える 0