ASP.NET déclaration de mise à jour GridView
-
26-10-2019 - |
Question
J'utilise VS2005 C # et SQL Server 2005.
J'ai un GridView et voici ma déclaration en cours de mise à jour:
UpdateCommand="UPDATE [UserData] SET [UserID] = @UserIDe, [Username] = @Username, [Age] = @Age, [MemberType]=@MemberType WHERE [UserID] = @UserID
La déclaration ci-dessus mettra à jour la ligne d'utilisateur à identifier par UserID
.
Cependant, je voudrais la UserID
variable soit modifiable, donc si je modifier mon UserID
en mettant à jour la table, la ligne ne sera pas mis à jour parce que UserID
particulier ne peut pas exister.
Comment puis-je utiliser la UpdateCommand
et mettre à jour la ligne en identifiant le row number
de la ligne éditée?
La solution
Cela peut être fait par le suivi de toutes les valeurs d'origine. Visual Studio fera pour vous si vous utilisez l'assistant pour générer vos instructions SQL, et vous sélectionnez l'option « utiliser l'accès concurrentiel optimiste » comme le montre ici.
Un exemple de SQL généré peut être trouvé ici .
Exemple de code de la page:
UPDATE Products SET
ProductName = @ProductName,
UnitPrice = @UnitPrice
WHERE
ProductID = @original_ProductID AND
ProductName = @original_ProductName AND
UnitPrice = @original_UnitPrice
La lecture de l'article, vous devriez être en mesure d'appliquer le même type de requête à votre situation, en utilisant les valeurs d'origine devrait vous permettre de contourner la nécessité d'une clé primaire. Cependant, je tiens à souligner que d'avoir une clé d'identification modifiable est une très mauvaise conception, comme vous ne pouvez pas garantir qu'il est unique. vous pouvez très facilement mettre à jour plus d'un enregistrement, ainsi qu'une foule d'autres questions.
Autres conseils
Sous la GridView il y a les besoins de table d'avoir au moins un ID unique afin de mettre à jour un enregistrement. Si vous devez modifier le code d'utilisateur, vous devez avoir une clé fixe dans votre table. nom au moins comme USERKEY. Je pense que GridView Restée modifier des données et mise à jour aussi longtemps que vous avez un pointeur sur cette ligne. Dans le cas contraire, retirez le UserID de la collection DataKeyNames et lui affecter les colonnes que vous pensez sont uniques et ne change pas.