2009-03-03 7 views
2

J'essaie de lier un gridview à une requête linq to sql qui utilise une procédure stockée. Lorsque je cours la page, j'obtiens l'erreur suivante:L'obtention de 'Source de données est un type invalide' lors de la liaison Linq query to Gridview

La source de données est un type non valide. Il doit s'agir d'une source IListSource, IEnumerable ou IDataSource.

var db = new TableItemDataContext(); 
var q = db.sp_SearchForItems("1","2","3","4"); 
GridView1.DataSource = q; 
GridView1.DataBind(); 

Une idée?

Répondre

3

Utilisez la méthode d'extension ToList() pour convertir la requête en liste d'éléments.

GridView1.DataSource = q.ToList(); 

Cela aura également pour effet d'exécuter la requête au moment de la conversion, de sorte que vous voudrez peut-être voir si tout jeter à IEnumerable fonctionnerait.

Modifier: pour clarifier en fonction de la piste de commentaires. Le problème vient de la construction du SPROC et de l'incapacité de LINQ à détecter la valeur de retour. La modification du SPROC selon Stored Procedure & LINQ, Dmbl File unable to interpret the result set a permis à LINQ de détecter le schéma après lequel le SPROC a pu être rétabli.

+0

Merci pour la réponse rapide! J'ai utilisé ToList() et je n'ai pas eu d'intellisense (mais j'ai utilisé System.Linq) et quand compilé, "int" ne contient pas de définition pour 'ToList' et pas de méthode d'extension 'ToList' acceptant un premier argument de type int pourrait être trouvé. " Des idées? –

+0

Linq ne doit pas pouvoir déterminer le schéma de la table renvoyée par votre procédure stockée et pense qu'il renvoie un int. Je sais qu'il existe des problèmes avec les procédures stockées qui contiennent des tables temporaires. Lien vers la question dans le prochain commentaire ... – tvanfosson

+0

http://stackoverflow.com/questions/521736/stored-procedure-linq-dmbl-file-unable-to-interpret-the-result-set - si vous pouvez l'obtenir pour fonctionner, il peut être en mesure de prendre la requête directement sans le ToList(). – tvanfosson

Questions connexes