情况描述:1 如当前屏幕大小只能显示20行, 当DATAGRID的行数超过20行的时候,屏幕右边就会出现滚动条          2 假设现在DATAGRID有100行数据,拉动右边滚动条到屏幕最下方, 点击第90行的ITEM时, DATAGRID.SelectedItem 值被改变
          3 此时整个 DATAGRID 被重绘, SELECTED ITEM 被重点显示, 而右边的滚动条又回到了屏幕最上方, SELECTED ITEM 因为在第90行,所以看不到了
          问题:     如何可以保持右边滚动条的位置,从而使得第90行的ITEM被显示在屏幕上

解决方案 »

  1.   

    在DataGrid外面加了来使DataGrid在一定区域内呈现,这样如果把滚动条拉到底部的时候点击修改(或者修改后点击更新,取消)页面重新加载的时候都会把滚动条拉到页面最上面部分 <div style="BORDER:0px;PADDING:0px;MARGIN:0px;OVERFLOW:scroll;WIDTH:600px;HEIGHT:200px" align="center">
    现在给出一种简单的办法(其他的一些利用锚点等办法都比较复杂)
    private void Scroll(int index)
            {
                string s="<script>function window.onload(){document.all('"+this.DataGrid1.ClientID+"').rows["+index+"].scrollIntoView();}</script>";
                Page.RegisterStartupScript("",s);
            }
    写了一个方法,其中DataGrid1换成自己的DataGrid的ID,这个方法传递进去的参数就是行号,也就是e.Item.ItemIndex。
    比如在编辑操作的时候会写this.DataGrid1.EditItemIndex=e.Item.ItemIndex;
    在此语句的以前加入Scroll(e.Item.ItemIndex);就可以了
    同样在更新操作的时候写为Scroll(e.Item.ItemIndex);this.DataGrid1.EditItemIndex=-1;绑定; 
      

  2.   

    <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)">
      

  3.   

    LoveCherry(论成败,人生豪迈;大不了,重头再来!^_^) 的方法值得收藏,呵呵
      

  4.   

    谢谢 LoveCherry(论成败,人生豪迈;大不了,重头再来!^_^) 等以上高手问题已经解决,现在给分另外请帮忙看看我的另一个问题,关于隐藏按钮的,放这里好久了都没人解决分数给多少都不是问题万分感谢!
    http://community.csdn.net/Expert/topic/4113/4113670.xml?temp=.2773554