/// ////////////////////////////////////////////////////////// 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 { } }
public override CResultAErreur TraitementAvantSauvegarde(CContexteDonnee contexte) { CResultAErreur result = base.TraitementAvantSauvegarde(contexte); if (!result) { return(result); } DataTable table = contexte.Tables[GetNomTable()]; bool bOldMode = contexte.IsModeDeconnecte; if (!bOldMode) { contexte.BeginModeDeconnecte(); } ArrayList lst = new ArrayList(table.Rows); foreach (DataRow row in lst) { if (row.RowState == DataRowState.Deleted) { CRelationEntreeAgenda_ElementAAgenda relation = new CRelationEntreeAgenda_ElementAAgenda(row); relation.VersionToReturn = DataRowVersion.Original; if (relation.RelationTypeEntree_TypeElement.SuppressionAutomatique && relation.EntreeAgenda.Row.RowState != DataRowState.Deleted) { bool bIsRemplace = false; foreach (CRelationEntreeAgenda_ElementAAgenda rel in relation.EntreeAgenda.RelationsElementsAgenda) { if (rel.RelationTypeEntree_TypeElement.Id == relation.RelationTypeEntree_TypeElement.Id) { bIsRemplace = true; break; } } if (!bIsRemplace) { result = relation.EntreeAgenda.Delete(); if (!result) { return(result); } } } } } if (!bOldMode) { contexte.EndModeDeconnecteSansSauvegardeEtSansReject(); } return(result); }
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(); }
////////////////////////////////////////////////////////////////////// public override CResultAErreur VerifieDonnees(CObjetDonnee objet) { CResultAErreur result = CResultAErreur.True; try { CRelationEntreeAgenda_ElementAAgenda rel = (CRelationEntreeAgenda_ElementAAgenda)objet; return(result); } catch (Exception e) { result.EmpileErreur(new CErreurException(e)); result.EmpileErreur(I.T("Error in the data of Diary Entry|297")); } return(result); }
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(); } } }
private void m_btnSelect_Click(object sender, System.EventArgs e) { if (m_typeRelation.Multiple) { SelectionMultiples(); //CFormSelectLiensAgendaMultiples.GetListeElements ( m_entreeAgenda, m_typeRelation ); RefreshText(); } else { Type typeForm = CFormFinder.GetTypeFormToList(m_typeRelation.TypeElements); if (typeForm == null || !typeForm.IsSubclassOf(typeof(CFormListeStandard))) { CFormAlerte.Afficher(I.T("The system cannot list elements from type @1|30119", m_typeRelation.TypeElementsConvivial), EFormAlerteType.Exclamation); return; } CObjetDonneeAIdNumerique objetSel; CFormListeStandard form = (CFormListeStandard)Activator.CreateInstance(typeForm, new object[] {}); form.FiltreDeBase = m_typeRelation.FiltreDataAssocie; objetSel = (CObjetDonneeAIdNumerique)CFormNavigateurPopupListe.SelectObject(form, null, CFormNavigateurPopupListe.CalculeContexteUtilisation(this)); if (objetSel != null) { if (ListeRelations.Count > 1) { DeleteAll(); } if (ListeRelations.Count == 0) { CRelationEntreeAgenda_ElementAAgenda rel = new CRelationEntreeAgenda_ElementAAgenda(m_entreeAgenda.ContexteDonnee); rel.EntreeAgenda = m_entreeAgenda; rel.RelationTypeEntree_TypeElement = m_typeRelation; } ((CRelationEntreeAgenda_ElementAAgenda)ListeRelations[0]).ElementLie = objetSel; RefreshText(); } } }