2010-10-11 24 views
0

Mon but est de permettre à l'utilisateur de saisir des données d'en-tête et de détail et de les sauvegarder en un seul clic , dans une transaction, la sauvegarde est tout ou rien.ASP.Net maître/détail w/Liaison de données aux objets DataSource - insertion multiple avec des principes tout ou rien

Par exemple:

Tables:  
    OrderHeader: 
     Id, 
     CustomerId, 
     Comments, 
     OrderDate, 

    OrderLine 
     Id, 
     OrderId FK => OrderHeader 
     ProductId, 
     Quantity 

Markup (abbreviated): 
<asp:FormView ID="uxFormHeaderInfo" runat="server" DataSourceID="headerDataSource"> 
<InsertItemTemplate> 
    <%--Header Fields--%> 
       ..... 
    <asp:GridView ID="uxDetails" runat="server" DataSourceID="detailsDataSource"> 
    <%-- Markup --%> 
       ..... 
    </asp:GridView> 
    <asp:Button ID="uxSave" runat="server" CommandName="Insert" /> 
</InsertItemTemplate> 
</asp:FormView> 

Dans la page que je voudrais avoir le contrôle FormView qui contiendra les champs d'édition pour CustomerId et commentaires, aussi j'aurais un GridView imbriqué ou listview que je pourrais ajouter des éléments de ligne à. Les contrôles FormView et gridview sont très probablement liés à des contrôles de sources de données indépendants. Ce que je veux arriver, c'est que l'utilisateur entre les informations d'en-tête et les éléments de campagne et clique sur Enregistrer une seule fois en bas de l'écran. Est-ce même possible en utilisant les objets LinqDataSource ou ObjectDatasource?

Si oui pourriez-vous me montrer un bon exemple qui montre comment faire cela dans l'insert de style master/detail qui frappe 2 tables ou plus avec un simple clic sur un bouton? Merci d'avance.

[Modifier]

Après avoir examiné les évaluations et la recherche autour de ce sujet, j'ai conclu que les contrôles de source de données ne sont que le mauvais outil pour le travail. Puisqu'ils ne peuvent pas vraiment traiter un cas aussi piétonnier que cela, cela remet vraiment en question leur utilité à mon humble avis. Tellement pour la nouvelle façon ...

+0

Vous devez expliquer plus. ce n'est pas clair ce que vous voulez exactement. – Jeroen

+0

@Jeroen - S'il vous plaît voir mon dernier edit j'espère que cela va clarifier ce que j'essaie d'atteindre. – James

Répondre

1

Je ne pense pas que cela fonctionnera avec un DataSource. Du moins pas que je sache. Je gérerais l'opération Save moi-même. Dans l'événement Click de votre bouton de sauvegarde, lisez les valeurs entrées par l'utilisateur, encapsulez-le dans une transaction et appelez vos fonctions commerciales.

+0

Je m'en doutais un peu, c'est une solution que j'ai toujours utilisée dans le passé pour des problèmes comme ceux-ci. Il est très décevant de tous les efforts et louant que Microsoft a mis dans leurs derniers contrôles de liaison de données, qu'ils ne peuvent vraiment pas résoudre un problème de piétons comme celui-ci. – James