je faisais face à ce problème aussi bien. C'est ainsi que je l'ai réparé. (Dans mon exemple, le gridview est trié sur une colonne appelée date de soumission).
a. Lorsque le dataTable sous-jacent de gridview est mis en caisse et trié, stockez-le dans une variable de session. L'astuce est, avant de stocker dans une variable de session, assurez-vous de stocker la vue triée.
dt.DefaultView.Sort = "Submit Date" + " " + "DESC";
GridView1.DataSource = dt;
GridView1.DataBind();
Session["gridViewData"] = dt.DefaultView.ToTable(); //Only storing dt will not have the sorted table stored in session.
b. Ensuite, effectuez toutes les opérations de modification/mise à jour à l'aide de dataTable stocké dans la session à l'étape ci-dessus. Il apparaîtra toujours dans l'ordre trié et vous ne verrez pas le problème de l'index de ligne changer de façon inattendue après la mise à jour.