2009-11-13 7 views
6

Je travaille sur une page ASP.NET, qui est essentiellement un hack rapide autour d'une base de données. Il est utilisé pour un projet interne et le site est configuré de manière à permettre à plusieurs personnes d'accéder en lecture/écriture aux données. Une fois par semaine, nous collectons un tas de données, l'ajoutons à un fichier XML et l'envoyons dans le cadre d'une mise à jour d'application à nos clients. (Ces clients n'ont pas d'accès direct.)Lors de la création d'un nouvel enregistrement, comment remplir certains champs avec des valeurs provenant du filtre?

Comme il s'agit d'un projet interne, il n'y a presque pas de budget disponible pour son développement. Nous avons donc choisi de garder les choses simples. Nous avons stocké les données dans une base de données SQL Server, créé une classe Entity Framework autour de cela pour l'accès aux données et nous avons mis une application Web Dynamic Data Site autour de cela. Fondamentalement, quelque chose qui peut être mis en place rapidement et sans écrire beaucoup de code. Cela fonctionne très bien aussi. En particulier, le filtrage des enregistrements via les champs booléens et les références de tableaux est vraiment cool. Cependant, lors de la saisie de données, quelques utilisateurs font des erreurs mineures. Ils ont configuré les filtres pour simplement filtrer un sous-ensemble d'une table, puis cliquez sur "Nouveau" pour ajouter un enregistrement à ce sous-ensemble. Malheureusement, le nouvel enregistrement ne correspond pas aux valeurs de ces filtres, ce qui oblige les utilisateurs à redéfinir les bonnes valeurs. Dommage qu'ils manquent parfois cela, donc certains enregistrements se retrouvent avec les mauvaises valeurs. Donc, lorsqu'un utilisateur crée un nouvel enregistrement, comment puis-je m'assurer que ce nouvel enregistrement copiera les valeurs du filtre par défaut? (Et toujours permettre à l'utilisateur de choisir d'autres valeurs!)

+1

Je vais être honnête, Je serais surpris si c'était possible. +1 pour une question intéressante par contre :) –

+0

Eh bien, si je ne le demande pas, je ne le ferais jamais fonctionner. :-) –

+0

Il est possible et aurait dû être dans la version 1 - on dirait qu'il arrive dans le futur. –

Répondre

1

Questions traitées ici: Dynamically set defaults for scaffolded tables according to dynamic filters

contrôle dynamique à terme de données "Populate Insérer des modèles avec des valeurs de filtres": http://www.codeplex.com/aspnet/Release/ProjectReleases.aspx?ReleaseId=14475

De plus, ce billet de blog par Stephen Naughton: http://csharpbits.notaclue.net/2009/01/getting-default-values-from-list-page.html

+0

Le lien "Dynamic Data Futures" a été extrêmement utile! –

0

Je voudrais utiliser un Object Factory accroché dans le bouton Nouveau sur un clic. J'initialiser le Factory avec les valeurs Filter ou une interface à la vue afin que l'usine puisse renvoyer les objets correctement initialisés.

1

Y a-t-il un événement qui se déclenche lors de la création d'un nouvel enregistrement? Si vous pouvez implémenter un gestionnaire d'événements et que vous pouvez accéder par programmation à l'ensemble actuel de filtres, dans votre gestionnaire d'événements newRecord(), vous devriez pouvoir parcourir chacun de vos filtres actuels, déterminer dans quel champ le filtre est pour, et quelle est la valeur du filtre, définissant le champ du nouvel enregistrement à la valeur du filtre.

Voici quelques pseudo-code si elle aide:

NewRecordHandler(object sender, NewRecordEventArgs e) 
{ 
    Record newRecord = (Record)e.NewRecord; 
    foreach(Filter filter in m_dataSource.Filters) 
    { 
     newRecord[filter.FieldName] = filter.Value; 
    } 
} 

Vous devez être en mesure d'accéder dynamiquement les propriétés des enregistrements, en utilisant un index ou d'une chaîne, comme Record["ColumnName"] = value;. Sinon, vous ne pourrez peut-être pas le faire en boucle, comme illustré. J'espère que cela t'aides.

+0

Bonne question, puisque j'utilise la fonctionnalité par défaut que VS2008 offre avec le code "Dynamic Data Site". Malheureusement, il ne le fait pas par défaut et n'a pas eu beaucoup de temps pour chercher une solution. (À l'heure actuelle, il s'agit simplement d'un outil sympa qui sera ajouté une fois que je connaîtrai une solution.Nous ne recherchons pas activement, car les autres tâches ont une priorité plus élevée. –