Bonjour,
Après quelques essais infructueux je me résouds à poster voir si quelqu'un n'a pas une petite idée car là je sèche...
Ce que je veux faire est tout bête, c'est modifier des enregistrements directement dans une grid. d'habitude je passe par formulaire mais comme ma (mes j'en aurais plusieurs à faire) table ne comporte que 2 champs j'ai préféré le faire dans mon grid directement.
Au passage, j'utilise une RadGridView de Télérik mais le princippe avec une GridView est le même.
voici ma Grid:
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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109 <radG:RadGrid ID="RadGrid1" AllowMultiRowSelection="True" AllowMultiRowEdit="True" Skin="WebBlue" runat="server" AllowAutomaticDeletes="True" AllowAutomaticInserts="True" Width="97%" PageSize="14" AllowAutomaticUpdates="True" AllowPaging="True" AutoGenerateColumns="False" DataSourceID="SessionDataSource1" ShowStatusBar="True" EnableAJAX="True" EnableAJAXLoadingTemplate="True" LoadingTemplateTransparency="50" GridLines="None" onitemcreated="RadGrid1_ItemCreated"> <PagerStyle Mode="Slider" /> <ClientSettings> <Selecting AllowRowSelect="true" /> </ClientSettings> <MasterTableView CommandItemDisplay="Top" DataKeyNames="Code_Conseil" DataSourceID="SessionDataSource1" EditMode="EditForms" AutoGenerateColumns="False" Width="100%"> <CommandItemTemplate> <div style="padding:10px 0px;"> Custom command item template <asp:LinkButton Style="vertical-align: bottom" ID="btnEditSelected" runat="server" CommandName="EditSelected" CausesValidation="false" Visible='<%# RadGrid1.EditIndexes.Count == 0 %>'><img style="border:0px;vertical-align:middle;" alt="" src="Fichiers/Images/Edit.gif" /> Edit Selected Products</asp:LinkButton> <asp:LinkButton ID="btnUpdateEdited" runat="server" CommandName="UpdateEdited" Visible='<%# RadGrid1.EditIndexes.Count > 0 %>'><img style="border:0px;vertical-align:middle;" alt="" src="Fichiers/Images/Update.gif" /> Update Products</asp:LinkButton> <asp:LinkButton ID="btnCancel" runat="server" CommandName="CancelAll" CausesValidation="false" Visible='<%# RadGrid1.EditIndexes.Count > 0 || RadGrid1.MasterTableView.IsItemInserted %>'><img style="border:0px;vertical-align:middle;" alt="" src="Fichiers/Images/Cancel.gif" /> Cancel editing</asp:LinkButton> <asp:LinkButton ID="LinkButton2" runat="server" CommandName="InitInsert" Visible='<%# !RadGrid1.MasterTableView.IsItemInserted %>'><img style="border:0px;vertical-align:middle;" alt="" src="Fichiers/Images/AddRecord.gif" /> Add new Product</asp:LinkButton> <asp:LinkButton ID="LinkButton3" runat="server" CommandName="PerformInsert" Visible='<%# RadGrid1.MasterTableView.IsItemInserted %>'><img style="border:0px;vertical-align:middle;" alt="" src="Fichiers/Images/Insert.gif" /> Add this Product</asp:LinkButton> <asp:LinkButton ID="LinkButton1" OnClientClick="javascript:return confirm('Delete all selected Products?')" runat="server" CommandName="DeleteSelected" CausesValidation="false"><img style="border:0px;vertical-align:middle;" alt="" src="Fichiers/Images/Delete.gif" /> Delete Selected Products</asp:LinkButton> <asp:LinkButton ID="LinkButton4" runat="server" CommandName="RebindGrid"><img style="border:0px;vertical-align:middle;" alt="" src="Fichiers/Images/Refresh.gif" /> Refresh Product list</asp:LinkButton>; </div> </CommandItemTemplate> <RowIndicatorColumn Visible="False"> <HeaderStyle Width="20px"></HeaderStyle> </RowIndicatorColumn> <ExpandCollapseColumn Visible="False"> <HeaderStyle Width="19px"></HeaderStyle> </ExpandCollapseColumn> <Columns> <radG:GridEditCommandColumn ButtonType="ImageButton" UpdateImageUrl="Fichiers\Images\Update.gif" EditImageUrl="Fichiers\Images\Edit.gif" InsertImageUrl="Fichiers\Images\Insert.gif" CancelImageUrl="Fichiers\Images\Cancel.gif" UniqueName="EditCommandColumn"> <HeaderStyle Width="30px" /> </radG:GridEditCommandColumn> <radG:GridClientDeleteColumn ConfirmText="Delete this product?" ButtonType="ImageButton" ImageUrl="Fichiers\Images\Delete.gif" CommandName="Delete" Text="Delete" UniqueName="DeleteColumn"> <HeaderStyle Width="20px" /> <ItemStyle HorizontalAlign="Center" /> </radG:GridClientDeleteColumn> <radG:GridClientSelectColumn HeaderStyle-Width="40px" > <HeaderStyle Width="40px"></HeaderStyle> </radG:GridClientSelectColumn> <radG:GridTemplateColumn HeaderText="Code_Conseil" SortExpression="Code_Conseil" UniqueName="TemplateColumn" EditFormColumnIndex="0"> <HeaderStyle Width="80px" /> <ItemTemplate> <asp:Label runat="server" ID="lblCode" Text='<%# Eval("Code_Conseil") %>'></asp:Label> </ItemTemplate> <EditItemTemplate> <asp:RequiredFieldValidator ID="RequiredFieldValidator1" ControlToValidate="tbCode" ErrorMessage="This field is required!" runat="server"> </asp:RequiredFieldValidator> <br/> <asp:TextBox runat="server" ID="tbCode" Text='<%# Bind("Code_Conseil") %>'></asp:TextBox><span style="color: Red">*</span> <br/> </EditItemTemplate> </radG:GridTemplateColumn> <radG:GridTemplateColumn HeaderText="Libelle_Conseil" SortExpression="Libelle_Conseil" UniqueName="TemplateColumn" EditFormColumnIndex="1"> <HeaderStyle Width="80px" /> <ItemTemplate> <asp:Label runat="server" ID="lblLibelle" Text='<%# Eval("Libelle_Conseil") %>'></asp:Label> </ItemTemplate> <EditItemTemplate> <asp:RequiredFieldValidator ID="RequiredFieldValidator2" ControlToValidate="tbLibelle" ErrorMessage="This field is required!" runat="server"> </asp:RequiredFieldValidator> <br/> <asp:TextBox runat="server" ID="tbLibelle" Text='<%# Bind("Libelle_Conseil") %>'></asp:TextBox><span style="color: Red">*</span> <br/> </EditItemTemplate> </radG:GridTemplateColumn> </Columns> <EditFormSettings ColumnNumber="2" CaptionDataField="Code_Conseil" CaptionFormatString="Edit properties of Product {0}"> <FormTableItemStyle Wrap="False"></FormTableItemStyle> <FormCaptionStyle CssClass="EditFormHeader"></FormCaptionStyle> <FormMainTableStyle GridLines="Horizontal" CellSpacing="0" CellPadding="3" BackColor="White" Width="100%" /> <FormTableStyle CellSpacing="0" CellPadding="2" CssClass="module" Height="110px" BackColor="White" /> <FormTableAlternatingItemStyle Wrap="False"></FormTableAlternatingItemStyle> <EditColumn ButtonType="ImageButton" UpdateImageUrl="Fichiers\Images\Update.gif" EditImageUrl="Fichiers\Images\Edit.gif" InsertImageUrl="Fichiers\Images\Insert.gif" CancelImageUrl="Fichiers\Images\Cancel.gif" InsertText="Insert Order" UpdateText="Update record" UniqueName="EditCommandColumn1" CancelText="Cancel edit"> </EditColumn> <FormTableButtonRowStyle HorizontalAlign="Right" CssClass="EditFormButtonRow"></FormTableButtonRowStyle> </EditFormSettings> </MasterTableView> </radG:RadGrid>
Et mon DataSource:
Le problème est que lorsque je veux mettre à jour mes champs, rien ne se passe, de même pour une insertion.
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 <asp:SqlDataSource ID="SessionDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:prodchimiquesConnectionString %>" SelectCommand="SELECT Code_Conseil, Libelle_Conseil FROM [Conseil_Prudence]" DeleteCommand="DELETE FROM [Conseil_Prudence] WHERE [Code_Conseil] = @Code_Conseil" InsertCommand="INSERT INTO Conseil_Prudence(Code_Conseil, Libelle_Conseil) VALUES (@Code_Conseil, @Libelle_Conseil)" UpdateCommand="UPDATE [Conseil_Prudence] SET [Code_Conseil] = @Code_Conseil, [Libelle_Conseil] = @Libelle_Conseil WHERE [Code_Conseil] = @Code_Conseil AND [Libelle_Conseil] = @Libelle_Conseil" OldValuesParameterFormatString="original_{0}" ConflictDetection="CompareAllValues"> <DeleteParameters> <asp:Parameter Name="original_Code_Conseil" Type="String"/> </DeleteParameters> <UpdateParameters> <asp:Parameter Name="Code_Conseil" Type="String"/> <asp:Parameter Name="Libelle_Conseil" Type="String"/> <asp:Parameter Name="original_Code_Conseil" Type="String"/> <asp:Parameter Name="original_Libelle_Conseil" Type="String"/> </UpdateParameters> <InsertParameters> <asp:Parameter Name="Code_Conseil" Type="String" /> <asp:Parameter Name="Libelle_Conseil" Type="String" /> </InsertParameters> </asp:SqlDataSource>
En revanche lorsque je fais un delete, la ligne est supprimée visuellement mais lorsque je clique sur refresh j'ai l'erreur suivante:
Vous avez spécifié que votre commande Supprimer compare toutes les valeurs du SqlDataSource 'SessionDataSource1' mais le dictionnaire passé pour values est vide. Passez un dictionnaire valide pour Supprimer ou redéfinissez votre mode à OverwriteChanges.
Partager