2

私はTextBoxとButtonを持っていて、非常に長いGridViewを持っているので(ページングしたくない)、垂直スクロールバーを有効にしてDivに入れました。

テキストボックスに検索文字列を入力したいのですが、ボタンをクリックすると、文字列が一致する行が見つかり、その背景色が設定され、その行までスクロールする必要があります。

これはJavascriptで行う必要があります。私はすべてのことを行うことができますが、見つかった行までスクロールすることはできません。

javascript関数は以下のようなものです

function NextClinic() {

            var gvClinics = document.getElementById("<%= gvClinics.ClientID %>");
            var FindText = document.getElementById("<%= txtClinicKeywords.ClientID %>").value;
            var oRows = gvClinics.rows;
            var rawDataRows = new Array();
            var cell;
            var hdnCounterNext = document.getElementById("<%= hdnCounterNext.ClientID %>").value;
            for (var i = hdnCounterNext; i < oRows.length; i++) {
                var cell = gvClinics.rows[i].cells[3];
                if (cell.innerHTML.indexOf(FindText) !== -1) {
                    alert("found at " + i);
                    document.getElementById("<%= hdnCounterNext.ClientID %>").value = i+1
                    return false;
                }
            }
        }

最良の提案は高く評価されています。

ありがとうスリ。

4

2 に答える 2

1

クリックの位置を取得してから、ScrollToオプションを使用して正しい場所に移動してみてください。jqueryが役立つと思います。私はそうするためのいくつかのプラグインがあると思いますここにそれらの1つがあります:http://demos.flesler.com/jquery/scrollTo/。要素の位置が可能な場合は、http://api.jquery.com/scrollTop/を使用することもできます。

于 2013-03-26T04:44:25.733 に答える
1

scrollIntoViewメソッドを使用します

function NextClinic() {

            var gvClinics = document.getElementById("<%= gvClinics.ClientID %>");
            var FindText = document.getElementById("<%= txtClinicKeywords.ClientID %>").value;
            var oRows = gvClinics.rows;
            var rawDataRows = new Array();
            var cell;
            var hdnCounterNext = document.getElementById("<%= hdnCounterNext.ClientID %>").value;
            for (var i = hdnCounterNext; i < oRows.length; i++) {
                var cell = gvClinics.rows[i].cells[3];
                if (cell.innerHTML.indexOf(FindText) !== -1) {
                    alert("found at " + i);
                    cell.scrollIntoView();
                    document.getElementById("<%= hdnCounterNext.ClientID %>").value = i+1
                    return false;
                }
            }
        }

于 2013-03-26T04:45:19.170 に答える