Scroll dans un div

Scroll dans un div - HTML/CSS - Programmation

Marsh Posté le 05-10-2017 à 13:42:36    

Bonjour,
J'ai fait cette fonction:  
- input : DataTable  
- output :code HTML.  
 
Sur un clique de cette grille on mémorise le click coté serveur. Au rafraîchissement de la page, la ligne sélectionnée s'affiche en bleu. Cela fonctionne.  
J'aimerai maintenant jouer avec les scrollbar, actuellement il s'affiche, mais au rafraîchissement de la page il remonte tout en haut, ceci ne me convient pas. J'aimerai que le scroll soit automatique sur la valeur sélectionnée (on est sur la ligne sélectionné si dans la boucle isSelected est à 1).
Pouvez-vous me donner un coup de main ?
Merci.
 

Code :
  1. Public Shared Function printTableFromDataTable(ByVal sguid As String, ByVal username As String, ByVal oDT As DataTable, ByVal colNameIndex As String, ByVal dataSelection As String, OperationName As OperationName, ByVal redirect As String, ByVal scrollEnable As Boolean) As String
  2.             If Not IsNothing(oDT) Then
  3.                 Dim table As New StringBuilder
  4.                 Dim color As String = "#FFFFFF"
  5.                 Dim style As String = ""
  6.                 Dim isSelected As Boolean = False
  7.                 table.AppendLine("<div style=""overflow: scroll; height: inherit; width: inherit"">" )
  8.                 ' table.AppendLine("<div>" )
  9.                 table.AppendLine("<table>" )
  10.                 table.AppendLine("<tr>" )
  11.                 table.AppendLine("<th style=""border-top:solid 1px;border-left:solid 1px;border-right:solid 1px;border-bottom:solid 1px;padding: 2px;background:#e0e0eb"">&nbsp;&nbsp;&nbsp;</th>" )
  12.                 For i = 0 To oDT.Columns.Count - 1
  13.                     If Not oDT.Columns(i).ColumnName.StartsWith("hide" ) And Not oDT.Columns(i).ColumnName.StartsWith("color" ) Then
  14.                         table.AppendLine("<th style=""border-top:solid 1px;border-left:solid 1px;border-right:solid 1px;border-bottom:solid 1px;padding: 2px;background:#e0e0eb"">&nbsp;" & oDT.Columns(i).ColumnName & "</th>" )
  15.                     End If
  16.                 Next
  17.                 table.AppendLine("</tr>" )
  18.                 Dim row As DataRow
  19.                 For Each row In oDT.Rows
  20.                     isSelected = If(dataSelection = row(colNameIndex), True, False)
  21.                     Dim hrefSelectParameter As String = "href=""OperationSU.ashx?" & "&guid=" & sguid &
  22.                                                 "&indexOperationValue=" & addOperationValue(sguid, username, OperationName, row.Item(colNameIndex)).ToString() &
  23.                                                 "&redir=" & redirect & """"
  24.                     If row.Table.Columns.Contains("color" ) Then
  25.                         table.AppendLine("<tr style=""background:" & row("color" ) & ";"">" )
  26.                     Else
  27.                         If isSelected Then
  28.                             table.AppendLine("<tr style=""background:#99ccff;"">" )
  29.                         Else
  30.                             table.AppendLine("<tr>" )
  31.                         End If
  32.                     End If
  33.                     If isSelected Then
  34.                         style = "height:25px;border-top:solid 1px;border-left:solid 0px;border-right:solid 1px;border-bottom:solid 1px;padding: 3px"
  35.                         table.AppendLine("<td align=""right"" style=""background:#2E2EFE;border-top:solid 1px;border-left:solid 1px;border-right:solid 1px;border-bottom:solid 1px;padding: 2px""><a " & hrefSelectParameter & " ><font size=""2"" color=""black""></font></a></td>" )
  36.                     Else
  37.                         style = "height:25px;border-top:solid 1px;border-left:solid 0px;border-right:solid 1px;border-bottom:solid 1px;padding: 3px"
  38.                         table.AppendLine("<td align=""right"" style=""background:#A4A4A4;border-top:solid 1px;border-left:solid 1px;border-right:solid 1px;border-bottom:solid 1px;padding: 2px""><a " & hrefSelectParameter & " ><font size=""2"" color=""black""></font></a></td>" )
  39.                     End If
  40.                     For j = 0 To oDT.Columns.Count - 1
  41.                         If Not oDT.Columns(j).ColumnName.StartsWith("hide" ) And Not oDT.Columns(j).ColumnName.StartsWith("color" ) Then
  42.                             If IsNumeric(row(j)) Then
  43.                                 table.AppendLine("<td align=""right"" style=""" & style & """><a " & hrefSelectParameter & " ><font size=""2"" color=""black"">" & If(isSelected, "<b>", "" ) & row(j) & If(isSelected, "</b>", "" ) & "</font></a></td>" )
  44.                             Else
  45.                                 table.AppendLine("<td align=""left"" style=""" & style & """><a " & hrefSelectParameter & " ><font size=""2"" color=""black"">" & If(isSelected, "<b>", "" ) & row(j) & If(isSelected, "</b>", "" ) & "</font></a></td>" )
  46.                             End If
  47.                         End If
  48.                     Next
  49.                     table.AppendLine("</tr>" )
  50.                 Next
  51.                 table.AppendLine("</table>" )
  52.                 table.AppendLine("</div>" )
  53.                 Return table.ToString
  54.             Else
  55.                 Return Nothing
  56.             End If
  57.         End Function

Reply

Marsh Posté le 05-10-2017 à 13:42:36   

Reply

Marsh Posté le 10-10-2017 à 07:02:31    

Hello, pas de réponse car la question n'est pas claire ? ou parce qu'il n'y a pas de solution ?

Reply

Marsh Posté le 10-10-2017 à 17:55:20    

Ce n'est pas clair.
Je n'ai aucune idée si ta scrollbar appartient au tableau ou à la page.
Et puis, le code est illisible et ne sert à rien en l'état.
En outre, je ne comprends pas ce que tu fais

Citation :


Sur un clique de cette grille on mémorise le click coté serveur. Au rafraîchissement de la page, la ligne sélectionnée s'affiche en bleu


Pourquoi vouloir rafraichir la page pour mettre une ligne en bleu ?

 

Si par contre, tu veux lors de la visite suivante scroller la page jusqu'à la ligne, tu le fais en javascript.
https://developer.mozilla.org/fr/do [...] w/scrollTo

 

Et si tu ne connais pas très bien le HTML, CSS tu peux employer des kits d'interface. (désolé mais le code de ton tableau n'est vraiment pas bon)
https://purecss.io/tables/ par exemple


Message édité par David Boring le 10-10-2017 à 17:55:56
Reply

Marsh Posté le 11-10-2017 à 06:48:21    

Merci d'avoir pris du temps pour répondre et essayer de comprendre le bordel.
Je rafraîchi la page car je ne sais pas comment mettre en bleu la ligne sélectionner + sauver la valeur coté serveur sans faire de rafraîchissement.
Je truc c'est que les pages contiennent plusieurs grilles, donc il faut faire un scroll-to sur chaque DIV de la page. C'est pour cela que j'aimerai que ce code de scroll-to soit codé dans cette fonction qui génère le code de la table.
 
Est-il possible de mettre une balise sur la ligne sélectionner et de scroller automatiquement sur cette balise ?

Reply

Marsh Posté le 11-10-2017 à 15:02:41    

Tu dois faire de l'ajax
https://developer.mozilla.org/fr/docs/AJAX/Premiers_pas
 
Tu envoies ton code au serveur, et en même temps tu donnes une classe à ta ligne pour la rendre bleu, pas besoin du serveur pour faire cela.
Tu fais cela en javascript, avec un event listener.
 
Et si tu as plusieurs table avec une ligne sélectionné, et bien tu scrolles seulement à la première occurence de ta classe

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed