Tout d'abord, j'ai vu que des questions simliar ont été posées et croyez-moi, j'ai lu les réponses et les commentaires et j'ai essayé de comprendre. Sinon je ne posterais pas.Gridview L'article a déjà été ajouté erreur
Ainsi, la question alors:
J'ai un gridview que je souhaite mettre à jour.
Le code ASP ressemble à ceci:
<asp:GridView ID="myGv" runat="server"
AutoGenerateEditButton="true" AutoGenerateDeleteButton="true"
AutoGenerateColumns="False" AllowPaging="true" AllowSorting="true" DataKeyNames="id" DataSourceID="myObjectDataSource"
OnRowUpdating="myGv_RowUpdating" >
<Columns>
<asp:BoundField DataField="id" HeaderText="id" Visible="false" InsertVisible="False" ReadOnly="True" SortExpression="id" />
<asp:BoundField DataField="type" HeaderText="type" SortExpression="type" ReadOnly="True" />
<asp:BoundField DataField="date" HeaderText="date" SortExpression="date" ReadOnly="True" />
<asp:BoundField DataField="volume" HeaderText="volume" SortExpression="volume" />
</Columns>
</asp:GridView>
C'est le ObjectDataSource:
<asp:ObjectDataSource ID="myObjectDataSource" runat="server"
DeleteMethod="myDeleteMethod" SelectMethod="mySelectMethod"
TypeName="url.sqlDataLayer" UpdateMethod="myUpdateMethod">
<DeleteParameters>
<asp:Parameter Name="id" Type="Int32" />
</DeleteParameters>
<SelectParameters>
<asp:Parameter Name="fromDate" Type="DateTime" />
<asp:Parameter Name="toDate" Type="DateTime" />
</SelectParameters>
<UpdateParameters>
<asp:Parameter Name="id" Type="Int32" />
<asp:Parameter Name="volume" Type="Int32" />
</UpdateParameters>
</asp:ObjectDataSource>
Et voici le code derrière (C#):
protected void myGv_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
GridViewRow row = (GridViewRow)myGv.Rows[e.RowIndex];
string value = ((TextBox)(row.Cells[3].Controls[0])).Text;
e.NewValues.Add("volume", value);
}
J'ai cette autre page dans le même espace de noms qui a exactement la même mise en page (avec les mêmes noms de colonnes) qui est probablement à l'origine de l'erreur.
C'est le code d'erreur:
Item has already been added. Key in dictionary: 'volume' Key being added: 'volume'
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.ArgumentException: Item has already been added. Key in dictionary: 'volume' Key being added: 'volume'
Et la trace de la pile:
[ArgumentException: Item has already been added. Key in dictionary: 'volume' Key being added: 'volume']
System.Collections.Hashtable.Insert(Object key, Object nvalue, Boolean add) +14349425
System.Collections.Specialized.OrderedDictionary.Add(Object key, Object value) +144
namespace.class.myGv_RowUpdating(Object sender, GridViewUpdateEventArgs e) in theurl.aspx.cs:55
System.Web.UI.WebControls.GridView.HandleUpdate(GridViewRow row, Int32 rowIndex, Boolean causesValidation) +1157
System.Web.UI.WebControls.GridView.HandleEvent(EventArgs e, Boolean causesValidation, String validationGroup) +762
System.Web.UI.WebControls.GridViewRow.OnBubbleEvent(Object source, EventArgs e) +164
System.Web.UI.Control.RaiseBubbleEvent(Object source, EventArgs args) +84
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +3804
Merci! Ça a marché. Je me sens un peu bête que la réponse soit si simple ^^ –