2010-02-20 3 views
0

J'ai essayé désespérément de la semaine dernière pour comprendre ce que mon déconnexion est que je ne peux pas envelopper la tête autour de RIA Services. J'ai suivi méticuleusement l'exemple montré dans the Microsoft tutorial video et j'ai toujours des problèmes. Il se peut que j'essaie de faire quelque chose que vous ne pouvez pas faire, mais selon toute vraisemblance, je ne fais que le faire de la mauvaise façon.Silverlight 3 avec RIA Services - jeux de résultats vide/Charger Terminé

Dans le tutoriel, ils utilisent un code très similaire à:

IVCContext ctx = new IVCContext(); 
MyDataGrid.ItemsSource = ctx.ChairOptions; 
ctx.Load(ctx.GetChairOptionsQuery()); 

Ce qui renseigne le DataGrid avec les informations qu'il trouve dans la table ChairOptions.

Mais ce que je voudrais faire est d'avoir un accès direct aux résultats sans avoir à les lier à un DataGrid, ou tout autre contrôle pour cette question. Je voudrais juste obtenir le jeu de résultats, et ensuite opérer sur ce que je veux. Plus spécifiquement, je voudrais regarder ses propriétés (nom, coût, etc) et les relations (groupe, sous-groupe) qui lui sont attachées dans le modèle afin que je puisse effectuer des actions spéciales et modifier le contenu des contrôles. Mais il semble que peu importe ce que j'essaie, j'obtiens un ensemble de résultats vierges.

J'ai essayé des choses comme:

LocalContext ctx = new LocalContext(); 
var ResultSet = ctx.ChairOptions; 
ctx.Load(ctx.GetChairOptionsQuery()); 

Mais ResultSet est toujours vide. Je pense qu'une partie de la raison pour laquelle je n'arrive pas à comprendre cela est parce que je n'arrive pas à trouver exactement ce qui se passe dans l'assignation sur la ligne # 2, et ce que fait la fonction Load() sur la ligne # 3. Dans le premier exemple, cela fonctionne automagiquement, mais j'aimerais vraiment comprendre ce qui se passe.

Merci d'avance pour toute aide ou référence.


Edit:

Il vient de me frapper ce matin que je me suis réveillé ce que le problème pourrait être. Bien que le code le rende très simple et procédural, l'appel Load est réellement asynchrone, n'est-ce pas?

Si c'est exact, la question devient alors, comment puis-je savoir quand il est fini, pour que je puisse fonctionner sur les résultats?


Edit:

Plus de recherche avec cette nouvelle idée m'a amené à this bit of information sur l'attachement callbacks aux opérations de charge individuels. Mais la classe fournie dans ce lien utilise un objet appelé LoadOperation, et bien qu'il apparaisse que LoadOperation se trouve dans l'espace de noms System.Windows.Ria, l'ajout d'une utilisation pour cela ne permet pas à Visual Studio de reconnaître les références à LoadOperation en tant qu'objet, Je ne peux pas construire le projet avec cette classe dedans.

Répondre

0

This class résout fondamentalement le problème. Il vous permet de spécifier un rappel à exécuter lorsque l'opération de chargement est terminée (ainsi que de programmer plusieurs chargements simultanément). Une fois que le rappel est appelé, les données que je voulais étaient disponibles et je pouvais y opérer à ma guise.