2010-06-04 11 views
1

J'utilise C#, ASP.NETGridview Modifier ne fonctionne pas après tri ASP.NET

J'ai un Gridview pour lequel j'ai fourni tri, la fonctionnalité Modifier. Je ne suis pas capable d'exécuter EDIT lorsque j'effectue le tri. Après le tri, l'édition est définie sur une autre ligne. Je pense qu'il ya un problème avec l'indice qu'il prend ..

Quelqu'un peut-il me aider comment résoudre ce problème ..

Cordialement sbmarya

Répondre

0

Je pense que le problème est que le tri utilise un appel/datasouce différent de l'édition. Ainsi, dans l'événement RowEditing, j'obtiens un index relatif à l'ordre de tri (ASC() ou DESC()). Mais alors je lie en utilisant getUsers() qui retourne les données dans un ordre différent. Ce que j'ai fait, c'est que j'ai stocké une sorte de drapeau (Value) dans ViewState pour indiquer l'ordre de tri dans lequel je suis utilisé et utilisé quand je suis dans l'événement Editing, pour que je puisse appeler la bonne méthode pour renvoyer la même source de données.

Cordialement, sbmarya

0

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.

Questions connexes