none
[gridview] Transformer un confirm javascript en alert si donnée non supprimable RRS feed

  • Question

  • Bonjour,

    j'ai un soucis au niveau du gridview...

    Tout d'abord j'ai voulu le programmer a la main mais ça m'a pris un temps monstre pour trouver ce que je voulais... J'ai donc décidé de travailler en mode design... J'utilise beaucoup de gridviews pour l'affichage de mes données. J'y ai ajouté des colonnes de suppression et de modification(je fais l'ajout a part).

     

    Mon soucis est le suivant : après avec cherché sur internet comment afficher un message de confirmation pour la suppression j'ai trouvé le code source suivant...

     

    [code]

    Protected Sub GridView1_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GridView1.RowDataBound

    ' This block of code is used to confirm the deletion of current record.

    If e.Row.RowType = DataControlRowType.DataRow Then

    Dim l As Object

    l = e.Row.Controls(2)

    Dim id As Object

    id = GridView1.SelectedDataKey

    Label1.Text = CInt(id)

    l.Attributes.Add("onclick", "BLOCKED SCRIPTreturn confirm('Etes-vous sur de vouloir supprimer?')")

    End If

    End Sub

    [/code]

    et lorsque la données est utilisée dans une autre table, la navigateur affiche une erreur... ce qui est normal !

    J'aimerais donc sur le click du delete du gridview, changer mon message javascript en un message d'alert dans le style : 'Vous ne pouvez pas supprimer cela'.

    Je ne sais pas comment faire pour obtenir l'id  du datakeyname de la ligne selectionnée dans la procedure la

    pour pouvoir faire

    if pas de données utilisant celle ci

    alors return confirm

    else return alert...

    Dans mon cas la colonne contenant l'id de la table a visible a false , je ne veux pas que l'utilisateur la voit.

     

    Merci par avance pour vos réponses.

    Cordialement,

    Tid.

    mercredi 21 mai 2008 14:25

Toutes les réponses

  • Bonjour,

     

    en javascript la méthode getElementById() me semble approprié pour votre problème, voici 2 liens qui pourraient vous aider :

    http://www.toutjavascript.com/reference/reference.php?iref=14

    http://www.tizag.com/javascriptT/javascript-getelementbyid.php

     

    En espérant avoir pu vous aider.

     

    Audrey

     

    jeudi 22 mai 2008 09:38
  • Bonjour,

     

    Dans la page aspx, le GridView peut être défini comme :

     

    Code Snippet

    < P>

    DataKeyNames="productid, productname, etc ..." ... />

     

     

     

    La propriété DataKeyNames permet de définir toutes les colonnes qui seront persistées dans le ViewState.

    En général on met uniquement le nom de la colonne qui contient la clé primaire. Cependant si vous voulez récupérer les valeurs des champs sans être obligé de scruter toutes les cellules du GridView, il est intéressant de mettre dans le DataKeyNames tous les champs qu'on souhaite récupérer par la suite.

    A l'exécution, vous récuperez ces valeurs dans le tableaux DataKeys du GridView

     

    comme par exemple :

     

    Code Snippet

    dim myData as DataKey = GridView1.SelectedDataKey

    dim myID as string = myData.Values("productid").ToString()

    dim myProductName as string = myData.Values("productname").ToString()

     

     

     

     

    Cordialement
    jeudi 22 mai 2008 09:51
  • Merci de vos réponses, ça m'a bien aidé.

    Néanmoins j'ai encore un soucis ..

    Sur mon gridview ce que je veux c'est afficher mes données avec 2 liens a chaque ligne  : modifier / supprimer

    Le soucis c'est que en fesant une simple fonction de validation du style :

    Code Snippet

    function valide(id)

    si la donnée est utilisée ailleurs (requete)

    return false

    sinon return vrai

     

    Ensuite dans le code normalement je ne fais que ça :

     

    gridview RowDataBound
    Code Snippet

    Si valide(id) = false alors

    afficher alert

    sinon afficher confirm

     

     

    Les 2 soucis sont les suivants :

    1/ dans la source on voit bien que il n'y a que 1 message qui est le même pour toutes les lignes...

    2/ puisque la suppression se fait a partir d'un lien, même si j'affiche une alert, la page renvoie une erreur après avoir clické sur ok car l'alert ne fonctionne pas comme un confirm a false...

     

    Avez vous des idées?

     

    Cordialement,

    Tid.

     

     

    vendredi 23 mai 2008 08:29