Bonjour tout le monde,

Je suis en train de développer une application web : ASP.NET webforms 4.5.2., pour faire simple, mon problème est :
Lorsque l'utilisateur ajoute une nouvelle ligne dans ma gridView en cliquant sur le bouton "ajouter" , : une nouvelle ligne dans la base de données est ajoutée avec des valeurs prédéfinisses par défaut, puis l'utilisateur clique sur le bouton "Edit" pour le personnaliser. ça marche bien, mais c'est pas conviviale. Je voulais faire comme ça : lorsque l'utilisateur ajoute une ligne dans la gridView (cad : cliquer sur le bouton ajouter au dessous de la GridView), automatiquement la ligne ajouté est en EditMode sans être obligé à cliquer le bouton Edit de la ligne ajoutée.
donc le problème s'agit de :
1/ comment déterminer l'index de la ligne ajoutée
2/ comment la rendre en mode EDIT juste aprés la création de la ligne sans d'autre intervention de la part de l'utilisateur (J'ai pensé à utiliser l'event : GridView.RowCreated mais en vain)

code de la GridView
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
 
 <asp:GridView ID="grvRapportJournalier" runat="server"
                    AutoGenerateColumns="false"
                    DataKeyNames="ProdDeclarationId"
                    OnRowDataBound="grvRapportJournalier_RowDataBound"
                    OnRowCancelingEdit="grvRapportJournalier_RowCancelingEdit"
                    OnRowEditing="grvRapportJournalier_RowEditing"
                    OnRowUpdating="grvRapportJournalier_RowUpdating"
                    OnRowDeleting="grvRapportJournalier_RowDeleting"
                    OnRowCreated="grvRapportJournalier_RowCreated"
                    EmptyDataText="No data available."
                    EmptyDataRowStyle-CssClass=""
                    EmptyDataRowStyle-HorizontalAlign="Center"
                    EmptyDataRowStyle-Font-Bold="true"
                    Width="100%"
                    CssClass="table table-striped table-bordered table-hover"
                    ShowHeaderWhenEmpty="true"
                    >
                    <Columns>
                        <asp:TemplateField>
                            <ItemTemplate>
                                <asp:HiddenField ID="hdndeclarationId" runat="server" Value='<%#DataBinder.Eval(Container.DataItem,"ProdDeclarationId") %>' />
                            </ItemTemplate>
                        </asp:TemplateField>
                        <%--<asp:BoundField DataField="articleName" HeaderText="Article" 
                            HeaderStyle-CssClass="visible-lg" ItemStyle-CssClass="visible-lg"/>--%>
 
                        <asp:TemplateField HeaderText="Article">
                            <ItemTemplate>
                                <asp:Label ID="lblArticle" runat="server" Text='<%# Eval("Article.Nom") %>' Visible="true" />
                            </ItemTemplate>
                            <EditItemTemplate>
                                <asp:DropDownList ID="Article_ddl" DataTextField="Nom" DataValueField="ArticleId" runat="server">
                                </asp:DropDownList>
                            </EditItemTemplate>
 
                        </asp:TemplateField>
 
                        <asp:BoundField DataField="Scheduled" HeaderText="Programmé"
                            HeaderStyle-CssClass="visible-lg" ItemStyle-CssClass="visible-lg" />
                        <%--<asp:BoundField DataField="Fulfilled" ReadOnly="true" HeaderText="Fulfilled" 
                            HeaderStyle-CssClass="visible-lg" ItemStyle-CssClass="visible-lg"/>--%>
                        <asp:BoundField DataField="Fulfilled" HeaderText="Réalisé"
                            HeaderStyle-CssClass="visible-lg" ItemStyle-CssClass="visible-lg" />
                        <%--<asp:BoundField HeaderText="Price"
                            DataField="ListPrice"
                            DataFormatString="{0:c}">
                            <ItemStyle HorizontalAlign="Right"></ItemStyle>
                        </asp:BoundField>--%>
 
                        <asp:CommandField ShowEditButton="true" />
                        <asp:CommandField ShowDeleteButton="true" DeleteText="Supprimer" />
                    </Columns>
 
                </asp:GridView>
           <br/>
 
     <asp:Button ID="btn_Add_Declaration" runat="server" Text="Ajouter" CssClass="btn btn-primary" OnClick="btn_Add_Declaration_Click" />


Code du Bouton Ajouter :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 
protected void btn_Add_Declaration_Click(object sender, EventArgs e)
        {
            var context = new ProductionContext();  
            var newDeclaration = new ProdDeclaration
            {   
                ProductionTour = tourChoisi,
                Scheduled = 0, // default value
                Fulfilled = 0, // default value
                MachineId = machineChoisi,
                EquipeId = equipeChoisi,
                DeclarationDate = DateTime.Now
 
            };
            context.ProdDeclarations.Add(newDeclaration);
            context.SaveChanges();
 
            PopulateProdGridView();
            unlockUserChoices();
 
}

NB : Je sais bien que cette approche n'est pas optimale, et peut être j'aurait dû utiliser un PopUp ( Modal ) pour ajouter un nouvel enregistrement dans la gridview mais il y a eu plusieurs contraintes..

J'espère que ma question soit suffisamment claire, si non je suis à votre disposition.Merci d'avance.