////////////////////////////////////////////////////////////
        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;
            }
        }