如何仅滚动表,列表视图或者数据网格的右侧?

时间:2020-03-06 14:23:22  来源:igfitidea点击:

假设我的数据结构是这样的:

Public Class AttendenceRecord
  Public CourseDate As Date
  Public StudentsInAttendence As Integer
End Class

Public Class Course
  Public Name As String
  Public CourseID As String
  Public Attendance As List(Of AttendenceRecord)
End Class

我想要一个看起来像这样的表:

| Course Name | Course ID | [Attendence(0).CourseDate] | [Attendence(1).CourseDate]| ...
| Intro to CS |  CS-1000  |             23             |              24           | ...
| Data Struct |  CS-2103  |             15             |              14           | ...

在一般情况下,我如何在保持"课程名称"和"课程ID"不变的情况下,使"课程ID"右侧的所有内容都可以水平滚动?理想情况下,在ASP.NET和/或者WinForms中使用表,列表视图或者数据网格。

解决方案

在纯.Net中,我什么都不知道。有用于固定标头的CSS解决方案。但是以我的经验,固定的左列需要一些javascript修饰。

花了我几分钟找到旧的例子。自那以后,主人已经倒下了。 http://web.archive.org/web/20080215013647/http://www.litotes.demon.co.uk/example_scripts/tableScroll.html

这是我用来使其工作的机制:取一个普通表,并将其分离为其他4个表。获取列宽和行高以使用业务约束进行匹配,然后链接onscroll事件以滚动其他表。

这是一个仅使用HTML和CSS来实现我认为我们正在寻找的示例:

http://www.shrutigupta.com/index.php/2005/12/12/how-to-create-table-with-first-column-frozen/

我们可以从System.Windows.Forms.DataGridView控件中获得此功能。创建列时,可以将其设置为冻结,然后仅将这些列滚动到冻结列的右侧。