2009-08-24 4 views
0


Pourquoi GridView réinitialise-t-il ses valeurs à ce qu'elles étaient avant les modifications de l'utilisateur?

Si je lie GridView (via DataSourceID attribut) à SqlDataSource et mis SelectCommand et UpdateCommand attributs, tout fonctionne parfaitement.

Mais si nous appelons manuellement GridView.DataBind intérieur Page_Load(), puis SqlDataSource ne fonctionne pas de mises à jour, même si SqlDataSource.Updating et SqlDataSource.Updated événements font feu quand GridView de Le bouton Mettre à jour est cliqué. Je pense que cela est dû au fait que GridView remet à zéro à ce qu'il était avant que l'utilisateur édite:


a) Pourquoi GridView réinitialiser ses valeurs si l'on appelle manuellement DataBind() à l'intérieur Page_Load()?

b) Je puis supposer que Supprimer opération aussi ne fonctionnerait pas Depuis opération de mise à jour ne fonctionne pas lorsque vous appelez manuellement DataBind, mais il le fait. Pourquoi?


acclamations

Répondre

1

Je crois Page_Load court avant que vos changements ont lieu, vous liez ainsi les anciennes données avant d'exécuter les mises à jour

Enveloppez la liaison dans un cas non IsPostBack quand sous Page_Load , je crois que cela va résoudre votre problème.

+0

Ce n'est pas ce que je demande. Je sais que pour que l'opération de mise à jour réussisse, nous ne devrions pas appeler manuellement DataBind en postback. – SourceC

0

Vous devrez affecter le GridView avec la source et aussi le databind. Quelque chose dans le sens du code suivant:

Page_Load 

if(!Page.IsPostBack) 
{ 
    gv1.DataSource = GetData(); 
    gv1.DataBind(); 
} 
Questions connexes