2009-08-18 11 views
1

J'ai besoin d'exposer certains champs d'entrée en fonction des propriétés que je trouve pour des types particuliers dans un assemblage. Je ne suis pas sûr de la façon dont une telle approche est commune. Il y a peut-être des moyens plus faciles. Peut-être du côté client au lieu du serveur.Création d'une interface utilisateur dynamique avec C#?

Si quelqu'un connaît une bonne façon de faire quelque chose comme ça, j'apprécierais l'aide.

Créer des contrôles de saisie en conséquence et simple ajouter un contrôle à un conteneur div? Je ne suis pas sûr que ce serait plus complexe que cela. Je vais devoir ajouter en quelque sorte des classes css aux contrôles en les construisant pour qu'ils soient bien placés; cela pourrait être difficile.

+1

De quelle langue côté serveur travaillez-vous? – Sampson

+0

Je travaille avec le langage C# ........ – topwik

+0

@Jonathan Sampson: D'accord. Tout langage côté serveur fera ce que veut faire @towps ... mais le comment est 100% dépendant de la langue. – Randolpho

Répondre

0

J'ai fini par tirer parti de jQuery.

J'ai disposé un balisage simple avec la disposition de base dont j'aurais besoin.

Pour créer des contrôles dynamiquement, j'ai tout fait en javascript en utilisant les méthodes jQuery. Cela nécessite bien sûr de renvoyer un certain nombre de données à l'interface utilisateur de manière suffisamment intelligente pour pouvoir le restituer.

+0

Bien sûr, bien que ce ne soit pas en C#, j'ai trouvé que c'était un meilleur moyen. – topwik

1

Tout cela ressemble au développement standard d'asp.net. Tout bon tutoriel devrait pouvoir vous aider. Pour les contrôles du serveur ASP, vous utilisez la propriété CssClass pour définir la classe du contrôle.

Voici le asp.net tutorial des écoles du W3C.

+0

convenu, tout le but de la programmation Web est de rendre les contrôles dynamiques basés sur certaines conditions. –

0

Je suppose que vous utiliserez la réflexion pour déterminer quelles propriétés ont l'entité, alors vous feriez en fonction du type de propriété créer un champ de saisie. Vous devez créer un contrôle dynamique pour gérer les entrées dans le code. Assurez-vous de donner ce contrôle et votre identifiant. Vous devrez recréer ces contrôles sur le retour. Cela me semble être un éditeur de propriétés dynamiques. Il pourrait y en avoir des gratuits, google pour ça.

0

Si l'interface utilisateur n'a pas besoin d'être complètement dynamique, vous pouvez inclure tous les contrôles dans le balisage avec ceux facultatifs définis sur Visible = "false". Ensuite, activez sélectivement les contrôles appropriés dans votre code-behind. Par exemple:

Default.aspx

<asp:Button ID="EvenButton" runat="server" Text="Even" Visible="false" /> 
    <asp:Button ID="OddButton" runat="server" Text="Odd" Visible="false" /> 

Default.aspx.cs

protected void Page_Load(object sender, EventArgs e) 
    { 
     String msg = "A message to count"; 

     if (msg.Length % 2 == 0) 
     { 
      // Enable the Even Button 
      EvenButton.Visible = true; 
     } 
     else 
     { 
      OddButton.Visible = true; 
     } 
    } 

L'avantage de cette méthode est que vous pouvez mettre les choses avec le CSS approprié facilement dans le balisage. Si, par contre, votre interface utilisateur est beaucoup plus dynamique, vous devrez probablement créer dynamiquement des contrôles dans le code-behind et les ajouter à la page via des appels à Controls.Add(). De cette façon, cependant, est plus difficile à mettre en page. Et vous devez faire face à des choses comme re-câblage des gestionnaires d'événements sur chaque publication.

Espérons que ça aide.

Questions connexes