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

Mode arborescent

Message précédent Message précédent   Message suivant Message suivant
  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.

+ 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