2009-02-03 5 views
2

Si je crée un contrôle utilisateur (EDIT: pas un contrôle web/un contrôle serveur), il est plutôt trivial d'obtenir une liaison de données. Je viens d'ajouter une propriété datasourceID.Comment obtenir un rendu de surface de conception et une sélection de source de données avec un contrôle utilisateur asp.net

Dans le code derrière (vb)

Partial Public Class BandedControl 
    Inherits UserControl 

    Public Property DataSourceID() As String 
     Get 
      Return MyGridView.DataSourceID 
     End Get 
     Set(ByVal value As String) 
      MyGridView.DataSourceID = value 
     End Set 
    End Property 

End Class 

Dans le code derrière (C#)

public partial class BandedControl : UserControl 
{ 

    public string DataSourceID { 
     get { return MyGridView.DataSourceID; } 
     set { MyGridView.DataSourceID = value; } 
    } 
} 

Mon problème est que ce temps de repos de conception de rendu et aussi je ne suis pas une liste déroulante choisir ma source de données. Comment résoudre ça. (Indice: je pense avoir besoin d'un convertisseur de type, mais toutes les informations que je peux trouver se rapportent aux commandes du serveur et non aux commandes de l'utilisateur).

Répondre

2

Vous pouvez essayer d'ajouter l'attribut IDReferenceProperty à votre définition de la propriété ...

public partial class BandedControl : UserControl 
{ 
    [System.Web.UI.IDReferenceProperty(typeof(DataSourceControl))] 
    public string DataSourceID 
    { 
     get 
     { 
      return MyGridView.DataSourceID; 
     } 
     set 
     { 
      MyGridView.DataSourceID = value; 
     } 
    } 
} 

Voir http://msdn.microsoft.com/en-us/library/system.web.ui.idreferencepropertyattribute.aspx pour plus d'informations sur la classe IDReferencePropertyAttribute.

Si cela ne fonctionne pas, j'essaierais aussi d'hériter de DataBoundControl au lieu de UserControl et de voir si cela vous mène n'importe où.

+0

Merci, mais cela ne fonctionne pas pour les contrôles utilisateur, ce que j'essaie d'utiliser. Si j'hérite de DataBoundControl, je ne serai plus un contrôle utilisateur et je perdrai la possibilité d'utiliser le concepteur de contrôles, ce que j'essaie d'éviter. –

+0

Ouais - je pense que vous aurez besoin de le faire en tant que TypeConverter. Peut-être un typeconverter personnalisé qui va tirer les contrôles de la source de données à partir de la page sur laquelle il est activé plutôt que du contrôle lui-même. –

1

Les UserControls Web sont compilés dynamiquement au moment de l'exécution et ne sont donc pas rendus au moment du Design, ce que vous voulez faire est de créer un Web Custom Control. Votre meilleur pari ici est d'étendre l'un des contrôles Web Bindable existants

http://msdn.microsoft.com/en-us/library/aa651710(VS.71).aspx

+0

Merci pour la recherche. Mais si la source de données est dans le contrôle de l'utilisateur, alors le contrôle * est * rendu sur la surface de conception dans VS2008 (je pense qu'il s'agit d'une nouvelle fonctionnalité VS2008). Cet article se réfère à VS.NET (2003), donc je peux peut-être encore être en mesure de le faire avec les contrôles de l'utilisateur ... ??? –

+0

Désolé, je n'ai pas exp avec vs2008 mais honnêtement, je pense qu'il peut être plus facile pour vous de passer du temps et de créer un contrôle personnalisé, puis d'attendre une réponse. Peut-être que cela aidera http://weblogs.asp.net/scottgu/archive/2005/12/04/432319.aspx – CalvinR

+0

Il n'y a pas de besoin imminent pour cela, je commence un projet web d'un mois (j'espère!) Dans Mars, je fais actuellement des trucs Winforms sur lesquels j'ai plus d'expérience et je suis juste en train de tester mes options. J'attendrai d'autres réponses et si cela ne peut pas être fait (ou personne ne sait comment le faire) alors je reconsidérerai. –

0

Je ne sais pas si c'est exactement ce que vous voulez, mais je me souviens de leur montrer quelque chose de similaire à cela dans certains épisodes tv dnr.

Je pense qu'il était Miguel Castro épisodes 1 & 2, mais il pourrait être l'épisode 31.

Une archive de toutes les vidéos est here

+0

Merci de les voir maintenant. Mais je pense que ce sont des contrôles web/contrôles serveur pas les contrôles de l'utilisateur .... –

+0

Je suis sûr que vous ne pouvez pas faire ce que vous voulez avec un contrôle utilisateur et devez utiliser le contrôle web/serveur – Remmus

+0

Ouais, je suis parvenir à la même conclusion. Ce qui est dommage. –

Questions connexes