关于DataGrid--锁定列或行

cwbboy 2003-10-22 04:32:47
现在需要一个DataGrid控件,他可以像Excel内的列表一样,在拖动滚动条时,最左边的一列或几列,最上边的一行或几行,可以不滚动。
听说用active x控件可以解决,但又发现有些利用xml技术的控件也可以解决,不知各位看法如何,可否提供些思路,和解决办法。
...全文
278 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
cwbboy 2003-10-26
  • 打赏
  • 举报
回复
神啊,救救我吧
ddangerous169 2003-10-26
  • 打赏
  • 举报
回复
lf
cwbboy 2003-10-24
  • 打赏
  • 举报
回复
我的datagrid要显示几千条数据,速度要能让人忍受才行,之前我写了个,效果还可以,但数据一条就奇慢无比
gOODiDEA 2003-10-22
  • 打赏
  • 举报
回复
直接用应该不行的,你得自己写Js脚本结合DHTML,到Web版的Js版去看看,我记得在那儿好像有个人做个拖动的HTML表格。

参考:

如何用鼠标直接调整表格宽度~~

作  者: lovingkiss (交流技术不要分,请勿联系)
信 誉 值: 100
所属论坛: Web 开发 JavaScript
问题点数: 1
回复次数: 24
发表时间: 2003-4-8 9:07:06





最近很多朋友向我索要我的表格Class,在技术上,这个Class用了两年多,虽然未必是很完善,但是也确实凝聚了不少的心血,说心里话,有点舍不得~~嘿嘿~~

其中,和其他表格不太一致的就是调整部分——我没有发现过类似的罢,如今贴出来给大家分享一下,好呢,您就用着,不好呢,您也别骂我;顺便说一句,我来这里只是和大家交流,偶说话很直接,希望得罪之处不要生气;而且我也不算什么高手,别继续在贴子里面说偶NB,要和偶比试乐,偶认输~~~~~

表格其它动态的操作,可以查找我以前的两个贴子,那里有非常详细的介绍;

也仅以次感谢梅花Rain、孟子Three章等朋友曾经给我的帮助~,呵呵~~

******************************************************************
<HTML>
<HEAD>
<META NAME="GENERATOR" Content="Microsoft FrontPage 4.0">
<TITLE></TITLE>
<Script Language=VbScript>
'//****************************************
'蒋玉龙编制于2002-8-6 星期二
'QQ:66840199
'用时5个小时,功能:实现首行根据边框调整表格大小;
'请保留相关信息
'//****************************************
Dim CurState '记录鼠标状态
Dim CurDown '记录鼠标按下
Dim CurId '记录当前Id
Dim OldPlace,NewPlace

Sub MoveCol(MyColId)
window.status =window.document.body.scrollLeft
If CurDown=False Then '鼠标没有按下
If window.event.x + window.document.body.scrollLeft > CurTable + window.document.body.all(CurId).offsetLeft + window.document.body.all(CurId).offsetWidth-3 Then
'移动到了相应的部位/改变鼠标
CurState=True
window.document.body.style.cursor="move"
Else
CurState=False
window.document.body.style.cursor="Default"
End If
CurId=MyColId
End If
End Sub

Sub UpBody() '鼠标抬起/一切恢复原状态
If CurState=True Then
'***************************调整表格**************************
'调整条件:(层左侧+线左侧=线绝对左侧坐标)>目标的左侧坐标+20
NewPlace=window.event.x + window.document.body.scrollLeft
If (MyDiv.offsetLeft + MyLine.offsetLeft) > CurTable + window.document.body.all(CurId).offsetLeft +20 Then
window.document.body.all(CurId).Width = window.document.body.all(CurId).Width - (OldPlace - NewPlace)
MyTable.width=MyTable.Width - (OldPlace - NewPlace)
window.document.body.all(CurId).innertext=window.document.body.all(CurId).Width
End If
'*************************************************************
CurState=False
CurDown=False
MyDiv.style.display="None"
window.document.body.style.cursor="Default"
End If
End Sub

Sub DownBody() '鼠标按下
If CurState=True Then
CurDown=True
'*********定位竖线**********
MyDiv.style.display="" '层可见
MyLine.style.Height= MyTable.offsetHeight
MyLine.style.width = 1
MyDiv.style.Left = window.event.x + window.document.body.scrollLeft - MyLine.offsetLeft
MyDiv.style.Top = MyTable.offsetTop - MyLine.offsetTop
'***************************
OldPlace=window.event.x + window.document.body.scrollLeft
End If
End Sub

Sub MoveBody() '鼠标移动
If CurDown=True Then '鼠标按下状态
MyDiv.style.Left = window.event.x + window.document.body.scrollLeft - MyLine.offsetLeft
window.document.body.style.cursor="move"
End If
End Sub

Sub SelectBody() '鼠标选择文本[不支持动态调整?]
If CurDown=True Then '鼠标按下于调整状态
window.event.returnvalue=False
End If
End Sub
</Script>
</HEAD>
<BODY onmousedown=DownBody() OnMouseOver=MoveBody() OnMouseUp=UpBody() onselectstart=SelectBody()>
<DIV Id=MyDiv style="DISPLAY: none; HEIGHT: 201px; LEFT: 12px; POSITION: absolute; TOP: 50px; WIDTH: 28px; Z-INDEX: 1">
<hr Id=MyLine width="1" size="200" noshade Color="black">
</DIV>
<TABLE Id=MyTable border=0 cellPadding=0 cellSpacing=0 width="300">
<TR Id=MyRow01>
<TD Width="100" Id="MyCol01" onmousemove="MoveCol 'MyCol01'">01</TD>
<TD Width="100" Id="MyCol02" onmousemove="MoveCol 'MyCol02'">02</TD>
<TD Width="100" Id="MyCol03" onmousemove="MoveCol 'MyCol03'">03</TD></TR>
<TR Id=MyRow02>
<TD>04</TD>
<TD>05</TD>
<TD>06</TD></TR>
<TR Id=MyRow03>
<TD>07</TD>
<TD>08</TD>
<TD>09</TD></TR>
<TR>
<TD>10</TD>
<TD>11</TD>
<TD>12</TD></TR>
</TABLE>
<SCRIPT Language=VbScript>
Dim CurTable
CurTable=MyTable.offsetLeft

Dim TabII,TabJJ
Dim CurWidth
For TabII=0 To (MyTable.Rows.length-1)
For TabJJ=0 To (MyTable.Rows(TabII).cells.length-1)
If MyTable.Rows(TabII).cells(TabJJ).innerHtml="" Then
MyTable.Rows(TabII).cells(TabJJ).innerHtml=" "
End If
CurWidth="1"
If TabII=0 Then '第一行
CurWidth="2"
End If
MyTable.Rows(TabII).cells(TabJJ).Style.bordertop=CurWidth & "px solid Black"
CurWidth="1"
If TabJJ=0 Then '第一列
CurWidth="2"
End If
MyTable.Rows(TabII).cells(TabJJ).Style.borderleft=CurWidth & "px solid Black"
If TabII=(MyTable.Rows.length-1) Then '最后一行
MyTable.Rows(TabII).cells(TabJJ).Style.borderbottom="2px solid Black"
End If
If TabJJ=(MyTable.Rows(TabII).cells.length-1) Then '最后一列
MyTable.Rows(TabII).cells(TabJJ).Style.borderright="2px solid Black"
End If
Next
Next
</SCRIPT>
</BODY>
</HTML>


实际上我的类里面,这是两个功能:
1、调整表格的列宽度——还有行高度部分,和这个原理是一样的;
2、设置表格的边框样式,实际上的应用时候,相对复杂一些,进行了很多动态的属性设定;

表格其他的功能:
翻页、点击、编辑、新增、删除、打印、查询、排序等


cwbboy 2003-10-22
  • 打赏
  • 举报
回复
up
cwbboy 2003-10-22
  • 打赏
  • 举报
回复
只要能在网页上用就行了,不一定要.net的,再说,能实现效果,就可以转到.net内,做成控件
houlinghouling 2003-10-22
  • 打赏
  • 举报
回复
帮你up
haoliqi 2003-10-22
  • 打赏
  • 举报
回复
帮你up
cuike519 2003-10-22
  • 打赏
  • 举报
回复
http://xml.sz.luohuedu.net/xml/CoolMenu/main.htm

看看这里的DataGrid(并非.NET中的DataGrid),我简直看傻了!
foow 2003-10-22
  • 打赏
  • 举报
回复
DataGrid不行吧去年我有一个报表项目也是要求这样的
找了好久没看到
最后还是用c#生成excel列表实现
hbzh1014 2003-10-22
  • 打赏
  • 举报
回复
路过,帮你UP一下
cwbboy 2003-10-22
  • 打赏
  • 举报
回复
up

62,074

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧