/// ////////////////////////////////////////////////////////// private void ItemFiltreClick(object sender, EventArgs e) { if (!(sender is CMenuItemFiltre)) { return; } CFiltreDynamiqueInDb filtreInDb = ((CMenuItemFiltre)sender).Filtre; CFiltreDynamique filtreDyn = filtreInDb.Filtre; CFiltreData filtreData = CFormFiltreDynamic.GetFiltreData(filtreDyn); if (filtreData == null) { return; } CListeObjetsDonnees listeSel = new CListeObjetsDonnees(CSc2iWin32DataClient.ContexteCourant, m_typeLien.TypeElements); filtreData = CFiltreData.GetAndFiltre(filtreData, m_typeLien.FiltreDataAssocie); listeSel.Filtre = filtreData; try { if (listeSel.CountNoLoad == 0) { CFormAlerte.Afficher(I.T("No @1 matches the filter|30089", DynamicClassAttribute.GetNomConvivial(m_typeLien.TypeElements)), EFormAlerteType.Exclamation); return; } if (CFormAlerte.Afficher(I.T("You will add @1 element(s) to the selection. Continue ?|30088", listeSel.CountNoLoad.ToString()), EFormAlerteType.Question) == DialogResult.Yes) { CListeObjetsDonnees listeExiste = m_entreeAgenda.RelationsElementsAgenda; listeExiste.Filtre = new CFiltreData(CRelationTypeEntreeAgenda_TypeElementAAgenda.c_champId + "=@1", m_typeLien.Id); listeExiste.Filtre = CFiltreData.GetAndFiltre(listeExiste.Filtre, new CFiltreData(CRelationTypeEntreeAgenda_TypeElementAAgenda.c_champId + "=@1", m_typeLien.Id)); using (CWaitCursor waiter = new CWaitCursor()) { foreach (CObjetDonneeAIdNumerique objet in listeSel) { listeExiste.Filtre = new CFiltreData(CRelationEntreeAgenda_ElementAAgenda.c_champIdElementAAgenda + "=@1", objet.Id); if (listeExiste.Count == 0) { CRelationEntreeAgenda_ElementAAgenda rel = new CRelationEntreeAgenda_ElementAAgenda(m_entreeAgenda.ContexteDonnee); rel.CreateNewInCurrentContexte(); rel.EntreeAgenda = m_entreeAgenda; rel.RelationTypeEntree_TypeElement = m_typeLien; rel.ElementLie = objet; } } UpdateListe(); } } } catch { } }
private void SelectionMultiples() { CListeObjetsDonnees liste = ListeRelations; CObjetDonneeAIdNumerique[] elts = (CObjetDonneeAIdNumerique[])CInterpreteurTextePropriete.CreateListeFrom( liste, "ElementLie", typeof(CObjetDonneeAIdNumerique)); elts = CFormSelectElementsMultiples.GetListeElements( m_typeRelation.TypeElements, m_typeRelation.FiltreDataAssocie, elts); if (elts != null) { using (CWaitCursor waiter = new CWaitCursor()) { //Table Entite->Vrai si existe dans les deux liste // ->Faux si existe uniquement dans l'ancienne liste (à supprimer) // ->Null si existe uniquement dans la nouvelle liste (à créer) Hashtable tableExistants = new Hashtable(); foreach (CRelationEntreeAgenda_ElementAAgenda rel in ListeRelations) { tableExistants[rel.ElementLie] = false; } foreach (CObjetDonneeAIdNumerique objet in elts) { if (tableExistants[objet] == null) //création { CRelationEntreeAgenda_ElementAAgenda rel = new CRelationEntreeAgenda_ElementAAgenda(m_entreeAgenda.ContexteDonnee); rel.CreateNewInCurrentContexte(); rel.ElementLie = objet; rel.EntreeAgenda = m_entreeAgenda; rel.RelationTypeEntree_TypeElement = m_typeRelation; } else { tableExistants[objet] = true; } } //Supprime ceux qui doivent être supprimés foreach (CRelationEntreeAgenda_ElementAAgenda rel in ListeRelations.ToArrayList()) { object val = tableExistants[rel.ElementLie]; if (val is bool && ((bool)val) == false) { rel.Delete(); } } } } RefreshText(); }
private void AjouteElementUnique() { if (m_selectionneurElement.ElementSelectionne is CObjetDonneeAIdNumerique) { CObjetDonneeAIdNumerique objet = (CObjetDonneeAIdNumerique)m_selectionneurElement.ElementSelectionne; CListeObjetsDonnees liste = m_entreeAgenda.RelationsElementsAgenda; liste.Filtre = new CFiltreData(CRelationTypeEntreeAgenda_TypeElementAAgenda.c_champId + "=@1", m_typeLien.Id); liste.Filtre = CFiltreData.GetAndFiltre(liste.Filtre, new CFiltreData(CRelationEntreeAgenda_ElementAAgenda.c_champIdElementAAgenda + "=@1 and " + CRelationEntreeAgenda_ElementAAgenda.c_champTypeElementAAgenda + "=@2", objet.Id, objet.GetType().ToString())); if (liste.Count == 0) { CRelationEntreeAgenda_ElementAAgenda rel = new CRelationEntreeAgenda_ElementAAgenda(m_entreeAgenda.ContexteDonnee); rel.CreateNewInCurrentContexte(); rel.EntreeAgenda = m_entreeAgenda; rel.ElementLie = objet; rel.RelationTypeEntree_TypeElement = m_typeLien; UpdateListe(); } } }