首先祝大家五一快乐
我用到了微软自带的datagrid表格,但使用时出现了如下问题
1.我不想使用表格分页,所以我在使用datagrid时,在外面套了一个div;
2.我在表格中定义了一个“选择列“;
3.点击“选择列”时,选中了本行,但是,表格又回到了第一行,需要拉动div的滚动条才能找到所选中的行,非常不方便。
    大家有没有什么好的办法,达到选中的目的就行,选中后需要有颜色的变化。初学asp,没有什么经验,希望大家帮忙!

解决方案 »

  1.   

    1.你试试添加js代码让滚动条保持.给你个范例
    <script language="javascript">
        <!--
        //  获取当前文件名
        function getFileName()
        {
            var url = this.location.href
            var pos = url.lastIndexOf("/");
            if(pos == -1)
                pos = url.lastIndexOf("\\")
            var filename = url.substr(pos +1)
            return filename;
        }    function fnLoad()
        {
            with(window.document.body)
            {
                addBehavior ("#default#userData");    // 使得body元素可以支持userdate
                load("scrollState" + getFileName());    // 获取以前保存在userdate中的状态
                scrollLeft = getAttribute("scrollLeft");    // 滚动条左位置
                scrollTop = getAttribute("scrollTop");
            }
        }    function fnUnload()
        {
            with(window.document.body)
            {
                setAttribute("scrollLeft",scrollLeft);
                setAttribute("scrollTop",scrollTop);
                save("scrollState" + getFileName()); 
            }
        }
        window.onload = fnLoad;
        window.onunload = fnUnload;    // -->
    </script>2.选中后需要有颜色变化.这个如果点击编辑按钮的情况你修改EditItem-Style,如果是一般的ItemCommand事件,你可以在ItemCreated事件里动态修还列里控件的属性.
      

  2.   

    //1.form自身滚动条控制
    function onscrollform()
    {
       document.all["pos"].value = document.body.scrollTop;   
    }  
    function formOnload()
    {     
       OnloadForScroll();

    function OnloadForScroll()
    {
          var spos = document.all["pos"].value;
          window.scrollTo( 0, spos );
    }  
    <BODY onscroll="onscrollform();" onload="formOnload();" ms_positioning="FlowLayout">
    <asp:textbox id="pos" style="DISPLAY: none" Runat="server"></asp:textbox>
    //////////////////////////////////////////////////////////////////////////////////////////
    //2.form自身滚动条被禁止,而通过div的滚动条来控制
    function scrollDiv() 

        document.all.pos.value = document.all.onlinediv.scrollTop;//onlinediv是一个div

    function formOnload()

         OnloadForScroll(); 

    function OnloadForScroll() 

        var spos = document.all["pos"].value; 
        if(! spos)spos=0; 
        document.all.onlinediv.scrollTop=spos; 
    }
    <BODY onscroll="onscrollform();" onload="formOnload();" ms_positioning="FlowLayout">
    <asp:textbox id="pos" style="DISPLAY: none" Runat="server"></asp:textbox>
    ///////////////////*****************************************
      

  3.   

    選中的控件不要用web control就不會回發數據.
    可以用html control
      

  4.   

    给你一个资料关于页面刷新的问题~~~~
    我们在做.net开发时,经常能碰到这样的情况,页面很长,而我们一般用的都是服务器端控件,用服务器端控件有这样一个缺点,就是控件每次都要和服务器交互,而产生页面的刷新,试想一下,如果页面很长,而页面中的控件又很多,每次都要刷新到页面顶部,那我们在填写资料时页面每刷新一次我们都要拖动一次滚动条,这样实在是很麻烦,问题由此产生,一些人用SmartNavigation 方法,这个方法可行,但它一般会与页面中的验证控件或是JS 产生冲突,从而导致页面的失效,在这我找到一个用JS来解决问题的办法供大家参考环境为VS.NET 2000和VS.NET 2003通过<script language="javascript">
    function GetCookie (name) 
    {
    var arg = name + "=";
    var alen = arg.length;
    var clen = document.cookie.length;
    var i = 0;
    while (i < clen)
    {
    var j = i + alen;
    if (document.cookie.substring(i, j) == arg)
    return getCookieVal (j);
    i = document.cookie.indexOf(" ", i) + 1;
    if (i == 0) break; 
    }
    return null;
    }function getCookieVal (offset) 
    {
    var endstr = document.cookie.indexOf (";", offset);
    if (endstr == -1)
    endstr = document.cookie.length;
    return unescape(document.cookie.substring(offset, endstr));
    }
    function SetCookie (name, value) 
    {
    document.cookie = name + "=" + escape (value)
    }
    </script>在body中加入
    <body bgColor="#f1f5f5" leftMargin="0" topMargin="0" rightMargin="0" MS_POSITIONING="GridLayout" onload="document.body.scrollTop=GetCookie(''posy'')" onunload="SetCookie(''posy'',document.body.scrollTop)">测试已通过~~~如有问题请大家指正! 
      

  5.   

    to singlepine(小山) :
    我在body里写了那个方法,不好用啊,我在div里也写了,但是不行啊