Question

J'écris un prototype frontal simple en utilisant un GridView rempli via une fonction, plutôt que d'être directement lié à une source de données SqlServer.

Je peux donc supprimer une ligne / un enregistrement de la grille / de la base de données sous-jacente que je suis actuellement

  1. Définition de AutoGenerateDeleteButton = true
  2. Affichage des identifiants d’enregistrement uniques dans la première colonne
  3. Gestion de l'événement RowDeleting
  4. Obtention de l'identifiant en récupérant le grid.Rows [e.RowIndex] .Cells [idIndex] .Text
  5. Transmettre ce numéro à une fonction qui supprime

Cela semble fonctionner correctement, mais je préférerais ne pas afficher les identifiants aux utilisateurs car ils ne signifient rien pour eux.

J'ai essayé de définir la propriété Visible de la colonne id sur false, mais l'étape 4 ci-dessus a renvoyé une chaîne vide - et donc aucun enregistrement n'a été supprimé.

Comment enregistrer le numéro d'identification masqué à chaque ligne?

Ou est-ce que j'y vais complètement de la mauvaise façon?

Suivi des réponses:

Merci pour les deux réponses, a fini par aller dans le sens DataKeyNames d'Eric. Pour les nouveaux utilisateurs d’ASP.NET comme moi, les étapes que j’ai suivies, où

  • Entre les lignes où j'ai défini les grilles DataSource et appelé DataBind (), j'ai ajouté

    grid.DataKeyNames = nouvelle chaîne [] {"id"};

  • Puis, dans la fonction de gestion de RowDeleting, j'ai obtenu mon identifiant avec

    grid.DataKeys [e.RowIndex] .Value

Était-ce utile?

La solution

GridView a une propriété DataKeyNames. Lorsque vous liez une source de données à la grille, vous définissez DataKeyNames (généralement avec un seul nom, votre champ PK). Vous ne montrez pas le PK, mais vous pouvez y accéder à partir de code-behind.

Autres conseils

Visible = false signifie que ne pas afficher la page. Vous souhaitez en faire un champ de modèle et utiliser un objet HiddenField pour conserver la valeur ou définir le style du contrôle sur "display: none". Ce serait le cas si le code côté client nécessitait un accès à la valeur d'un appel Ajax ou de quelque chose du genre.

Sinon, utilisez la propriété DataKeyNames comme le suggère @Eric Z Beard.

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