2010-11-25 7 views
0

J'ai une question très simple à poser:C# TreeView et zone de texte

J'ai une page Web C# qui a une vue arborescente sur le côté gauche et neuf zones de texte sur le côté droit.

La vue arborescente est remplie à partir de milliers de lignes d'une table SQL contenant 9 colonnes.

Le but: Au clic d'un élément de vue arborescente, mettez à jour les neuf zones de texte et affichez chacune des valeurs de la colonne.

Quelle est la meilleure façon de le faire? Dois-je récupérer toutes les données sur le chargement de la page dans une table de données temporaire et interroger la table de données C# sur le clic d'une arborescence? Ou devrais-je envoyer une instruction select à la table sql lors d'un clic sur l'élément de l'arborescence? Ou y a-t-il un meilleur moyen?

Cette solution sera utilisée par plus de 15 utilisateurs et la performance est un facteur clé.

Merci,

FM

Répondre

1

Si l'arborescence est la même pour tous les utilisateurs de votre application que

1- Sur votre événement Démarrage de l'application, remplissez les données dans un dataable et stocker dans la variable d'application.

2- Utilisez l'application créée ci-dessus pour interroger la base de données qui y est stockée.

3- Lorsque vous cliquez sur un nœud dans l'arborescence, affichez les détails en interrogeant les données stockées.

cette approche fonctionnerait bien, si la vue arborescente n'est pas spécifique à l'utilisateur, ce qui vous permettra d'obtenir les avantages de performance en minimisant les déplacements de la base de données.

1

J'utiliseraient le Server Cache pour stocker DataTable. L'arborescence est la même pour tous les utilisateurs et le cache contient des références à l'échelle de l'application sur des objets tels qu'un DataTable.

ajouter:

Cache["MyTreeviewDataTable"] = MyTreeviewDataTable; 

récupérer:

DataTable MyTreeviewDataTable = (DataTable)Cache["MyTreeviewDataTable"]; 

Mise à jour: Vous devriez aussi jeter un oeil sur les SqlDependency et SqlCachDependency Classes de notifier des modifications de données.

Query Notifications in SQL Server (ADO.NET)

+0

Ok, merci. Cela signifie qu'il est préférable de créer un objet mémoire plutôt que d'exécuter la commande sql chaque fois qu'un utilisateur clique sur un élément. – InfoLearner

+0

En tout cas! La cache s'adapte parfaitement à vos besoins. Il est créé une seule fois au démarrage de l'application et dure jusqu'à ce que toutes les sessions soient détruites (ou si iis est redémarré). Vous devez seulement vous assurer que vous modifiez également le Datatable en mémoire lorsque vous apportez des modifications à TreeView. Vous pouvez le mettre f.e. dans une propriété de votre MasterPage ou partout où vous avez accès à partir de toutes les pages dont vous avez besoin pour utiliser TreeView. Vous pouvez vérifier si elle est NULL, puis la charger à partir de la base de données. –

+0

Si l'utilisateur met à jour une ligne et soumet la modification à la base de données, tous les autres utilisateurs mettront à jour les données obsolètes, ce qui ne serait vraiment pas utile. Dans ce cas, l'exécution de l'instruction sql sur chaque élément de la vue arborescente permet-elle de choisir un meilleur choix? – InfoLearner