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

TypeScript Discussion :

[Ionic 3] Liste contenant un checkbox et un bouton


Sujet :

TypeScript

  1. #1
    Invité
    Invité(e)
    Par défaut [Ionic 3] Liste contenant un checkbox et un bouton
    Bonjour,

    Voici le code html de ma page :
    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    <ion-header>
     
      <ion-navbar>
        <ion-title>Liste des demandes</ion-title>
        <ion-buttons end>
          <button ion-button icon-only (click)="closeModal()">
              <ion-icon item-right name="ios-close-outline"></ion-icon>
          </button>
      </ion-buttons>
      </ion-navbar>
     
    </ion-header>
     
     
    <ion-content padding>
      <ion-list>
        <table width="100%">
          <tr *ngFor="let MaDemande of DemandesATraiter" >
            <td>
                <ion-checkbox checked="{{MaDemande.checked}}" (ionChange)="updateDemande(MaDemande)"></ion-checkbox>
     
            </td>
            <td>
                <button ion-item (click)="select_item($event, MaDemande)">
                    Collaborateur : {{MaDemande.collaborateur}}<br/>
                    Support : {{MaDemande.support}} <br/>
                    Contrat : {{MaDemande.numContrat}} <br/>
                    Date de début : {{MaDemande.DateDebut}} <br/>
                    Date de fin : {{MaDemande.DateFin}}<br/>
                    Statut : {{MaDemande.statutString}}<br/>
                    Refus : {{MaDemande.refuse}}
                  </button>
            </td>
          </tr>
        </table>
      </ion-list>
     
      <button type="submit" ion-button full (click)="traiterDemandes();">Traiter les demandes</button>
    </ion-content>

    Le code de la page ts :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    import { Component } from '@angular/core';
    import { IonicPage, NavController, NavParams, ModalController } from 'ionic-angular';
    import {DetailDemandePage} from '../detail-demande/detail-demande';
    //import {AppService} from '../../app/app-service';
     
    @IonicPage()
    @Component({
      selector: 'page-liste-demandes',
      templateUrl: 'liste-demandes.html',
      //providers: [AppService]
    })
    export class ListeDemandesPage {
      public DemandesATraiter:any;
      public ListeRefus:any;
     
      constructor(public navCtrl: NavController, public navParams: NavParams, /*private AppService:AppService, */private modalCtrl:ModalController) {
        this.DemandesATraiter=this.navParams.get("Demandes");
        this.ListeRefus=this.navParams.get("Refus");
        //alert(JSON.stringify(this.ListeRefus));
      }
     
     closeModal(){
      this.navCtrl.pop();
     }
     
     select_item(event, var_item){
      let indRefus:number;
      let profileModal = this.modalCtrl.create(DetailDemandePage, {
        infoDemande: var_item,
        Refus:this.ListeRefus
      });+
      profileModal.onDidDismiss(data=>{
        if(data)
        {
          if(data.Accepte=="0")
          {
            indRefus=Number(data.indRefus);
            this.DemandesATraiter[var_item.indice].statut="0";
            this.DemandesATraiter[var_item.indice].statutString=var_item.messRefuse;
            this.DemandesATraiter[var_item.indice].refuse=this.ListeRefus[indRefus].libelle;
            this.DemandesATraiter[var_item.indice].oidrefuse=this.ListeRefus[indRefus].oid;
            this.DemandesATraiter[var_item.indice].indiceRefus=data.indRefus;
           }
          else
          {
            this.DemandesATraiter[var_item.indice].statut="1";
            this.DemandesATraiter[var_item.indice].statutString=var_item.messAccepte;
            this.DemandesATraiter[var_item.indice].refuse="";
            this.DemandesATraiter[var_item.indice].oidrefuse="";
            this.DemandesATraiter[var_item.indice].indiceRefus="0";
          }
          this.DemandesATraiter[var_item.indice].checked=true;
        }
      });
      profileModal.present();
    } //select_item
     
    updateDemande(param_item:any){
      if(param_item){
        if(!param_item.checked){
          this.DemandesATraiter[param_item.indice].statut="1";
          this.DemandesATraiter[param_item.indice].statutString=param_item.messAccepte;
          this.DemandesATraiter[param_item.indice].refuse="";
          this.DemandesATraiter[param_item.indice].oidrefuse="";
          this.DemandesATraiter[param_item.indice].indiceRefus="0";
        }
        else
        {
          this.DemandesATraiter[param_item.indice].statut="1";
          this.DemandesATraiter[param_item.indice].statutString="";
          this.DemandesATraiter[param_item.indice].refuse="";
          this.DemandesATraiter[param_item.indice].oidrefuse="";
          this.DemandesATraiter[param_item.indice].indiceRefus="0";
        }
     
        this.DemandesATraiter[param_item.indice].checked=!param_item.checked;
      }
    }//updateDemande
     
    traiterDemandes(){
     
    }
    }
    Ce que j'aimerai faire : dans la fonction select_item, quand le modal retourne une promesse, le checkbox de la ligne passe à true.
    Le soucis que je rencontre, si le checkbox est à false (lors de l'ouverture de la page, les checkbox sont tous initialisés à false), il ne m'est pas possible de le faire passer à true par programmation, ce message d'erreur apparait :
    Runtime Error
    ExpressionChangedAfterItHasBeenCheckedError : Expression has changed after it was checked. Previous value: 'true'? Current value: 'false'
    Des idées de solution?
    Merci
    Dernière modification par Invité ; 23/11/2017 à 17h57.

  2. #2
    Membre chevronné

    Homme Profil pro
    Ingénieur Hospitalier
    Inscrit en
    Juillet 2004
    Messages
    993
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Hospitalier
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 993
    Points : 1 768
    Points
    1 768
    Billets dans le blog
    1
    Par défaut
    Salut as tu essayé de forcer le checkbox a true sans lui passé ta valeur? Utilise tu ng?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <ion-checkbox checked (ionChange)="updateDemande(MaDemande)"></ion-checkbox>

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour headmax,
    Pour des raisons techniques, nous changeons le mode de fonctionnement de la page, j'ai enlevé le checkbox, le but initial était de faire un traitement en masse en faisant appel à un web service rest sur toutes les lignes qui sont cochées, le soucis est la longueur de la requête qui va être tellement longue (va facilement excéder les 300 000 caractères), du coup, le traitement se fera demande par demande.
    Merci quand même

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 12
    Dernier message: 03/12/2007, 18h53
  2. Liste avec 2 CheckBox et 1 Label
    Par vgonsu dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 17/12/2006, 17h37
  3. Réponses: 11
    Dernier message: 01/12/2006, 10h27
  4. [C#] Tableau généré contenant des checkbox
    Par la_muraille dans le forum ASP.NET
    Réponses: 3
    Dernier message: 04/04/2005, 12h16

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