Comment faire défiler uniquement le côté droit d'une table, d'une vue en liste ou d'une grille de données?
Question
Disons que j'ai des structures de données qui ressemblent à ceci:
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
Et je veux une table qui ressemble à ceci:
| Course Name | Course ID | [Attendence(0).CourseDate] | [Attendence(1).CourseDate]| ... | Intro to CS | CS-1000 | 23 | 24 | ... | Data Struct | CS-2103 | 15 | 14 | ...
Comment pourrais-je, dans l’ensemble, placer tout le texte à droite de l’ID de cours pour qu’il puisse défiler horizontalement, tout en maintenant le nom et l’ID du cours en place? Idéalement, utilisez une table, une liste ou une grille de données dans ASP.NET et / ou WinForms.
La solution
Vous pouvez obtenir cette fonctionnalité à partir du contrôle System.Windows.Forms.DataGridView. Lorsque vous créez des colonnes, vous pouvez les définir comme figé qui ne fait alors défiler que les colonnes situées à droite des colonnes gelées.
Autres conseils
En pur .Net, je ne sais rien. Il existe solutions CSS un en-tête fixe. Mais une colonne gauche fixe, selon mon expérience, nécessite quelques modifications javascript.
Il m'a fallu une minute pour retrouver le vieil exemple. L'hôte est depuis tombé. http: // web.archive.org/web/20080215013647/http://www.litotes.demon.co.uk/example_scripts/tableScroll.html
C’est le mécanisme que j’avais utilisé pour le faire fonctionner: prenez une table normale et séparez-la en 4 autres. Faites correspondre les largeurs de colonne et les hauteurs de ligne à l'aide de contraintes commerciales, puis liez l'événement onscroll pour faire défiler les autres tableaux.
Voici un exemple utilisant uniquement HTML et CSS pour réaliser ce que je pense que vous recherchez:
http://www.shrutigupta.com/index.php/2005/12/12/how-to-create-table-with-first-column-frozen/