6
votes

.NET 4.5 WebForms: est-ce que je (toujours) doit vraiment spécifier tous les 3 modèles dans un formulaire de formulaire?

Enquêter sur la nouvelle approche de reliure de modèle fortement typée de l'ASP.NET 4.5 WebForms:

in Exemple de Scott Hanselman de WebForms Modèle de liaison (parmi d'autres) J'ai vu l'utilisation d'un formulaire qui s'ouvre dans le mode" Modifier ", contenant un certain nombre de dynamiccontrols code> par exemple p >

<asp:FormView runat="server" ID="MyForm" ... DefaultMode="Edit">
  <EditItemTemplate>
    <asp:DynamicControl runat="server" ID="Field1" DataField="Field1" Mode="Edit" />
    <asp:DynamicControl runat="server" ID="Field2" DataField="Field2" Mode="Edit" />
  </EditItemTemplate>
</asp:FormView> 


0 commentaires

3 Réponses :


0
votes

Il suffit de définir AUTOGENEREDITTBUTTON = "vrai". Tous les types d'entrée dans votre modèle d'élément seront alors modifiables. Vous devrez peut-être afficher / masquer la bordure des zones de texte et l'autre type d'entrée à l'aide de JQuery.


0 commentaires

1
votes

Non, vous n'avez pas à spécifier tous les 3 modèles. J'ai eu le même scénario et c'est ma solution:

  • Définissez le mode par défaut sur le mode le plus souvent utilisé LI>
  • Ensuite, dans le code derrière la forme gère le mode de formulaire li>
  • dans le code derrière copier le modèle par exemple. EDITTETEMPLET Vous avez microcode à l'autre que vous avez besoin p>

    protected void Page_Init()
    {
        var action = RouteData.Values["action"].ToString();
    
        switch (action)
        {
            case "add":
                personForm.ChangeMode(FormViewMode.Insert);
                this.Page.Title += " Add";
                break;
            case "edit":
                personForm.ChangeMode(FormViewMode.Edit);
                this.Page.Title += " Change";
                break;
            default:
                personForm.ChangeMode(FormViewMode.ReadOnly);
                break;
        }
    
        // Reuse inserttemplate for editing
        if (personForm.CurrentMode == FormViewMode.Edit)
        {
            personForm.EditItemTemplate = personForm.InsertItemTemplate;
        }
    
    }
    


0 commentaires

1
votes

Contrairement à ce que beaucoup de gens croient, vous n'avez besoin que de one Modèle dans un formulaire, l'EdiTeTemTemplate.

ci-dessous est un exemple simple montrant comment le faire (avis que cela n'est pas connecté à l'idée de "données dynamiques".).

De cette façon de le faire, le mode lisonly n'est jamais utilisé, et donc un élément téméraire n'est pas nécessaire. Et le formulaire utilisera l'éditionTemTemplate pour l'édition et l'insertion.

De cette façon de le faire simplifie beaucoup le balisage, et lorsque vous avez des réglages à la disposition, il vous suffit de le faire dans un seul modèle.

Notez que la sauvegarde -Button n'a pas de command nom. La commande est à la place déterminée dans l'événement FormView1_ItemCommand (voir code).

remarquez également que le mode du formulaire est déterminé dans l'événement sqldatasource1_selecté (voir ce code, avec des commentaires).

Je n'ai pas inclus le balisage de Sqldatasource1, car il n'y a rien de spécial que vous devez réfléchir à celui-là. Il suffit de le faire comme d'habitude. xxx xxx


0 commentaires