Hé les gars, j'ai un GridView ASP.NET lié à un DataView qui contient un DataTable. Je n'utilise pas un DataAdapter.Mise à jour d'un DataTable?
Je veux mettre à jour une ligne dans mon DataTable, donc je fais ceci:
protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
DataView dv = (DataView)Session["My_DataTable"];
DataTable dt = dv.Table;
int rowIndex = GridView1.Rows[e.RowIndex];
dt.Rows[rowIndex]["FirstName"] = thenewfirstname;
dt.Rows[rowIndex]["MI"] = thenewmi;
dt.Rows[rowIndex]["LastName"] =thenewlastname;
Session["My_DataTable"] = dv;
//Reset the edit index.
GridView1.EditIndex = -1;
//Bind data to the GridView control.
GridView1.DataSource = Session["My_DataTable"];
GridView1.DataBind();
}
Le DataView sous-jacente/DataTable est modifiée correctement, mais le GridView contient à la fois l'ancienne ligne avant le montage, et le nouveau ligne après l'édition (c'est-à-dire, il ajoute une ligne supplémentaire avec les nouvelles modifications!).
Par exemple, si nous avons:
...
Sammy S Samerson
...
et le changement à la Sammy E Samerson
gridview dit:
...
Sammy S Samerson
Sammy E Samerson
...
Comment puis-je résoudre ce problème, qu'est-ce que je fait de mal?
Tu es sûr que Sammy E ne pas écraser une autre entrée? ou votre nombre total de lignes est-il également augmenté? – Jeroen
Je suis sûr qu'aucune entrée n'a été écrasée, et le nombre de lignes est augmenté de 1. –