Bonjour tout le monde,
Je travaille en ASP.NET 3.0 avec C#.
J'ai une GridView alimentée par un SQLDataSource :
Lors du démarrage de ma page, je peux modifier une ligne en cliquant sur le bouton "modifier" et enregistrer la modification sans souci.
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 <asp:Panel ID="Panel1" runat="server" ScrollBars="Auto" Height="450" Width="100%"> <asp:GridView ID="gv_usersList" runat="server" AutoGenerateColumns="False" DataSourceID="sds_allUsers" CellPadding="4" ForeColor="#333333" GridLines="None" Height="100%" Width="100%"> <Columns> <asp:BoundField DataField="CU_NOM" HeaderText="Nom" SortExpression="CU_NOM" /> <asp:BoundField DataField="CU_PRENOM" HeaderText="Prénom" SortExpression="CU_PRENOM" /> <asp:BoundField DataField="CU_LOGIN" HeaderText="Login" SortExpression="CU_LOGIN" /> <asp:BoundField DataField="CU_PASSWORD" HeaderText="Mot de passe" SortExpression="CU_PASSWORD" /> <asp:BoundField DataField="CU_MAIL" HeaderText="Email" SortExpression="CU_MAIL" /> <asp:BoundField DataField="CU_ORIGIN" HeaderText="Type" SortExpression="CU_ORIGIN" /> <asp:CheckBoxField DataField="CU_ACTIVE" HeaderText="Activé" SortExpression="CU_ACTIVE" /> <asp:CommandField ButtonType="Button" ShowEditButton="True" /> </Columns> </asp:GridView> </asp:Panel> <asp:SqlDataSource ID="sds_allUsers" runat="server" ConnectionString="<%$ ConnectionStrings:XXXConnectionString %>" SelectCommand="SELECT * FROM [CAP_UTIL] WHERE CU_ACTIVE=1 ORDER BY [CU_NOM], [CU_PRENOM]" ConflictDetection="CompareAllValues" DeleteCommand="DELETE FROM [CAP_UTIL] WHERE [CU_ID] = @original_CU_ID" InsertCommand="INSERT INTO [CAP_UTIL] VALUES (@CU_NOM, @CU_PRENOM, @CU_LOGIN, @CU_PASSWORD, @CU_MAIL)" OldValuesParameterFormatString="original_{0}" UpdateCommand="UPDATE [CAP_UTIL] SET [CU_NOM] = @CU_NOM, [CU_PRENOM] = @CU_PRENOM, [CU_LOGIN] = @CU_LOGIN, [CU_PASSWORD] = @CU_PASSWORD, [CU_MAIL] = @CU_MAIL,[CU_ACTIVE] = @CU_ACTIVE, [CU_ORIGIN] = @CU_ORIGIN WHERE [CU_ID] = @original_CU_ID"> <DeleteParameters> <asp:Parameter Name="original_CU_ID" Type="Int32" /> <asp:Parameter Name="original_CU_NOM" Type="String" /> <asp:Parameter Name="original_CU_PRENOM" Type="String" /> <asp:Parameter Name="original_CU_LOGIN" Type="String" /> <asp:Parameter Name="original_CU_PASSWORD" Type="String" /> <asp:Parameter Name="original_CU_MAIL" Type="String" /> </DeleteParameters> <UpdateParameters> <asp:Parameter Name="CU_NOM" Type="String" /> <asp:Parameter Name="CU_PRENOM" Type="String" /> <asp:Parameter Name="CU_LOGIN" Type="String" /> <asp:Parameter Name="CU_PASSWORD" Type="String" /> <asp:Parameter Name="CU_MAIL" Type="String" /> <asp:Parameter Name="CU_ACTIVE" /> <asp:Parameter Name="CU_ORIGIN" /> <asp:Parameter Name="original_CU_ID" Type="Int32" /> <asp:Parameter Name="original_CU_NOM" Type="String" /> <asp:Parameter Name="original_CU_PRENOM" Type="String" /> <asp:Parameter Name="original_CU_LOGIN" Type="String" /> <asp:Parameter Name="original_CU_PASSWORD" Type="String" /> <asp:Parameter Name="original_CU_MAIL" Type="String" /> <asp:Parameter Name="original_CU_ACTIVE" /> <asp:Parameter Name="original_CU_ORIGIN" /> </UpdateParameters> <InsertParameters> <asp:Parameter Name="CU_NOM" Type="String" /> <asp:Parameter Name="CU_PRENOM" Type="String" /> <asp:Parameter Name="CU_LOGIN" Type="String" /> <asp:Parameter Name="CU_PASSWORD" Type="String" /> <asp:Parameter Name="CU_MAIL" Type="String" /> </InsertParameters> </asp:SqlDataSource>
Problème :
J'ai une liste de checkbox qui permettent de sélectionner un type de personne (en fait ça fait simplement appel à des vues SQL).
En cliquant sur une de mes checkbox, je modifie le SQLDataSource sds_allUsers dans le code behind (je change juste la commande de sélection et je bind la GridView) :Dès lors, lorsque je clique sur le bouton modifier de la GridView, j'ai droit à cette erreur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 sds_allUsers.SelectCommand = "SELECT " + c_s_SelectFieldsList + " FROM dbo.v_inactive_users"; gv_usersList.DataSourceID = null; gv_usersList.DataSource = sds_allUsers; gv_usersList.DataBind();Comme si on avait modifié mon SQLDataSource alors que, dans l'inspecteur d'objet, toutes les propriétés semblent OK (notamment la méthode UpdateCommand qui contient toujours la même chaine de caractères (voir code ASP.NET ci-dessus)) .Le GridView 'gv_usersList' a déclenché un événement RowEditing qui n'était pas géré.
Pourquoi ai-je ce comportement ? Comment le résoudre ?
NB : je n'ai aucun autre code behind qui puisse modifier quoi que se soit.
Merci d'avance à tous ceux qui pourront m'apporter une once d'aide![]()
Partager