//-------------------------------------------------- private void m_lnkRestore_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) { if (!m_bCanRestore) { return; } DataTable table = m_grilleProprietes.DataSource as DataTable; if (table != null && m_objetAffiche != null && m_valeursAffichees != null) { using (CContexteDonnee contexte = new CContexteDonnee(m_objetAffiche.ContexteDonnee.IdSession, true, false)) { CObjetDonneeAIdNumerique objetAModifier = contexte.GetObjetInThisContexte(m_objetAffiche) as CObjetDonneeAIdNumerique; List <DataRow> rowsSelected = new List <DataRow>(); foreach (DataRow row in table.Rows) { if ((bool)row[m_strColChecked]) { rowsSelected.Add(row); } } CResultAErreur result = CResultAErreur.True; if (rowsSelected.Count > 0) { objetAModifier.BeginEdit(); foreach (DataRow row in rowsSelected) { IChampPourVersion champ = row[m_strColObjetHistorique] as IChampPourVersion; if (champ != null) { IJournaliseurDonneesChamp journaliseur = CGestionnaireAChampPourVersion.GetJournaliseur(champ.TypeChampString); if (journaliseur != null) { result = journaliseur.AppliqueValeur(m_version.Id, champ, objetAModifier, m_valeursAffichees[champ]); if (!result) { break; } } } } if (result) { result = objetAModifier.CommitEdit(); } if (!result) { objetAModifier.CancelEdit(); CFormAlerte.Afficher(result.Erreur); } else { InitForObjet(objetAModifier, m_version); } } } } }
//------------------------------------------------------ public void InitForObjet(CObjetDonneeAIdNumerique objet, CVersionDonnees version) { CSessionClient session = CSessionClient.GetSessionForIdSession(objet.ContexteDonnee.IdSession); IInfoUtilisateur info = session.GetInfoUtilisateur(); if (info != null) { m_bCanRestore = info.GetDonneeDroit(CDroitDeBaseSC2I.c_droitAdministration) != null; } m_bCanRestore &= version != null && version.TypeVersion.Code == CTypeVersion.TypeVersion.Archive; m_panelRestore.Visible = m_bCanRestore; if (m_contexteDonnees != null) { m_contexteDonnees.Dispose(); } m_tableValeurs.Clear(); m_objetDepart = null; m_version = null; m_arbreObjet.Nodes.Clear(); if (objet == null || version == null) { return; } m_contexteDonnees = new CContexteDonnee(objet.ContexteDonnee.IdSession, true, false); m_contexteDonnees.SetVersionDeTravail(-1, false); //Travaille sur toutes les versions m_objetDepart = (CObjetDonneeAIdNumerique)m_contexteDonnees.GetObjetInThisContexte(objet); m_version = (CVersionDonnees)m_contexteDonnees.GetObjetInThisContexte(version); List <int> lstIds = new List <int>(); if (m_version.TypeVersion.Code == CTypeVersion.TypeVersion.Previsionnelle) { CVersionDonnees verTmp = m_version.VersionParente; while (verTmp != null) { lstIds.Add(verTmp.Id); verTmp = verTmp.VersionParente; } } m_nIdsVersionsSuccessives = lstIds.ToArray(); CreateNodeObjet(m_arbreObjet.Nodes, m_objetDepart); }