Bonjour,
L' EmptyDataTemplate s'affiche lorsque ton gridview est vide, à sa place, sinon il ne s'affiche pas.
Donc, tu peux mettre dans cet EmptyDataTemplate une table qui va imiter ta gridview, en reprenant les mêmes headers, et en donnant les mêmes styles, par exemple (sans les styles) :
<asp:GridView ID="GridView1" runat="server" etc. ... >
<Columns>
... tes fields de gridview ...
</Columns>
<EmptyDataTemplate>
<asp:Table runat="server">
<asp:TableHeaderRow>
<asp:TableHeaderCell Text="Premier champ"></asp:TableHeaderCell>
<asp:TableHeaderCell Text="Champ 2"></asp:TableHeaderCell>
<asp:TableHeaderCell Text="Champ 3"></asp:TableHeaderCell>
<asp:TableHeaderCell Text="Champ 4"></asp:TableHeaderCell>
</asp:TableHeaderRow>
<asp:TableRow>
<asp:TableCell><asp:Button ID="Button2" runat="server" Text="Insérer" OnClick="btinsert" /></asp:TableCell>
<asp:TableCell><asp:TextBox ID="tb1" runat="server"></asp:TextBox></asp:TableCell>
<asp:TableCell><asp:TextBox ID="tb2" runat="server"></asp:TextBox></asp:TableCell>
<asp:TableCell></asp:TableCell>
</asp:TableRow>
</asp:Table>
</EmptyDataTemplate>
</asp:GridView>
Là, tu pourras récupérer les textbox sur l'événement déterminé :
Protected Sub btinsert(ByVal sender As Object, ByVal e As System.EventArgs)
Dim tb1 As TextBox = CType(sender.namingcontainer.FindControl("tb1"), TextBox)
Dim tb2 As TextBox = CType(sender.namingcontainer.FindControl("tb2"), TextBox)
... ton insert sql ...
End Sub
Maintenant, si un insert est effectué à partir de la table, l'EmptyDataTemplate ne sera plus affiché, puisque la gridview contient à présent des données.
Mais le footer de la gridview peut prendre le rélai.
Pour mettre des contrôles textbox ou button dans le footer, tu as deux solutions :
1/ si tu utilises des boundfields dans ta gridview, je crois que tu es obligé d'ajouter tes controles par le code vb ou c#.
Ici un exemple en vb, au début (mais il y a peut-être mieux) :
http://www.aspfr.com/forum/sujet-INSERBUTTON_1255924.aspx#82/ sinon, tu peux utiliser à la place des boundfields des templatefields qui admettent un footertemplate. C'est sans doute mieux.
GGtry