Ajouter un input dans une gridview
Bonjour à tous !!
J'ai quelques problèmes pour personnaliser une gridview et j'aurais besoin d'un peu d'aide. Je récupére d'un connector de ma confection une datatable que j'affiche dans une griview :
Code:
1 2 3 4 5 6
|
<asp:GridView ID="gridcommand" runat="server" AllowPaging="True"
onpageindexchanging="gridcommand_PageIndexChanging"
onselectedindexchanging="gridcommand_SelectedIndexChanging"
onselectedindexchanged="gridcommand_SelectedIndexChanged">
</asp:GridView> |
Jusque là facile j'ai suivi quelques tutos et c'est tout bon.
ça se corse pour moi parce qu'on me demande d'ajouter une colonne à la gridview afin de pouvoir saisir une quantité pour chacune des lignes et récupérer le tout après validation de la page.
J'ai bien penser à faire un truc à l'arrache avec une boucle et un bon vieux tableau html, mais j'aimerais bien utiliser un truc un peu plus classe à la .NET mais je n'arrive à rien.
J'ai commencé par ajoute une colonne contenant un input html :
Code:
1 2 3 4 5 6 7 8
|
System.Data.DataColumn test = new DataColumn("Qté", typeof(String));
test.DefaultValue = "<input type=\"text\" runat=\"server\" id=\"txtName\">";
dt.Columns.Add(test);
DataView dv = new DataView(dt);
gridcommand.DataSource = dv;
// Make the grid databoud.
gridcommand.DataBind(); |
Le code html s'affiche en clair dans la gridview !
J'ai ensuite essayé d'ajouter une colonne contenant un input C# :
Code:
1 2 3 4 5 6 7 8 9
|
System.Data.DataColumn test = new DataColumn("Qté", typeof(Object));
System.Web.UI.HtmlControls.HtmlInputText monInput = new System.Web.UI.HtmlControls.HtmlInputText();
test.DefaultValue = monInput;
dt.Columns.Add(test);
DataView dv = new DataView(dt);
gridcommand.DataSource = dv;
// Make the grid databoud.
gridcommand.DataBind(); |
Cette fois-ci la colonne n'apparait même plus dans la dv et donc dans la gridview !
Merci d'avance de m'éclairer un peu :
- Ma demande est-elle réalisable (Je n'imagine pas le contraire !) ?
- mon approche est-elle la bonne (Il semble que non !)?
Avez-vous déjà fais ce genre de chose, avez-vous des exemples concrets ou de bons tutos à suivre ?
Bonne soirée
Stéphane
Mise à jour de ma datsource !
Bonjour à tous !
J'ai avancé un peu sur mon sujet, merci Nicolas pour ton aide. Voici donc désormais le code de ma gridview :
Code:
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
|
<asp:GridView ID="gridcommand" runat="server" AllowPaging="True" AutoGenerateColumns="False"
OnRowEditing="gridcommand_RowEditing"
OnRowCommand="gridcommand_RowCommand"
OnRowUpdating="gridcommand_RowUpdating"
onpageindexchanging="gridcommand_PageIndexChanging"
onselectedindexchanging="gridcommand_SelectedIndexChanging" Width="591px" ShowFooter="True">
<RowStyle BorderColor="Black" BorderStyle="Inset" />
<Columns>
<asp:ButtonField Text="SingleClick" CommandName="SingleClick" Visible="False"/>
<%--Id--%>
<asp:TemplateField HeaderText="Code Article">
<ItemTemplate>
<asp:Label ID="monid" runat="server" Text='<%# Eval("id") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<%--Quantité--%>
<asp:TemplateField HeaderText="Quantité Commandé">
<ItemTemplate>
<asp:TextBox ID="qtcmd" runat="server" Text='<%# Eval("qt") %>' OnTextChanged="TextChanged"></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
</Columns>
<HeaderStyle BackColor="#99CCFF" Font-Bold="True" />
<AlternatingRowStyle BackColor="Silver" BorderColor="Black" />
</asp:GridView> |
Je suis maintenant bloqué car je n'arrive pas à récupérer les valeurs saisies dans mes textbox !
J'ai essayé d'utiliser la méthode "OnTextChanged" de mon textbox mais l'évènement semble ne jamais être déclenché. (la fonction doit bien être dans le codebehind n'est ce pas ?)
D'autre part je ne sais pas comment stocker la datatable renvoyé par mon connector (Je n'utilise aucune base de données et je dois éviter d'en utiliser une !)
J'ai utilisé le tuto suivant http://www.codeproject.com/KB/webfor...viewCells.aspx que j'ai essayé d'adapter à mon cas de figure, mais j'avoue que je patauge un peu.
Merci d'avance de votre aide
cordialement
Stéphane