2009-09-17 12 views
3

J'ai un certain nombre de tables avec beaucoup de colonnes que j'utilise Dynamic Data avec. Je veux seulement montrer un petit sous-ensemble des colonnes.Comment définir [ScaffoldColumn (false)] comme valeur par défaut pour les données dynamiques?

Actuellement, lorsque Dynamic Data échafaudage un tableau, il crée toutes les colonnes sauf si j'ai défini [ScaffoldColumn (false)] sur false. Cela fonctionne mais comme je ne veux afficher qu'un petit sous-ensemble des colonnes, il serait plus facile de les activer plutôt que de les désactiver.

Existe-t-il un moyen de modifier le comportement par défaut afin qu'une colonne ne soit pas échafaudée à moins que je le dise?

Répondre

3

Je ne connais pas un moyen de le faire hors de la boîte. Cependant, vous pouvez créer votre propre attribut personnalisé pour le faire.

Voici quelques exemples sur la façon de créer un attribut personnalisé pour contrôler la façon dont fonctionne DD:

http://csharpbits.notaclue.net/2009/04/hiding-foreign-key-column-globally-in.html - Exemple de création d'un attribut pour cacher la colonne de clé étrangère pour toutes les tables.

http://csharpbits.notaclue.net/2008/10/dynamic-data-hiding-columns-in-selected.html - Exemple d'un autre attribut pour masquer une colonne mais appliqué au niveau de la page.

Je vois le premier où il est défini au niveau de la table peut-être votre meilleur pari. Vous pouvez créer votre propre attribut dites HideFieldsByDefault et le définir sur true.

Vous devez ensuite ajouter les champs que vous souhaitez afficher avec ScaffoldColumn à true et dans le code de la méthode GenerateFields de IAutoFieldGenerator, vous devez rechercher votre attribut personnalisé et votre code en conséquence et si votre attribut n'était pas leur utiliserait simplement la méthode DD par défaut.

Vous pourriez également être en mesure de le faire avec votre propre fournisseur de métadonnées:

http://mattberseth.com/blog/2008/08/dynamic_data_and_custom_metada.html

Sur celui-ci, je ne sais pas exactement comment vous pouvez le faire avec un fournisseur personnalisé, mais peut-être un peu la recherche le révélera comme une bonne option.

+0

Merci pour votre réponse. Je vais essayer si personne ne revient avec un moyen de le faire. –

+0

Je suis assez sûr que cela fonctionnerait, mais c'était un peu compliqué pour moi. Donc pour cela et quelques autres raisons, j'ai décidé d'utiliser .NET MVC à la place. C'est juste un meilleur match pour le projet sur lequel je travaille. –

Questions connexes