2010-03-31 12 views
1

J'essaye de peupler GridView, en utilisant EntityDataSource (code derrière), j'ai besoin de pouvoir trier GridView. Mais quand je sorte que je reçois l'erreur: Une propriété avec le nom « aspnet_Users.UserId1 » n'existe pas dans les métadonnées pour le type d'entité Je beleive c'est parce que je produis où le paramètre dans le code derrière:ASP.NET EnqityDataSource WhereParameters, crée une nouvelle propriété

ActiveEnqDataSource.WhereParameters.Add(new SessionParameter("aspnet_Users.UserId", TypeCode.Object, "UserName")); 

Le code complet est:

ActiveEnqDataSource.ConnectionString = db.Connection.ConnectionString; 
      ActiveEnqDataSource.DefaultContainerName = "Entities"; 
      ActiveEnqDataSource.EntitySetName = "Enquiries"; 
      ActiveEnqDataSource.Include = "UserCars.CarModel.CarMake, Category, aspnet_Users"; 

      ActiveEnqDataSource.EnableUpdate = true; 
      ActiveEnqDataSource.EnableInsert = true; 
      ActiveEnqDataSource.EnableDelete = true; 
      ActiveEnqDataSource.AutoGenerateWhereClause = true; 


      ActiveEnqDataSource.WhereParameters.Add(new SessionParameter("aspnet_Users.UserId", TypeCode.Object, "UserName")); 

Des suggestions? Merci beaucoup! La grille elle-même rend parfaitement, seule chose que je ne peux pas trier, tout "whereParameters" j'ajoute, ajouter 1 à la propriété par exemple UserId1, EnquiryStatus1, ProdauctName1. etc ...

+0

WhereParameters sont pour le filtrage, et non pas pour le tri, sont-ils pas? Essayez-vous de trier le GridView avec les LinkButtons dans le GridViewHeader? Si c'est le cas, il serait utile que vous fournissiez une partie de votre balisage GridView. Dans le code que vous avez fourni jusqu'à présent, je ne vois aucun tri. Ou voulez-vous dire que vous obtenez cette erreur dès que vous ajoutez le paramètre WhereParameter? Est-ce que cela fonctionne sans le filtre Where par UserName? – Slauma

+0

Oui, cela fonctionne parfaitement sans clause where qui est pour le filtrage. Le balisage est standard, le tri est activé à l'aide du contrôle "tag". En fait, je l'ai résolu en mettant la clause where dans le balisage, pas de code-behind. Ça marche. Cependant la question est encore, ouverte pourquoi ça ne marche pas du code derrière :) – Alex

Répondre

0

J'ai eu la même erreur lorsque j'ai utilisé le balisage pour définir un paramètre Where ET puis j'ai ajouté le même paramètre dans le code. Quelque part le long de la ligne, le 1 à la fin du nom du paramètre a été ajouté.

1

J'ai rencontré une erreur similaire car j'ajoutais la clause where à chaque fois que la page était publiée. Laissant tomber mon code qui a généré la clause where dans une instruction IsPostBack résolu le problème:

if (!IsPostBack) { 
    // code to add where parameters 
}