IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET Discussion :

GridView Filtered + CheckBox Multiple selection ne réagit plus au OnCheckedChange.


Sujet :

ASP.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Inscrit en
    Août 2005
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 7
    Par défaut GridView Filtered + CheckBox Multiple selection ne réagit plus au OnCheckedChange.
    Salut à tous,

    Bon, je l'avoue le titre est un peu bof, mais c'est ce que j'ai trouvé de mieux pour caractériser mon problème.

    J'ai un Gridview imbriqué dans un Gridview, dans lequel j'ai mis des Checkbox en première colonne (dans un <ItemTemplate>). Ces Checkbox's me permettent de sélectionner plusieurs lignes pour pouvoir leur appliquer un traitement via une DropDownList et un Button tous deux externes au Gridview.
    J'espère que jusque là c'est clair

    Au click de chaque CheckBox je déclanche un OnCheckedChanged="xxx" (avec AutoPostBack="true") car j'ai un petit traitement à appliquer avant d'activer la sélection.
    J'espère que je suis toujours clair

    Tout cela fonctionne parfaitement.

    Maintenant grâce à divers DropDownList et TextBox je peux filter mon gridview, en appliquant ce filtre à mon SqlDataSource:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SqlDataSource_xxx.FilterExpression = FilterExpression.ToString();
    Le filtre fonctionne très bien et me retourne les enregistrements souhaités.

    Maintenant je veux en sélectionner quelques-uns grâce à mes CheckBox's...
    Et là c'est le drame.

    Il prends le Click, passe dans l'AutoPostBack (la page se recharge) mais reste à la même valeur: si il était checked il reste checked, si il était unchecked il reste unchecked.
    En mode Debug on voit qu'il ne prend jamais en compte l'Event OnCheckedChanged.



    Pour résumer:
    Sans Filtre, l'évenement OnCheckedChanged est appelé et réalisé.
    Avec Filtre, l'évenement OnCheckedChanged n'est appelé et pas réalisé.

    Si quelqu'un peut m'aider à comprendre pourquoi ...
    Merci, et bon casse-tête.

    Big Ben.

  2. #2
    Membre éclairé Avatar de gdkenny
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    251
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juillet 2005
    Messages : 251
    Par défaut
    es-tu bien sur que lorsque le filtre est appliqué, il l'est lors de tous les postbacks?

  3. #3
    Membre du Club
    Inscrit en
    Août 2005
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 7
    Par défaut
    Noramlement oui, puisque après application du filtre je Bind...

    Mais mon problème est plus sévère.
    Vu que j'ai un Gridview imbriqué dans un Gridview ça me pose pas mal de problèmes. Mais j'ai pas encore trouvé de solutions pour faire autrement.
    Et du coup sur les gros projets (lorsque j'ai pas loin de 1000 enregistrements dans le Gridview) ça me prends des plombes à chaque DataBind.

    Ce qu'il faut que je fasse c'est que je trouve la possibilité de Binder qu'une seule ligne du Gridview... et je ne sais pas si c'est possible.
    Donc question: Peut-on faire un Databind sur seulement une partie d'un Gridview ?

    Sinon il faut que je reformate mon Gridview pour supprimer le Gridview imbriqué, et donc masquer certaines colonnes dans certaines lignes (genre 1 ligne sur 2 j'ai:

    1 | Nom | Prénom | Value1 | Value2 | Valule3
    2 | ---- | ------- | Value4 | Value5 | Value6

    Avec évidemment pour "2" un enregistrement complêt dans la base, mais non visible, car 1 et 2 sont liés...
    Donc 2e question: Peut-on ne pas afficher les infos d'un BoundField en fonction des infos du GridRow précédent ?
    Ca je pense que oui, mais là pour un vendredi j'ai pas trop envie de me casser la tête... et j'ai surtout d'autres casseroles sur le feu

    Bref un peu complexe.
    Donc si quelqu'un a une idée.
    Merci.

    A plus,
    Big Ben.

  4. #4
    Membre éclairé Avatar de gdkenny
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    251
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juillet 2005
    Messages : 251
    Par défaut
    Déjà tu pourrais gérer la pagination sur ton gridview.
    le gridview contient son propre mécanisme de pagination.

    Il y a déjà des infos à ce sujet sur le forum.

    Pour ta seconde question oui c'est possible. je ne peux pas détailler parce que tu ne donne pas beaucoup d'infos sur le problème mais voilà la théorie:
    tu récupère l'index de ton dataitem. A partir de la tu peux trouver l'index de l'élément précédent (en faisant -1 )
    Et voilà! En passant par la datasource tu peux retrouver les infos du row précédent et faire tes tests et actions si besoin

Discussions similaires

  1. Checkbox multiples dans un Gridview
    Par derfez dans le forum Silverlight
    Réponses: 6
    Dernier message: 31/08/2010, 08h56
  2. [MySQL] Afficher les checkbox et select cochés d'un enregistrement
    Par pod1978 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 03/04/2006, 00h19
  3. Checkbox multiples
    Par amika dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 29/03/2006, 15h41
  4. Requete Selection ne fonctionne plus correctement
    Par isa911 dans le forum Access
    Réponses: 3
    Dernier message: 15/12/2005, 09h08
  5. Réponses: 3
    Dernier message: 21/04/2005, 12h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo