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?

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top