Bonjour
je vais exposer mon problème dans un nouveau sujet bien que ce soit exactement le même problème que celui-ci :
http://www.developpez.net/forums/d36...ng-source-sql/
Sauf que la solution suggérée par l'auteur du post ne fonctionne pas chez moi et je ne vois pas pourquoi.
je suis exactement dans la même situation :
voici les bouts de code intéressant :J'ai un gridview lié à un dataset (retenu dans le ViewState)...Je suis obligé de procéder comme celà.
Le gridview s'affiche bien, j'ai su rajouter des données sans problème.
Bon je bloque sur l'édition...en fait sur l'évenement RowUpdating.
Je n'arrive pas à accéder aux nouvelles informations.
Dans mon codebehind:
ma grid est déclarée comme ça :
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 private void BindCRAData() { DataSet dataCra = (DataSet)ViewState["dataCra"]; if (dataCra != null) { gridViewCRA.DataSource = dataCra.Tables[0]; gridViewCRA.DataBind(); } } protected void gridViewCRA_RowEditing(object sender, GridViewEditEventArgs e) { gridViewCRA.EditIndex = e.NewEditIndex; BindCRAData(); } protected void gridViewCRA_RowUpdating(object sender, GridViewUpdateEventArgs e) { GridViewRow row = gridViewCRA.Rows[e.RowIndex]; if (row != null) { GridViewRow grv = gridViewCRA.Rows[e.RowIndex]; string newDescription = ((TextBox)(grv.Cells[2].Controls[0])).Text; string tempdate = ((TextBox)(grv.Cells[4].Controls[0])).Text; //(....) } }
donc rien qui me paraisse bien original.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 <asp:GridView ID="gridViewCRA" runat="server" AutoGenerateEditButton="True" style="top: 10px; left: 23px; position: absolute; height: 137px; width: 387px" onrowcancelingedit="gridViewCRA_RowCancelingEdit" onrowediting="gridViewCRA_RowEditing" onrowupdated="gridViewCRA_RowUpdated" onrowupdating="gridViewCRA_RowUpdating" AutoGenerateColumns="False"> <Columns> <asp:BoundField DataField="DESCRIPT" HeaderText="Activité" /> <asp:BoundField DataField="CRA_ID" Visible="false" /> <asp:BoundField DataField="DATE" HeaderText="Date" DataFormatString="{0:d}" /> </Columns> </asp:GridView>
Evidemment, dans mon évènement RowUpdating, les collections e.NewValues et e.OldValues sont vides mais ça j'ai cru comprendre que c'était normal et que ça venait du binding avec les données.
ok, donc la solution c'est d'aller taper directement au niveau des contrôles de la page dans lesquels sont écrits les nouvelles valeurs, soit, mais lorsque je fais ça, c'est les anciennes valeurs que j'obtiens, comme s'il n'y avait pas eu d'édition.
précisement lorsque je débogue sur :
j'obtiens la valeur avant édition alors que je suis sur et certain que c'est bien sur cette cellule que l'édition a eu lieu.
Code : Sélectionner tout - Visualiser dans une fenêtre à part string newDescription = ((TextBox)(grv.Cells[2].Controls[0])).Text;
Quelqu'un a-t-il déjà eu ce problème et pourrait me donner une piste de solution ?
D'avance merci beaucoup...
Partager