2009-04-16 6 views
0

Si je lie GridView à SqlDataSource et que vous définissez AutoGenerateEditButton sur true, si j'essaie ensuite de mettre à jour un champ (ce champ étant une clé primaire dans la base de données), la base de données doit renvoyer une erreur SqlException devrait donc être lancé ?!GridView ne signale pas d'exception

Pourquoi la page ne signale-t-elle pas une exception? Au lieu de cela, tout Gridview remet tous les champs de cette ligne à leurs valeurs d'origine.


Quand j'exécuté même déclaration de mise à jour avec le code suivant, je me suis Impossible de mettre à jour la colonne d'identité d'exception « EmployeeID », donc je suppose que Sql Server a fait rapport même erreur lorsque GridView a essayé de mettre à jour, mais pour une exception raison n'a pas été soulevée:

 SqlConnection sc = new SqlConnection(); 
     sc.ConnectionString = @"Data source=localhost; integrated security=sspi; initial catalog=northwind;"; 
     SqlCommand sComand = new SqlCommand(); 

     sComand.Connection = sc; 
     sComand.CommandText = "update Employees set EmployeeId=100,FirstName='Suzy',"+ 
        "LastName='Smile',City='Moon' where EmployeeId=1"; 
     sc.Open(); 
     int I = sComand.ExecuteNonQuery(); 


BTW - J'ai essayé avec réglage DataKeyNames = "EmployeeI d », mais exception toujours pas soulevé

Thanx

EDIT:
Bonjour,

Désolé de ne pas répondre plus tôt, mais je ne l'ai pas remarqué que je reçu une réponse.

De toute façon, pour une raison quelconque, cela fonctionne maintenant, ce qui signifie que GridView signale une exception. J'ai donc dû faire une erreur dans mon code, mais en raison de la réécriture constante de mon code, je ne sais pas où cette erreur serait. Désolé pour perdre votre temps et je vous remercie de me aider


Répondre

2

En regardant l'erreur et votre code. Il semble être une erreur de base de données SQL et pas un problème avec GridView. SQL n'autorise pas les mises à jour des colonnes IDENTITY car elles sont générées par le moteur de base de données. Dans ce cas, "EmployeeId" est un tel champ.

+0

Je suis venu ici pour le dire .. + 1 – Meff

+0

Mais pourquoi le code ci-dessus, qui exécutait la même instruction de mise à jour que GridView, signalait une exception SqlException, mais pas Gridview? – SourceC

+1

Il semble que le contrôle GridView avale l'exception sauf si vous définissez la propriété-> EnableModelValidation = "true" –

0

J'ai le même type de problème: j'ai intercepté l'exception dans le gestionnaire de sélection de la source de données objet, mais j'ai oublié de définir l'exception comme étant gérée: e.ExceptionHandled = true. La page rendue sans mon message d'erreur sur la page, comme si aucune erreur n'est survenue. Avec e.ExceptionHandled = true, tout allait bien.

Questions connexes