当前位置:编程学习 > C#/ASP.NET >>

一个关于gridview比较棘手的问题,初学者求解决思路

需求:从某处接受来一个datatable,显示在gridview上,客户在看gridview,看到一半想下次再看了,就在他看到的这一行单击一下,关闭页面,等到下次打开这个页面时能自动移动scrollbar(只有一页,并且被抱括在scrollbar中)定位到上次看的那一条,类似一个书签的功能,只不过是在gridview上实现。最好的效果是如果我单击的这条数据在我下次打开之前变位置了,下次打开后也能准确定位。 --------------------编程问答-------------------- 以前做过一个差不多的 一个静态变量 记录下这条记录的主键 然后下次load的时候用js控制进度条
类似下面这个
var girdView= document.getElementById('girdView');
girdView.onload = function () {
    girdView.contentWindow.scrollTo(x,y);
}
--------------------编程问答--------------------
引用 1 楼 shengguang1587 的回复:
以前做过一个差不多的 一个静态变量 记录下这条记录的主键 然后下次load的时候用js控制进度条
类似下面这个
var girdView= document.getElementById('girdView');
girdView.onload = function () {
    girdView.contentWindow.scrollTo(x,y);
}

那输入这条数据改变的话,会正常显示吗 --------------------编程问答--------------------
引用 2 楼 whj92115 的回复:
Quote: 引用 1 楼 shengguang1587 的回复:

以前做过一个差不多的 一个静态变量 记录下这条记录的主键 然后下次load的时候用js控制进度条
类似下面这个
var girdView= document.getElementById('girdView');
girdView.onload = function () {
    girdView.contentWindow.scrollTo(x,y);
}

那输入这条数据改变的话,会正常显示吗


数据库改变了,肯定会显示数据库的值啊,但是如果数据库增加或删除了的话,就不会显示到上次那一条了。 --------------------编程问答--------------------
引用 3 楼 u011781558 的回复:
Quote: 引用 2 楼 whj92115 的回复:

Quote: 引用 1 楼 shengguang1587 的回复:

以前做过一个差不多的 一个静态变量 记录下这条记录的主键 然后下次load的时候用js控制进度条
类似下面这个
var girdView= document.getElementById('girdView');
girdView.onload = function () {
    girdView.contentWindow.scrollTo(x,y);
}

那输入这条数据改变的话,会正常显示吗

我觉得你做分页显示的话好做一些,直接给他显示上次看到的页数。


数据库改变了,肯定会显示数据库的值啊,但是如果数据库增加或删除了的话,就不会显示到上次那一条了。 --------------------编程问答--------------------
引用 4 楼 u011781558 的回复:
Quote: 引用 3 楼 u011781558 的回复:

Quote: 引用 2 楼 whj92115 的回复:

Quote: 引用 1 楼 shengguang1587 的回复:

以前做过一个差不多的 一个静态变量 记录下这条记录的主键 然后下次load的时候用js控制进度条
类似下面这个
var girdView= document.getElementById('girdView');
girdView.onload = function () {
    girdView.contentWindow.scrollTo(x,y);
}

那输入这条数据改变的话,会正常显示吗

我觉得你做分页显示的话好做一些,直接给他显示上次看到的页数。


数据库改变了,肯定会显示数据库的值啊,但是如果数据库增加或删除了的话,就不会显示到上次那一条了。

如果数据值改变肯定是正常的显示 通过主键去找到这条记录 如果这条记录被删除了..那肯定找不到啊  --------------------编程问答-------------------- 你可以修改一下这个javascript代码,应该能实现你的需求

 <script type="text/javascript">
        //颜色值推荐使用Hex,如 #f00 或 #ff0000

        window.onload = function () {

            GridViewColor("<%=gvList.ClientID%>", "#fff", "#eee", "#6df", "#fd6");

        }
        //GridView ID, 正常行背景色,交替行背景色,鼠标指向行背景色,鼠标点击后背景色

        function GridViewColor(GridViewId, NormalColor, AlterColor, HoverColor, SelectColor) {

            //获取所有要控制的行
            var AllRows = document.getElementById(GridViewId).getElementsByTagName("tr");

            //设置每一行的背景色和事件,循环从1开始而非0,可以避开表头那一行

            for (var i = 1; i < AllRows.length; i++) {

                //设定本行默认的背景色
                AllRows[i].style.background = i % 2 == 0 ? NormalColor : AlterColor;

                //处于选中状态的行发生这两个事件时不改变颜色
                if (HoverColor != "") {

                    AllRows[i].onmouseover = function () { if (!this.selected) this.style.background = HoverColor; }

                    if (i % 2 == 0) {

                        AllRows[i].onmouseout = function () { if (!this.selected) this.style.background = NormalColor; }

                    }

                    else {

                        AllRows[i].onmouseout = function () { if (!this.selected) this.style.background = AlterColor; }

                    }

                }
                //如果指定了鼠标点击的背景色,则添加onclick事件

                //在事件响应中修改被点击行的选中状态

                if (SelectColor != "") {

                    AllRows[i].onclick = function () {

                        this.style.background = this.style.background == SelectColor ? HoverColor : SelectColor;

                        this.selected = !this.selected;

                    }

                }

            }

        }

    </script>

实现思路:
1.加载js判断上传用户是否点击了某行数据,ID是否存在,如果存在
根据读取的ID,定位到与girdView相同ID行上。
2.使用js获取用户点击的那行数据ID并保存到表中 --------------------编程问答-------------------- 那我如何读取并记录下我所单击的那条数据的主键呢 --------------------编程问答--------------------
引用 1 楼 shengguang1587 的回复:
以前做过一个差不多的 一个静态变量 记录下这条记录的主键 然后下次load的时候用js控制进度条
类似下面这个
var girdView= document.getElementById('girdView');
girdView.onload = function () {
    girdView.contentWindow.scrollTo(x,y);
}

那我如何读取并记录下我所单击的那条数据的主键呢 --------------------编程问答--------------------
引用 6 楼 jls6810 的回复:
你可以修改一下这个javascript代码,应该能实现你的需求

 <script type="text/javascript">
        //颜色值推荐使用Hex,如 #f00 或 #ff0000

        window.onload = function () {

            GridViewColor("<%=gvList.ClientID%>", "#fff", "#eee", "#6df", "#fd6");

        }
        //GridView ID, 正常行背景色,交替行背景色,鼠标指向行背景色,鼠标点击后背景色

        function GridViewColor(GridViewId, NormalColor, AlterColor, HoverColor, SelectColor) {

            //获取所有要控制的行
            var AllRows = document.getElementById(GridViewId).getElementsByTagName("tr");

            //设置每一行的背景色和事件,循环从1开始而非0,可以避开表头那一行

            for (var i = 1; i < AllRows.length; i++) {

                //设定本行默认的背景色
                AllRows[i].style.background = i % 2 == 0 ? NormalColor : AlterColor;

                //处于选中状态的行发生这两个事件时不改变颜色
                if (HoverColor != "") {

                    AllRows[i].onmouseover = function () { if (!this.selected) this.style.background = HoverColor; }

                    if (i % 2 == 0) {

                        AllRows[i].onmouseout = function () { if (!this.selected) this.style.background = NormalColor; }

                    }

                    else {

                        AllRows[i].onmouseout = function () { if (!this.selected) this.style.background = AlterColor; }

                    }

                }
                //如果指定了鼠标点击的背景色,则添加onclick事件

                //在事件响应中修改被点击行的选中状态

                if (SelectColor != "") {

                    AllRows[i].onclick = function () {

                        this.style.background = this.style.background == SelectColor ? HoverColor : SelectColor;

                        this.selected = !this.selected;

                    }

                }

            }

        }

    </script>

实现思路:
1.加载js判断上传用户是否点击了某行数据,ID是否存在,如果存在
根据读取的ID,定位到与girdView相同ID行上。
2.使用js获取用户点击的那行数据ID并保存到表中

能加个q详细请教一下嘛
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,