2010-10-29 6 views
4

J'utilise Visual Studio 2008, j'ai inclus une classe dans le dossier AppCode et souhaite utiliser ses fonctions dans ObjectDataSource.ObjectDataSource n'affiche pas d'objets de données dans la configuration de la source de données

+0

Je sais que cela est vieux, mais j'eu un problème similaire. Mon problème était avec un projet de site Web. J'oublie toujours quel est le problème, mais pour moi, je devais m'assurer que le site Web utilisait le serveur Web de Visual Studio et non IIS. A dû fermer puis rouvrir le studio visuel. Je ne sais pas si la même chose s'applique à une solution de site Web. – pqsk

Répondre

1

Si vous avez essayé tout ce qui précède, alors c'est le problème de votre machine peut être votre machine ne supporte pas cela.

+0

J'ai eu le même problème - redémarrer Visual Studio l'a résolu. – trapsuutjies

1

Vous pouvez toujours saisir manuellement le nom de l'objet dans le ObjectDataSource, au format:

namespace.classname, App_Code

App_Code travaille pour des projets de site web; sinon, spécifiez le nom de l'assembly du projet Web si le modèle de projet d'application Web.

HTH.

+0

Buddy, son déjà dans le même assemblage, puis aussi son ne pas apparaître – Genius

+1

Mec, parfois le concepteur ne fonctionne pas, mais si vous tapez le nom, les autres caractéristiques comme les méthodes à configurer pour la sélection, l'insertion, etc. Sinon, vous devrez peut-être ajouter manuellement tout ... Si vous utilisez un projet de site Web, vous devez vous référer à l'assembly en tant que App_Code, mais vous ne le faites pas s'il s'agit d'un projet d'application Web. –

1

Vous devrez peut-être marquer votre classe et vos méthodes avec certains attributs pour qu'ils s'affichent dans le concepteur. Regardez DataObject et DataObjectMethod.

+0

Buddy, je l'avais fait tout mais alors aussi son ne fonctionne pas – Genius

2

Dans ASPX

<asp:GridView ID="GridView1" 
    AutoGenerateColumns="true" 
    DataSourceID="ObjectDataSource1" runat="server"> 
</asp:GridView> 

<asp:ObjectDataSource ID="ObjectDataSource1" 
    SelectMethod="GetCustomers" 
    TypeName="MyNamespace.CustomerManager" 
    runat="server"></asp:ObjectDataSource> 

Dans .cs (intérieur App_Code)

namespace MyNamespace 
{ 
    public class Customer 
    { 
     public string Name { get; set; } 
    } 

    public class CustomerManager 
    { 
     public List<Customer> GetCustomers() 
     { 
      List<Customer> cust = new List<Customer>(); 
      Customer c = new Customer(); 
      c.Name = "sampleName"; 
      cust.Add(c); 
      return cust; 
     } 
    } 
} 

Après cela, j'ai pu voir les détails des clients dans le GridView.

1

J'ai eu le même problème, a fini par fixer en ajoutant App_Code à TypeName ... simple solution, mais a pris beaucoup de temps pour le réaliser. (De exemple)

<asp:ObjectDataSource ID="ObjectDataSource1" 
    SelectMethod="GetCustomers" 
    TypeName="MyNamespace.App_Code.CustomerManager" 
    runat="server"> 
</asp:ObjectDataSource> 
+0

Ce n'est pas l'emplacement du dossier en soi, mais plutôt l'espace de noms. Par convention, ils sont les mêmes, mais pas nécessairement. En fin de compte, c'est le fait que c'était l'espace de noms correct qui l'a fait fonctionner, pas le fait qu'il se trouvait dans ce dossier. – as9876

-1

Peut-être que vous ouvrez « Projet » au lieu de « site Web », je ne sais pas pourquoi l'objet de données ne me montre lors de l'ouverture comme « Projet ». A

+0

Je peux voir que c'était votre première réponse à une question, donc vous n'avez pas eu le représentant de l'afficher comme un commentaire, mais à l'avenir, vous pourriez envisager de poster ceci comme un commentaire. Les réponses sont censées être une solution au problème que vous êtes assez confiant pour résoudre le problème. – Fluffeh

0

Mouldie oldie Q & A mais je viens de trébucher sur ce fil tout en ravageant mon cerveau sur cette question. Ma solution était de faire en sorte que les classes liées soient toutes publiques.

0

J'ai été dirigé vers cette question parce que j'avais un problème similaire. Ma résolution provient de la réponse suivante, fournie par StevenMcD:

Cliquez avec le bouton droit sur le fichier .cs dans le dossier App_Code et vérifiez ses propriétés.

Assurez-vous que "Action de construction" est réglé sur "Compiler".

Classes residing in App_Code is not accessible

Questions connexes