CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  ASP.NET

小女子恳请高手一个问题

楼主may55()2006-06-08 09:48:48 在 .NET技术 / ASP.NET 提问

在panel中放一个gridview控件,gridview用来显示数据,数据多时现在panel能够自动出现滚动条,但是不知道选中一条数据后怎么把滚动条定位在那一条数据上,现在的情况是选中后面的一条数据时,滚动条自动蹦到最上面,需要拖动到选中那条数据的区域时才能看到被选中的那一行(选中的行显示颜色和未选中的不一样)。  
  请问怎么才能把滚动条定位到选中的那一行上?极度感谢!!! 问题点数:100、回复次数:39Top

1 楼WeekZero(∮小气的鬼∮)回复于 2006-06-08 09:52:05 得分 0

试,用js将选中的行上获得焦点,如,...focus();Top

2 楼hanchi8008(寒池)回复于 2006-06-08 09:53:15 得分 0

bang   ding     !Top

3 楼yistudio(阳光灿烂的日子)回复于 2006-06-08 09:53:34 得分 0

偏移Top

4 楼liushimen(不可一世)回复于 2006-06-08 09:53:58 得分 0

放gridview为什么要用panel啊,用DIV不是很好吗,而且不会出现你说的那种情况Top

5 楼snowvan(小学生)回复于 2006-06-08 09:54:23 得分 0

只要让你选的行获得焦点就可以了!Top

6 楼reaperwu(过程、方法、人)回复于 2006-06-08 09:54:33 得分 0

function   SelectTR(tr)  
  {  
  var   dataGrid   =   document.getElementById('dataGrid');  
  var   trs   =   dataGrid.getElementsByTagName('TR');  
   
  for   (   var   i   =   1;   i   <   trs.length;   i++   )  
  {  
  if   (   trs[i]   ==   tr   )  
  {  
  trs[i].className   =   "tr_datagrid_select";  
  document.getElementById('panel').scrollTop   =   tr.offsetTop   -   36;  
  }  
  else  
  {  
  trs[i].className   =   "tr_datagrid_content";  
  }  
  }  
  }Top

7 楼reaperwu(过程、方法、人)回复于 2006-06-08 09:55:32 得分 0

///   数据绑定事件  
  private   void   dataGrid_ItemCreated(object   sender,   System.Web.UI.WebControls.DataGridItemEventArgs   e)  
  {  
  if   (   e.Item.ItemIndex   <   0   )  
  {  
  return;  
  }  
   
  e.Item.Attributes.Add("onclick",   "javascript:SelectTR(this)");  
  }Top

8 楼ym2000(tt)回复于 2006-06-08 09:57:09 得分 0

我没想过把他定位到选中的这一条上因为它刷新了页面   我也不知道如何控制,我是用JS来做   比如说客户选中这条后想做一定处理     直接使用JS   来获得这条数据的在GRID上的信息然后再来处理     这样由于是在客户端处理就不会刷新页面了,还有一种(只是考虑了自己的方便没想过客户的意见)把选中的这一条通过数据库的处理把他排列到第一条这样也可以然后+上颜色Top

9 楼sbsrg3000(⊙⌒⊙怪事,这几天可用分又没增加....)回复于 2006-06-08 09:57:16 得分 0

mark   and   upTop

10 楼baiyashan(依浪道夫)回复于 2006-06-08 10:00:02 得分 0

顶你!!!Top

11 楼snowvan(小学生)回复于 2006-06-08 10:02:14 得分 0

你试一下在js里完成你的操作最后写一句return   false   这样那个滚动条应该是不会动的!   调用js的地方写return   JSname();Top

12 楼dgrwang(探索者)回复于 2006-06-08 10:03:00 得分 0

帮顶Top

13 楼snowvan(小学生)回复于 2006-06-08 10:03:51 得分 0

看来以后问问题标题要写   “小女子……”   人气呼高啊!!!^-^Top

14 楼snowvan(小学生)回复于 2006-06-08 10:04:53 得分 0

接分Top

15 楼ld_thinking(懒得想)回复于 2006-06-08 10:05:42 得分 0

顶小女子的贴Top

16 楼sorrow_man(不会我就问,零下一度)回复于 2006-06-08 10:14:09 得分 0

顶Top

17 楼may55()回复于 2006-06-08 10:43:40 得分 0

感谢大家的参与,更感谢reaperwu,不过用了你的方法还是不行,因为gridview和datagrid的事件还不大一样,gridview没有ItemCreated事件,我换成了   protected   void   GridView1_RowDataBound(object   sender,   GridViewRowEventArgs   e)还是不行,不知道为什么,恳请百忙之中再次赐教。谢谢!!!还有就是:您的document.getElementById('panel').scrollTop   =   tr.offsetTop   -   36;这句话中的36不知道是什么意思?  
  Top

18 楼reaperwu(过程、方法、人)回复于 2006-06-08 11:32:46 得分 0

-_-!...,没有用过vs2005  
  不过我想原理上是差不多的,点击选择行,PANEL滚动到选择行的位置上。  
   
  document.getElementById('panel').scrollTop   =   tr.offsetTop   -   36;  
  只是把PANEL的滚动条移动到当前选择行的位置再加上36,这样设置可以把当前选择行显示在PANEL中间。Top

19 楼loverdotnet(西瓜)回复于 2006-06-08 11:38:58 得分 0

markTop

20 楼reaperwu(过程、方法、人)回复于 2006-06-08 11:39:34 得分 0

可能我的代码是针对   DataGrid   写的,现在只能写成这样  
   
  function   SelectTR(tr)  
  {  
  document.getElementById('panel').scrollTop   =   tr.offsetTop   -   36;  
  }Top

21 楼liushimen(不可一世)回复于 2006-06-08 11:40:04 得分 0

又是小女贴,人气就是高。Top

22 楼amandag(高歌)回复于 2006-06-08 11:45:08 得分 0

upTop

23 楼gnhao(何飞)回复于 2006-06-09 11:17:18 得分 0

又是小女贴,我看都结婚了吧,嘿嘿.别忘了下次改为弱女子,Top

24 楼gnhao(何飞)回复于 2006-06-09 11:18:15 得分 0

别骗善良的程序员哦Top

25 楼Nikko0080(三缺浪人)回复于 2006-06-09 11:28:08 得分 0

小女贴原来这么多人回复??  
   
  以后问问题考虑一下骗骗善良的程序员^_^Top

26 楼hui1202(骨灰)回复于 2006-06-09 11:54:08 得分 0

.......无语,为什么女人总是这么受欢迎?Top

27 楼Jeffris(第一缕阳光)回复于 2006-06-09 14:21:38 得分 0

主要坛子上的女人少Top

28 楼bufan2162(永远保持前进状态)回复于 2006-06-09 14:36:11 得分 0

用div就可以了  
  Top

29 楼longqzh()回复于 2006-06-09 14:52:33 得分 0

顶!!!Top

30 楼cj121074()回复于 2006-06-09 20:34:05 得分 0

做女人真爽,这么多高手为她想办法!  
  无语!!!!!!!!!!!!!!!Top

31 楼cat_hsfz(我的新Blog在http://cathsfz.cnblogs.com)回复于 2006-06-10 00:47:53 得分 0

用Callback吧,看看能否不刷新。否则就用Atlas的UpdatePanel。反正可以尝试一些ajax的方法避免刷新。Top

32 楼alby(批发各种型号黄瓜)回复于 2006-06-10 01:26:27 得分 0

充分说明写代码的都是性饥渴啊~!Top

33 楼fuyun_wjr()回复于 2006-06-10 01:26:45 得分 0

jf  
  楼上兄弟们已经提出解决方案了  
  Top

34 楼waxln(有点意思)回复于 2006-06-10 03:26:29 得分 0

是个女的就这么多人帮助呀   程序员的悲哀Top

35 楼reaperwu(过程、方法、人)回复于 2006-06-12 09:19:12 得分 0

看来我是充分说明并且写了代码,感觉挺无耻的  
  不知道有没有人比我更无耻,把这个问题给解决了,别让我在这丢人现眼Top

36 楼amandag(高歌)回复于 2006-06-12 09:36:11 得分 0

路过Top

37 楼lubosun(大白菜)回复于 2006-06-12 09:40:01 得分 0

小女贴原来这么多人回复??  
   
  以后问问题考虑一下骗骗善良的程序员^_^  
  =====================================  
   
  呵呵Top

38 楼airapple5(MiChAeL)回复于 2006-06-12 09:47:02 得分 0

程序员都是一群饥渴的MAN,哈哈:)Top

39 楼yigecainiao()回复于 2006-06-12 09:53:34 得分 0

100分~~jf啊   ~  
        我不会也要看下     顶一个Top

相关问题

关键词

得分解答快速导航

  • 帖主:may55

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo