2009-08-18 8 views
1

Je suis très nouveau dans le monde de jQuery et je me pose peut-être une question assez triviale ici. Je suis curieux de savoir ce que la communauté considère comme la meilleure pratique pour un objet de databound avec la fonctionnalité jQuery.jQuery dans un répéteur

À titre d'exemple précis, j'ai actuellement créé un répéteur lié à une liste d'objets. Chaque objet possède des propriétés telles que "lien", "miniature", "sous-texte", etc. Il s'agit d'un petit répéteur (< 10 éléments à tout moment). Lorsqu'un utilisateur clique sur "lien", une zone distincte de la page est mise à jour pour refléter cet objet.

Les approches que je l'ai découvert à ce jour concernent:

  • créer dynamiquement le script jQuery nécessaire du C# codebehind
  • Création d'un service JSON pour répondre à la demande de lien et renvoyer l'objet à charger (un coup supplémentaire de base de données peut-être pas nécessaire)
  • Pour créer dynamiquement un JS Struct dans le C# behind (similar struct)

I Je suppose que la raison principale pour éviter un service JSON dans ce scénario est que les objets ont déjà été liés une fois après avoir été renvoyés de la source de données. Je ne suis pas sûr si un autre coup de db est justifié, mais je suis ouvert à toutes les suggestions.

Répondre

1

La création dynamique du script jQuery nécessaire à partir du code C# peut être inutile car le code JQuery ne doit pas être modifié. Gardez à l'esprit que JS discret est ce que jQuery est en grande partie.

J'imagine que la seule pièce de JS ressemblerait à quelque chose comme ceci:

$('.link-class', '#repeater-id').click(function(){ 
    // Get the id of the link or the target using $(this).attr('id') 
    // Show a page section or call a service using the the discovered ID. 
}); 

Vous pouvez utiliser le premier commentaire à retirer les données nécessaires pour identifier les données que vous souhaitez afficher.

Le deuxième commentaire peut être un appel Ajax ou un basculement vers une autre section de votre page. Si ces données sont volumineuses, je serais enclin à l'Ajax. Sinon, je le garderais sur la page et je l'activerais ou non.

Si vous pensez que les utilisateurs seraient plus enclins à cliquer sur plusieurs des liens, alors je pondérerais l'option non-ajax un peu plus favorablement même si la page était un peu plus lourde. Surtout si l'utilisateur peut revenir à un lien précédemment cliqué.

Est-ce que cela a du sens? Heureux d'élaborer plus loin ...

+0

Cela a du sens et est élégant pour l'événement click. Seul un petit nombre d'informations est en cours de chargement dans la page, donc je ne suis pas brisé sur le chargement en une seule fois sur la charge initiale. Une question que j'ai est avec les données supplémentaires attachées à chaque objet (à savoir, "Subtext"). Dans l'événement itemdatabound, item.Subtext est facilement disponible, mais je ne sais pas comment joindre ces informations supplémentaires. –

+0

Cela semble être la meilleure voie à prendre, j'ajoute une nouvelle question pour s'attaquer à la pièce d'attribut personnalisé. Je suis un grand fan de Javascript ne devant pas être généré (ou n'importe quel code étant généré d'ailleurs) –

+0

Hi Alexis. Merci pour la tique :). Avec le problème de sous-texte, je produirais cela comme un champ caché ou un élément HTML que je style comme caché. Ensuite, créez un sélecteur qui peut le trouver lorsque vous en avez besoin. Peut-être de la même façon qu'avant, var subText = $ ('entrée # subTextID' + id, '# repeater-id'). Val(); –

0

Je suppose que cette liste contient quelques détails de base sur certains éléments et lorsque vous cliquez sur un élément, vous voyez plus de données sur cet élément particulier.

Je choisirais certainement les choix un (jQuery dynamique) ou deux (service JSON) en fonction de la différence de taille de la page rendue. Si nous parlons d'une différence de l'ordre de 10 Ko, j'irais avec jQuery dynamique et juste avoir toutes les données prêtes à partir. Si c'est beaucoup plus que cela, utilisez un service JSON.

Il n'y a rien de mal avec une requête DB supplémentaire et les retards qu'elle implique lorsque l'utilisateur l'attend. Si quelqu'un clique sur un élément de la page Web, il se passera moins d'une demi-seconde et peut-être un peu plus d'une seconde si vous êtes assez gentil pour dire «veuillez attendre» pour signaler qu'un retard notable est Ordinaire.

Questions connexes