2009-06-28 4 views
3

Je suis perplexe!Comment définir par programme des paramètres pour EntityDataSource et DetailsView?

Quelle est la meilleure façon de définir par programme un paramètre de sélection pour le contrôle EntityDataSource? En particulier, je souhaite utiliser le Page.User.ProviderUserKey pour obtenir un enregistrement dans un tableau Détails de l'utilisateur personnalisé que j'ai pour un DetailsView.

J'ai vu du code en utilisant le asp:ControlParameter pour tirer une valeur d'un contrôle, mais cela ressemble presque à un hack pour ma situation. Je ne veux pas de contrôle supplémentaire juste pour définir la valeur du paramètre.

Des idées? Merci d'avance!

Répondre

1

Si vous créez un type de paramètre personnalisé se sent comme trop de travail, vous pouvez programatically ajouter un paramètre de base comme suit:

Parameter parameter = new Parameter("MyParam", TypeCode.String, 
    Page.User.ProviderUserKey); 
MyDataSource.SelectParameters.Add(parameter); 

Quelque chose comme cela devrait vous donner ce dont vous avez besoin.

+0

Ceci donne seulement à l'objet Parameter une valeur par défaut de ProviderUserKey – Aperture

1

Vous pouvez créer votre propre paramètre personnalisé:

<my:CustomParameter Name="MyParam" /> 

Les détails sur la façon de mettre en œuvre un paramètre personnalisé peut être trouvé sur Fredrik Normén's Blog. L'utilisation d'un paramètre personnalisé est aussi simple que l'utilisation de l'un des types de paramètres intégrés, mais un exemple rapide peut être trouvé sur ScottGu's Blog.

La simple mise en œuvre ressemblerait à quelque chose comme ceci:

public class CustomParameter : Parameter 
{ 
    protected override object Evaluate(HttpContext context, Control control) 
    { 
     // This is where you would grab and return 
     // the Page.User.ProviderUserKey value 
     return string.Empty; 
    } 
} 
Questions connexes