如何滚动到div中gridview中的特定记录

时间:2013-03-26 04:40:09

标签: javascript

我有一个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;
                }
            }
        }

最好的建议值得高度赞赏..

由于 斯里兰卡。

2 个答案:

答案 0 :(得分:1)

尝试获取click的位置,然后使用ScrollTo选项将其移动到正确的位置。我认为jquery会帮助你。我认为有一些插件可以做到这一点:http://demos.flesler.com/jquery/scrollTo/。如果可以使用元素的位置,即使你也可以使用http://api.jquery.com/scrollTop/

答案 1 :(得分: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;
                }
            }
        }

example