Modification au sein d'une Grid
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:
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:
Code:
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> |
Le problème est que lorsque je veux mettre à jour mes champs, rien ne se passe, de même pour une insertion.
En revanche lorsque je fais un delete, la ligne est supprimée visuellement mais lorsque je clique sur refresh j'ai l'erreur suivante:
Citation:
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.