2008-12-09 6 views
1

Problème: Le client X a demandé que les pages utilisant des tables XML DataBinding et Databound dans MSIE soient réintégrées dans un navigateur croisé.Rendu de table côté client avec des tables de données extrêmement volumineuses

Question: Quelle est la meilleure pratique façon d'imiter la MSIE DataBinding caractéristique de cross-browser MSIE (à savoir, dans les deux MSIE et Firefox).

Caractéristiques: client X obtient déjà le suivant à l'aide MSIE DataBinding dans une seule page Web ...

  • un single-url xml dump dans son intégralité comme source de données (en supposant pas de pagination côté serveur et pas inter-domaines problèmes)
  • de balisage de la page Web qui ne fait rien de plus que de spécifier l'URL de source de données (comme MSIE)
  • la possibilité de charger très grandes tables (par exemple, 3k enregistrements minimum) sans déclenchement javascript « de mémoire » ou « latence » les erreurs du côté client
  • la capacité de les réaliser dans un élément de tableau HTML normale avec la possibilité de la ligne-striping (en option, mais pas nécessaire, car MSIE ne le fait pas déjà)

Contexte: Vous avez probablement être familier avec MSIE DataBinding pour se synchroniser avec cette question particulière. Cette fonctionnalité de MSIE vous permet de pointer vers une seule source de données XML (sans schéma particulier, aussi longtemps que c'est dans une "table" standard) et le navigateur rend les données visuellement et asynchrone. L'avantage de ceci est que la page est rendue rapidement, car le chargement de la page n'attend pas que la totalité de la table soit remplie avant de montrer une sortie à l'utilisateur. Les lignes de la table sont remplies progressivement.

Faux départ: Les éléments suivants ont déjà été tentées et rejetées par le client X.

  • JQuery: fonctionne très bien pour le chargement des données et nettoyage maintenable balisage HTML, mais de grandes sources de données provoquent la latence et problèmes de mémoire lors du rendu côté client
  • XSLT: ce fait peur X client, car il implique beaucoup plus que la spécification d'un attribut « source de données » sur une étiquette de table < >, et semble donc être moins maintenable à son avis
  • Pagination de données côté serveur: ce n'est pas une option car le client X souhaite religieusement éviter de segmenter les données XML ou d'effectuer des "manipulations de données" côté serveur.

Répondre

1

Vous n'avez pas d'autres options que Javascript/XSLT et côté serveur.

Je serais probablement aller avec XSLT, l'argument donné contre elle est tout à fait discutable - « car il implique beaucoup plus que la spécification d'un « source de données » attribut sur une < Table> tag » - * TOUT * solution va être plus complexe que de simplement spécifier une "source de données".

Je ne suis pas sûr cependant si la page chargerait progressivement avec XSLT, les sens d'araignée suggèrent autrement. N'importe qui?A défaut, vous pouvez toujours opter pour une option côté serveur et effectuer également une pagination. Vous obtiendrez toujours le chargement progressif de la page. En ce qui concerne le navigateur, il est juste html ordinaire.

+0

Notez que javascript est définitivement la seule option côté client. La question est plutôt de savoir comment gérer des jeux de données volumineux tout en évitant la mémoire hostile et les restrictions de performance avec un code purement client. – dreftymac

1

Votre meilleur pari est probablement d'utiliser CSS pour obtenir la sortie formatée comme vous le souhaitez.