예제 #1
0
        //-----------------------------------------------
        void itemPollSetup_DropDownOpening(object sender, EventArgs e)
        {
            ToolStripMenuItem item = sender as ToolStripMenuItem;

            if (item != null)
            {
                item.DropDownItems.Clear();
            }
            CSnmpPollingSetup setup = item != null ? item.Tag as CSnmpPollingSetup : null;
            CEntiteSnmp       ett   = EditedElement as CEntiteSnmp;

            if (setup != null && ett != null)
            {
                CTypeDonneeCumulee tp = new CTypeDonneeCumulee(ett.ContexteDonnee);
                if (tp.ReadIfExists(setup.IdTypeDonneeCumulee))
                {
                    foreach (CChampDonneeCumulee champ in tp.GetChampsRenseignes())
                    {
                        string strNomChamp = tp.GetNomChamp(champ);
                        if (strNomChamp != null && strNomChamp.Length > 0)
                        {
                            ToolStripMenuItem itemAddToPolledField = new ToolStripMenuItem(strNomChamp);
                            itemAddToPolledField.Tag    = new CAddToPollData(setup, champ);
                            itemAddToPolledField.Click += new EventHandler(itemAddToPolledField_Click);
                            item.DropDownItems.Add(itemAddToPolledField);
                        }
                    }
                }
            }
        }
예제 #2
0
        private void InitFromParametre(  )
        {
            CTypeDonneeCumulee typeDonnee = new CTypeDonneeCumulee(CSc2iWin32DataClient.ContexteCourant);

            if (m_parametre.IdTypeDonneeCumulee != null)
            {
                if (!typeDonnee.ReadIfExists(m_parametre.IdTypeDonneeCumulee.Value))
                {
                    typeDonnee = null;
                }
            }
            if (typeDonnee == null)
            {
                m_tabControl.Visible = false;
                if (m_cmbTypeDonnee.ElementSelectionne != null)
                {
                    m_cmbTypeDonnee.ElementSelectionne = null;
                }
                return;
            }
            m_tabControl.Visible = true;
            m_cmbTypeDonnee.ElementSelectionne = typeDonnee;
            DataTable table = m_parametre.GetDataTableModelePourParametrage(CSc2iWin32DataClient.ContexteCourant);

            if (table != null)
            {
                m_panelTableauCroise.InitChamps(table, m_parametre.TableauCroise);
                m_panelTableauCroise.Enabled = true;
            }
            else
            {
                m_panelTableauCroise.Enabled = false;
            }

            m_panelFormatHeader.Init(m_parametre.FormatHeader, null, true);
            m_panelFormatRows.Init(m_parametre.FormatRows, null, false);

            InitFormatsChamps();

            InitFiltres(m_panelFiltresDeBase, m_parametre.FiltresDeBase, false);
            InitFiltres(m_panelFiltresUser, m_parametre.FiltresUtilisateur, true);

            m_cmbOperation.ValueMember    = "Valeur";
            m_cmbOperation.DisplayMember  = "Libelle";
            m_cmbOperation.DataSource     = CUtilSurEnum.GetCouplesFromEnum(typeof(OperationsAgregation));
            m_cmbOperation.SelectedValue  = (int)m_parametre.OperationCumul;
            m_txtLibelleTotal.Text        = m_parametre.LibelleTotal;
            m_chkShowExportButton.Checked = m_parametre.ShowExportButton;
            m_chkShowHeader.Checked       = m_parametre.ShowHeader;
        }
예제 #3
0
        private void m_cmbTypeDonnee_SelectionChangeCommitted(object sender, EventArgs e)
        {
            CTypeDonneeCumulee typeDonnee = m_cmbTypeDonnee.ElementSelectionne as CTypeDonneeCumulee;

            if (typeDonnee != null)
            {
                m_parametre.IdTypeDonneeCumulee = typeDonnee.Id;
            }
            else
            {
                m_parametre.IdTypeDonneeCumulee = null;
            }
            InitFromParametre();
        }
예제 #4
0
        public void Init(
            CParametreVisuChampTableauCroise parametre,
            CParametreVisuDonneePrecalculee parametreVisuDonneePrecalculee,
            CContexteDonnee contexteDonnee)
        {
            if (m_parametreVisuChamp != null)
            {
                MajChamps();
            }
            m_contexteDonnee      = contexteDonnee;
            m_parametreVisuDonnee = parametreVisuDonneePrecalculee;
            m_parametreVisuChamp  = parametre;
            if (parametre == null)
            {
                Visible = false;
                return;
            }
            Visible = true;
            CTypeDonneeCumulee      typeDonnee      = m_parametreVisuDonnee.GetTypeDonneeCumulee(m_contexteDonnee);
            CParametreDonneeCumulee parametreDonnee = null;

            if (typeDonnee != null)
            {
                parametreDonnee = typeDonnee.Parametre;
            }

            m_lblNomChamp.Text = parametre.ChampFinal.NomChamp;
            m_panelFormatStandard.Init(m_parametreVisuChamp.FormatParDefaut,
                                       parametre.GetObjetPourFormuleData(parametreDonnee), false);
            m_panelFormatHeader.Init(m_parametreVisuChamp.FormatHeader, null, true);


            CElementAVariablesDynamiques obj = m_parametreVisuChamp.GetObjetPourFormuleHeader(parametreDonnee);

            m_txtFormuleHeader.Init(obj,
                                    new CObjetPourSousProprietes(obj));

            obj = m_parametreVisuChamp.GetObjetPourFormuleData(parametreDonnee);
            m_txtFormuleData.Init(obj,
                                  new CObjetPourSousProprietes(obj));

            m_txtFormuleData.Formule   = m_parametreVisuChamp.FormuleData;
            m_txtFormuleHeader.Formule = m_parametreVisuChamp.FormuleHeader;
            m_txtSortOrder.IntValue    = m_parametreVisuChamp.SortOrder;
            m_chkDecroissant.Checked   = m_parametreVisuChamp.TriDecroissant;

            m_imageLink.Visible = m_parametreVisuChamp.ActionSurClick != null;
        }
예제 #5
0
        ///////////////////////////////////////////////////
        public override CResultAErreur VerifieDonnees(CObjetDonnee objet)
        {
            CResultAErreur result = CResultAErreur.True;

            try
            {
                CTypeDonneeCumulee type = (CTypeDonneeCumulee)objet;

                if (type.Libelle == "")
                {
                    result.EmpileErreur(I.T("The value label cannot be empty|141"));
                }
                if (!CObjetDonneeAIdNumerique.IsUnique(type, CTypeDonneeCumulee.c_champCode, type.Code))
                {
                    result.EmpileErreur(I.T("A data type with this code already exist|142"));
                }
            }
            catch (Exception e)
            {
                result.EmpileErreur(new CErreurException(e));
            }
            return(result);
        }
예제 #6
0
        /// <summary>
        /// Stocke le résultat d'une requête pour un type de données
        /// </summary>
        /// <param name="nIdTypeDonnee"></param>
        /// <param name="requete"></param>
        /// <returns></returns>
        public CResultAErreur StockeResultat(int nIdTypeDonnee, IIndicateurProgression indicateur)
        {
            using (C2iSponsor sponsor = new C2iSponsor())
            {
                sponsor.Register(indicateur);
                CResultAErreur result = CResultAErreur.True;
                if (m_tableCalculsEnCours[nIdTypeDonnee] != null)
                {
                    result.EmpileErreur(I.T("The recalculation for this cumulated data type is already in progress|143"));
                    return(result);
                }
                m_tableCalculsEnCours[nIdTypeDonnee] = true;
                CSessionProcessServeurSuivi sessionSuivi = null;
                try
                {
                    //Crée une session pour le calcul
                    CSessionClient session = CSessionClient.GetSessionForIdSession(IdSession);
                    if (session == null)
                    {
                        result.EmpileErreur(I.T("Session error|144"));
                        return(result);
                    }

                    System.Threading.Thread.CurrentThread.Priority = System.Threading.ThreadPriority.BelowNormal;
                    sessionSuivi = new CSessionProcessServeurSuivi();
                    result       = sessionSuivi.OpenSession(new CAuthentificationSessionServer(),
                                                            I.T("Recalculation of datas @1|145", nIdTypeDonnee.ToString()),
                                                            session);
                    if (!result)
                    {
                        result.EmpileErreur(I.T("Opening session error|146"));
                        return(result);
                    }
                    IdSession = sessionSuivi.IdSession;
                    System.Threading.Thread.CurrentThread.Priority = System.Threading.ThreadPriority.Lowest;
                    using (CContexteDonnee contexte = new CContexteDonnee(IdSession, true, false))
                    {
                        //Récupère le type de donnée
                        CTypeDonneeCumulee typeDonnee = new CTypeDonneeCumulee(contexte);
                        if (!typeDonnee.ReadIfExists(nIdTypeDonnee))
                        {
                            result.EmpileErreur(I.T("The cumulated data type @1 doesn't exist|147", nIdTypeDonnee.ToString()));
                            return(result);
                        }

                        if (indicateur != null)
                        {
                            indicateur.SetInfo(I.T("Existing datas recovery|148"));
                            indicateur.SetValue(0);
                        }

                        CParametreDonneeCumulee parametre = typeDonnee.Parametre;

                        //Lit les données pour ce type de donnée cumulée
                        CListeObjetsDonnees liste = new CListeObjetsDonnees(contexte, typeof(CDonneeCumulee));
                        liste.Filtre = new CFiltreData(CTypeDonneeCumulee.c_champId + "=@1",
                                                       nIdTypeDonnee);
                        liste.AssureLectureFaite();
                        if (parametre.ViderAvantChaqueCalcul)
                        {
                            result = VideTable(nIdTypeDonnee, contexte.Tables[CDonneeCumulee.c_nomTable]);
                            if (!result)
                            {
                                return(result);
                            }
                        }


                        //Liste des champs clé à lire
                        ArrayList lstClesALire = new ArrayList();
                        //Liste des champs destination des clés
                        ArrayList lstDestClesALire = new ArrayList();

                        //Liste des valeurs décimales à lire
                        ArrayList lstValeursDecimalesALire = new ArrayList();
                        //Liste des champs destinatation des valeurs décimales
                        ArrayList lstDestValeursDecimalesALire = new ArrayList();

                        //Liste des valeurs dates à lire
                        ArrayList lstValeursDatesALire = new ArrayList();
                        //Liste des champs destinatation des valeurs dates
                        ArrayList lstDestValeursDatesALire = new ArrayList();

                        //Liste des valeurs texte à lire
                        ArrayList lstValeursTextesALire = new ArrayList();
                        //Liste des champs destinatation des valeurs texte
                        ArrayList lstDestValeursTextesALire = new ArrayList();

                        //Change les clés de la table de données pour qu'elles
                        //correspondent aux clés déclarées
                        //Pour des recherches ultérieures plus rapides
                        DataTable    tableDonnees = contexte.Tables[CDonneeCumulee.c_nomTable];
                        DataColumn[] oldKey       = tableDonnees.PrimaryKey;
                        ArrayList    lstCles      = new ArrayList();

                        for (int nCle = 0; nCle < CParametreDonneeCumulee.c_nbChampsCle; nCle++)
                        {
                            if (parametre.GetChampCle(nCle) != null &&
                                parametre.GetChampCle(nCle).Champ != "")
                            {
                                lstClesALire.Add(parametre.GetChampCle(nCle).Champ);
                                string strChampDest = CDonneeCumulee.c_baseChampCle + nCle.ToString();
                                lstDestClesALire.Add(strChampDest);
                                lstCles.Add(tableDonnees.Columns[strChampDest]);
                            }
                        }
                        try
                        {
                            tableDonnees.PrimaryKey = (DataColumn[])lstCles.ToArray(typeof(DataColumn));
                        }
                        catch
                        {
                            //On n'y arrive pas, on a probablement changé la requete ->On vide tout !
                            result = VideTable(nIdTypeDonnee, tableDonnees);
                            if (!result)
                            {
                                return(result);
                            }
                            tableDonnees.PrimaryKey = (DataColumn[])lstCles.ToArray(typeof(DataColumn));
                        }

                        //Repère les données à lire
                        for (int nChamp = 0; nChamp < CParametreDonneeCumulee.c_nbChampsValeur; nChamp++)
                        {
                            string strChamp = parametre.GetValueField(nChamp);
                            if (strChamp != null && strChamp != "")
                            {
                                lstValeursDecimalesALire.Add(strChamp);
                                lstDestValeursDecimalesALire.Add(CDonneeCumulee.c_baseChampValeur + nChamp.ToString());
                            }
                        }

                        for (int nChamp = 0; nChamp < CParametreDonneeCumulee.c_nbChampsDate; nChamp++)
                        {
                            string strChamp = parametre.GetDateField(nChamp);
                            if (strChamp != null && strChamp != "")
                            {
                                lstValeursDatesALire.Add(strChamp);
                                lstDestValeursDatesALire.Add(CDonneeCumulee.c_baseChampDate + nChamp.ToString());
                            }
                        }

                        for (int nChamp = 0; nChamp < CParametreDonneeCumulee.c_nbChampsTexte; nChamp++)
                        {
                            string strChamp = parametre.GetTextField(nChamp);
                            if (strChamp != null && strChamp != "")
                            {
                                lstValeursTextesALire.Add(strChamp);
                                lstDestValeursTextesALire.Add(CDonneeCumulee.c_baseChampTexte + nChamp.ToString());
                            }
                        }

                        if (indicateur != null)
                        {
                            indicateur.SetInfo(I.T("Request execution|149"));
                            indicateur.SetValue(10);
                        }

                        IDefinitionJeuDonnees defJeu = typeDonnee.Parametre.DefinitionDeDonnees;
                        IElementAVariablesDynamiquesAvecContexteDonnee eltAVariables = null;
                        if (defJeu is C2iRequete)
                        {
                            eltAVariables = (IElementAVariablesDynamiquesAvecContexteDonnee)defJeu;
                        }
                        else if (defJeu is CStructureExportAvecFiltre)
                        {
                            eltAVariables = ((CStructureExportAvecFiltre)defJeu).Filtre;
                            if (eltAVariables == null)
                            {
                                CFiltreDynamique filtre = new CFiltreDynamique(contexte);
                                filtre.TypeElements = defJeu.TypeDonneesEntree;
                                eltAVariables       = filtre;
                            }
                            ((CFiltreDynamique)eltAVariables).ContexteDonnee = contexte;
                        }

                        result = CParametreDonneeCumulee.GetTableSource(eltAVariables, defJeu, indicateur);
                        //Calcule le résultat de la requête demandée
                        if (!result)
                        {
                            result.EmpileErreur(I.T("Error in request|150"));
                            return(result);
                        }

                        //Liste des lignes trouvées dans la requête
                        Hashtable tableExistantes = new Hashtable();

                        DataTable tableSource = (DataTable)result.Data;

                        if (indicateur != null)
                        {
                            indicateur.SetInfo(I.T("Result Storage|151"));
                            indicateur.SetValue(20);
                            indicateur.PushSegment(20, 80);
                            indicateur.SetBornesSegment(0, tableSource.Rows.Count);
                        }

                        int nIndex = 0;

                        foreach (DataRow row in tableSource.Rows)
                        {
                            nIndex++;
                            if (indicateur != null && nIndex % 50 == 0)
                            {
                                indicateur.SetValue(nIndex);
                            }
                            lstCles.Clear();
                            for (int nCle = 0; nCle < lstClesALire.Count; nCle++)
                            {
                                lstCles.Add(row[(string)lstClesALire[nCle]]);
                            }
                            DataRow rowDest = tableDonnees.Rows.Find((object[])lstCles.ToArray(typeof(object)));
                            if (rowDest == null)
                            {
                                rowDest = tableDonnees.NewRow();
                                rowDest[CObjetDonnee.c_champIdUniversel] = CUniqueIdentifier.GetNew();
                                for (int nCle = 0; nCle < lstCles.Count; nCle++)
                                {
                                    rowDest[(string)lstDestClesALire[nCle]] = lstCles[nCle];
                                }
                                rowDest[CTypeDonneeCumulee.c_champId] = nIdTypeDonnee;
                                tableDonnees.Rows.Add(rowDest);
                            }
                            // Rempli les valeurs décimales de destination
                            for (int nChampVal = 0; nChampVal < lstValeursDecimalesALire.Count; nChampVal++)
                            {
                                try
                                {
                                    rowDest[(string)lstDestValeursDecimalesALire[nChampVal]] = Convert.ToDouble(row[(string)lstValeursDecimalesALire[nChampVal]]);
                                }
                                catch
                                {
                                    rowDest[CDonneeCumulee.c_baseChampValeur + nChampVal.ToString()] = 0;
                                }
                            }
                            // Rempli les valeurs Dates de destination
                            for (int nChampVal = 0; nChampVal < lstValeursDatesALire.Count; nChampVal++)
                            {
                                try
                                {
                                    rowDest[(string)lstDestValeursDatesALire[nChampVal]] = Convert.ToDateTime(row[(string)lstValeursDatesALire[nChampVal]]);
                                }
                                catch
                                {
                                    rowDest[CDonneeCumulee.c_baseChampDate + nChampVal.ToString()] = DBNull.Value;
                                }
                            }
                            // Rempli les valeurs Texte de destination
                            for (int nChampVal = 0; nChampVal < lstValeursTextesALire.Count; nChampVal++)
                            {
                                try
                                {
                                    rowDest[(string)lstDestValeursTextesALire[nChampVal]] = (row[(string)lstValeursTextesALire[nChampVal]]).ToString();
                                }
                                catch
                                {
                                    rowDest[CDonneeCumulee.c_baseChampTexte + nChampVal.ToString()] = "";
                                }
                            }

                            tableExistantes[rowDest] = true;
                        }
                        //Remet la clé à la valeur initiale
                        tableDonnees.PrimaryKey = oldKey;

                        if (indicateur != null)
                        {
                            indicateur.PopSegment();
                            indicateur.PushSegment(80, 90);
                            indicateur.SetBornesSegment(0, tableDonnees.Rows.Count);
                            indicateur.SetInfo(I.T("Deleting of old values|152"));
                        }

                        if (!parametre.PasDeSuppression)
                        {
                            //Supprime les lignes à supprimer
                            ArrayList lstRows = new ArrayList(tableDonnees.Rows);
                            nIndex = 0;
                            foreach (DataRow row in lstRows)
                            {
                                if (!tableExistantes.Contains(row))
                                {
                                    row.Delete();
                                }
                                nIndex++;
                                if (indicateur != null && nIndex % 50 == 0)
                                {
                                    indicateur.SetValue(nIndex);
                                }
                            }
                        }
                        if (indicateur != null)
                        {
                            indicateur.PopSegment();
                            indicateur.SetInfo(I.T("Datas saving|153"));
                        }
                        contexte.EnableTraitementsAvantSauvegarde = false;
                        result = contexte.SaveAll(true);
                        if (indicateur != null)
                        {
                            indicateur.SetInfo(I.T("Finished calculation|154"));
                        }
                    }
                }
                catch (Exception e)
                {
                    result.EmpileErreur(new CErreurException(e));
                    return(result);
                }
                finally
                {
                    if (sessionSuivi != null)
                    {
                        sessionSuivi.CloseSession();
                    }
                    m_tableCalculsEnCours.Remove(nIdTypeDonnee);
                }
                return(result);
            }
        }
예제 #7
0
        void FillGrid(bool bAvecInterface)
        {
            CResultAErreur result = m_parametre.GetDataTable(m_contexteDonnee);

            if (!result)
            {
                if (bAvecInterface)
                {
                    CFormAlerte.Afficher(result.Erreur);
                }
                return;
            }
            try
            {
                DataTable table = result.Data as DataTable;
                m_grid.EnableHeadersVisualStyles = false;
                m_grid.ColumnHeadersVisible      = m_parametre.ShowHeader;
                m_table = table;
                DataView view = m_table.DefaultView;
                m_grid.AutoGenerateColumns = false;
                m_grid.DataSource          = view;

                m_grid.Columns.Clear();

                result = m_parametre.PrepareAffichageDonnees(table, m_contexteDonnee);
                m_grid.BackgroundColor = BackColor;

                m_grid.GridColor = ForeColor;

                DataGridViewCellStyle style = m_grid.ColumnHeadersDefaultCellStyle;
                CompleteFormatCellule(m_parametre.FormatHeader, style);
                style = m_grid.DefaultCellStyle;
                CompleteFormatCellule(m_parametre.FormatRows, style);

                /*style.SelectionBackColor = Color.FromArgb(255 - style.BackColor.R, 255 - style.BackColor.G, 255 - style.BackColor.B);
                 * style.SelectionForeColor = Color.FromArgb(255 - style.ForeColor.R, 255 - style.ForeColor.G, 255 - style.ForeColor.B);
                 */
                if (m_parametre.FormatRows.SelectionBackcolor.A == 0)
                {
                    style.SelectionForeColor = style.BackColor;
                    style.SelectionBackColor = style.ForeColor;
                }
                else
                {
                    style.SelectionForeColor = m_parametre.FormatRows.ForeColor;
                    style.SelectionBackColor = m_parametre.FormatRows.SelectionBackcolor;
                }


                List <CSortColumn> lstSort = new List <CSortColumn>();

                Dictionary <string, CParametreVisuChampTableauCroise> dicChampToParam = new Dictionary <string, CParametreVisuChampTableauCroise>();
                foreach (CParametreVisuChampTableauCroise pChamp in m_parametre.ParametresChamps)
                {
                    dicChampToParam[pChamp.ChampFinal.NomChamp] = pChamp;
                }

                string strColToMap = "";
                foreach (DataColumn col in new ArrayList(table.Columns))
                {
                    strColToMap = col.ColumnName;
                    CParametreVisuChampTableauCroise paramChamp = null;
                    CChampFinalDeTableauCroise       champFinal = col.ExtendedProperties[CTableauCroise.c_ExtendedPropertyToColumnKey] as CChampFinalDeTableauCroise;
                    DataGridViewColumn viewCol = null;
                    if (champFinal != null && dicChampToParam.TryGetValue(champFinal.NomChamp, out paramChamp))
                    {
                        if (paramChamp.ActionSurClick != null)
                        {
                            DataGridViewLinkColumn linkCol = new DataGridViewLinkColumn();
                            viewCol = linkCol;
                        }
                        DataColumn displayCol = col;
                        if (paramChamp.ChampFinal is CChampFinalDeTableauCroiseCle &&
                            paramChamp.FormuleData != null)
                        {
                            if (table.Columns.Contains(GetDisplayName(col.ColumnName)))
                            {
                                displayCol = table.Columns[GetDisplayName(col.ColumnName)];
                            }
                            else
                            {
                                //Crée une colonne _DISPLAY
                                displayCol = new DataColumn(GetDisplayName(col.ColumnName), typeof(string));
                                table.Columns.Add(displayCol);
                            }
                            strColToMap = displayCol.ColumnName;
                        }

                        if (paramChamp.SortOrder != null)
                        {
                            lstSort.Add(new CSortColumn(displayCol, paramChamp.SortOrder.Value, paramChamp.TriDecroissant));
                        }
                    }



                    if (viewCol == null)
                    {
                        viewCol = new DataGridViewTextBoxColumn();
                    }
                    m_grid.Columns.Add(viewCol);
                    viewCol.SortMode         = DataGridViewColumnSortMode.Programmatic;
                    viewCol.DataPropertyName = strColToMap;
                    viewCol.HeaderText       = col.ColumnName;
                }


                //m_grid.RowCount = Math.Max ( table.Rows.Count, 1 );
                CParametreDonneeCumulee parametreDonnee = null;
                CTypeDonneeCumulee      typeDonnee      = m_parametre.GetTypeDonneeCumulee(m_contexteDonnee);
                if (typeDonnee != null)
                {
                    parametreDonnee = typeDonnee.Parametre;
                }
                foreach (CParametreVisuChampTableauCroise paramChamp in m_parametre.ParametresChamps)
                {
                    foreach (DataGridViewColumn colView in m_grid.Columns)
                    {
                        DataColumn col = table.Columns[GetDataName(colView.DataPropertyName)];
                        if (col != null)
                        {
                            CChampFinalDeTableauCroise champFinal = col.ExtendedProperties[CTableauCroise.c_ExtendedPropertyToColumnKey] as CChampFinalDeTableauCroise;
                            if (champFinal != null && champFinal.NomChamp == paramChamp.ChampFinal.NomChamp)
                            {
                                m_dicColToParametreCol[colView.DataPropertyName] = paramChamp;
                                CompleteFormatCellule(paramChamp.FormatHeader, colView.HeaderCell.Style);
                                CompleteFormatCellule(paramChamp.FormatParDefaut, colView.DefaultCellStyle);

                                colView.HeaderCell.Value = paramChamp.GetValeurHeader(col, m_parametre);
                                if (paramChamp.FormatHeader.Width != null)
                                {
                                    colView.Width = paramChamp.FormatHeader.Width.Value;
                                }
                                if (paramChamp.FormuleData != null && champFinal is CChampFinalDeTableauCroiseCle)
                                {
                                    foreach (DataRow row in m_table.Rows)
                                    {
                                        row[GetDisplayName(col.ColumnName)] = paramChamp.GetValeurData(row[col], m_parametre);
                                    }
                                    colView.DataPropertyName = GetDisplayName(col.ColumnName);
                                }
                            }
                        }
                    }
                }

                lstSort.Sort(delegate(CSortColumn a, CSortColumn b)
                {
                    if (a.SortOrder == b.SortOrder)
                    {
                        return(a.Column.ColumnName.CompareTo(b.Column.ColumnName));
                    }
                    return(a.SortOrder.CompareTo(b.SortOrder));
                }
                             );
                string strSort = "";
                foreach (CSortColumn sortCol in lstSort)
                {
                    strSort += sortCol.Column.ColumnName;
                    if (sortCol.Decroissant)
                    {
                        strSort += " desc";
                    }
                    strSort += ",";
                }
                if (strSort.Length > 0)
                {
                    strSort   = strSort.Substring(0, strSort.Length - 1);
                    view.Sort = strSort;
                }

                AnalyseFiltres();
            }
            catch (Exception e)
            {
                result.EmpileErreur(new CErreurException(e));
                if (bAvecInterface)
                {
                    CFormAlerte.Afficher(result.Erreur);
                }
            }
        }