//////////////////////////////////////////////////////////// private void Init( CObjetDonnee objetParent, string strNomTableFille, string[] strChampsFille, bool bAppliquerFiltreParDefaut) { m_strNomTableFille = strNomTableFille; m_strChampsFille = strChampsFille; m_objetConteneur = objetParent; if (!RemplissageProgressif) { objetParent.AssureDependances(strNomTableFille, strChampsFille); } /*Stef 26042012 : suppression de cette optimisation, * le problème est que si on ajoute des fils, alors, le filtre ne les voit plus ! * DataTable tableFille = ContexteDonnee.GetTableSafe(strNomTableFille); * if (!RemplissageProgressif && tableFille != null && tableFille.PrimaryKey.Length == 1 && * tableFille.PrimaryKey[0].DataType == typeof(int)) * { * string strFK = ContexteDonnee.GetForeignKeyName(objetParent.GetNomTable(), strNomTableFille, strChampsFille); * DataRow[] rows = objetParent.Row.Row.GetChildRows(strFK); * if (rows.Length == 0) * m_filtrePrincipal = new CFiltreDataImpossible(); * else * { * DataColumn colKey = tableFille.PrimaryKey[0]; * StringBuilder bl = new StringBuilder(); * foreach (DataRow row in rows) * { * bl.Append(row[colKey]); * bl.Append(','); * } * bl.Remove(bl.Length - 1, 1); * m_filtrePrincipal = new CFiltreData(colKey.ColumnName + " in (" + bl.ToString() + ")"); * } * } * else*/ m_filtrePrincipal = CFiltreData.CreateFiltreAndSurValeurs(strChampsFille, objetParent.GetValeursCles()); m_bAppliquerFiltreParDefaut = bAppliquerFiltreParDefaut; #if PDA CObjetDonnee objet = (CObjetDonnee)Activator.CreateInstance(CContexteDonnee.GetTypeForTable(strNomTableFille)); objet.ContexteDonnee = m_objetConteneur.ContexteDonnee; #else CObjetDonnee objet = (CObjetDonnee)Activator.CreateInstance(CContexteDonnee.GetTypeForTable(strNomTableFille), new object[] { m_objetConteneur.ContexteDonnee }); #endif CFiltreData filtre = bAppliquerFiltreParDefaut?objet.FiltreStandard:null; if (filtre != null) { m_filtrePrincipal = CFiltreData.GetAndFiltre(m_filtrePrincipal, filtre); } if (!RemplissageProgressif) { //Puisque les objets sont lus, il n'y a aucune raison d'aller relire cette liste depuis //La base de données InterditLectureInDB = true; m_bIsToRead = false; } }