Louis Bourguignon .NET

Aller au contenu | Aller au menu | Aller à la recherche

lundi 5 mars 2012

SuperCopier 2.2 Beta manque de performances

Si comme moi vous trouvez la fenêtre de copie de fichiers Windows limitée en fonctionnalités, vous avez sûrement déjà utilisés SuperCopier. Faisant des tests réseau de bande passante, j'ai naturellement ré-installé cet outil qui avait une bonne image dans mon esprit. Après un premier tests, je ressens de suite que le transfert est plus long. Après plusieurs tests, voici le bilan une copie de 700 Mo prend 10 sec sans SuperCopier et 20 sec avec SuperCopier ! Je suis très surpris, 2 fois plus long, c'est énorme, j'imagine que le fait que ce soit du 32 bits sur un système 64 bits joue. En tous cas, pour le moment il ne fait plus partie de mes outils.

jeudi 26 août 2010

FormView Update Crash Original_ null -- ObjectDataSource

Décidément, ce FormView est capricieux. Lorsqu'on fait tout avec le designer, on s'attend à ce que cela fonctionne. Et non, l'Update crash sans raison apparente.

Après analyse, c'est les Original_ ... qui sont toutes null. Heureusement la solution est toute simple, il suffit de mettre un paramètre dans le FormView :

ConflictDetection="CompareAllValues"

De cette manière, les Original_value sont bien alimentées.

// FIN

Récupérer l'Id après insert dans un FormView -- ObjectDataSource -- DataSet typé

Comment récupérer l'id après insertion faite par un FormView qui utilise un ObjectDataSource plugué sur un DataSet typé ?

Le problème de la méthode générée par le designer, est qu'elle utilise un ExecuteNonQuery. Elle renvoie donc le nombre de ligne insérée.

Donc comment faire sans tout refaire ?

  1. Recréez une méthode Insert à l'aide du designer.
  2. Finissez la requête par SELECT SCOPE_IDENTITY(), Ex : "INSERT INTO ... ; SELECT SCOPE_IDENTITY()" et enregistrer pour sortir de l'assistant
  3. Changer la propriété ExecuteMode de la requête (F4) en Scalar
  4. Changer la méthode Insert de votre ObjectDataSource
  5. Utiliser la méthode Inserted de votre ObjectDataSource
protected void OdsFv_Inserted(object sender, ObjectDataSourceStatusEventArgs e)
{
     IdInserted = (int)e.ReturnValue; 
}

Et voilà.

dimanche 22 août 2010

"LC.exe" avec le code -1 [Visual Studio - Erreur de compilation]

Une fois n'est pas coutume, une belle erreur à la compilation, sans explication, apparue comme par enchantement :

"LC.exe" avec le code -1.

Pas de panique, la solution est très simple

Dans Visual Studio (pas dans l'explorateur de fichier, sinon il garde une référence et l'erreur persiste), affichez tous les fichiers dans l'explorateur de solution :

Capture de VS afficher tous les fichiers

Effacez le fichier liscence.licx => il peut être dans le dossier Properties (c'était le cas pour moi) ou à la racine

Properties

Compilez, et c'est bon.

// Fin

Changer le style d'un contrôle quand il n'est pas valide en utilisant les Validators .NET (Require, Range & Co) -- [client-side, asp.net]

Voici en plus abstrait une nouvelle façon de mettre en évidence les champs non valides d'un formulaire. Les fonctionnalités de base des contrôles Validators sont restreintes. Elles ne permettent pas de changer les styles du contrôles en erreur.

Voici une portion de javascript qui met un cadre rouge autour des champs non valides. Très intéressant car on conserve la philosophie et l'usage des contrôles Validators. Il suffit de coller cette portion de code en bas de votre page et le tour est joué.

Si vous souhaité changer le style de mise en erreur, vous devez changer deux ligne : document.getElementById(val.controltovalidate).style.borderColor = 'red'; et un peu plus bas document.getElementById(val.controltovalidate).style.borderColor = '';

Idéalement, créez une classe css "Error", cela vous permettra de ne plus toucher au code.

<script type="text/javascript">
    <!--
        // "Pointeur" sur la fonction à remplacer. On va devoir la conserver pour la déclencher en amont.
        var OriginalValidatorUpdateDisplay = null;

        // Si la function de validation existe
        // ValidatorUpdateDisplay est la function qui est déclenchée lorsque le contrôle change 
        if (typeof (ValidatorUpdateDisplay) == 'function') {
            
            OriginalValidatorUpdateDisplay = ValidatorUpdateDisplay;            // On garde l'ancienne fonction
            ValidatorUpdateDisplay = NewValidatorUpdateDisplay;                 // On "remplace" la fonction declenchée par le système
        }


        /// <summary>
        /// Remplace la fonction d'origine "ValidatorUpdateDisplay" appelé par le système lorsqu'un contrôle change
        /// Elle parcours les validators pour s'assurer qu'un controlToValidate à au moins un validator rattaché non valide. Dans ce cas, on change la couleur de la bordure.
        /// Si le parcours de tous les validators ne donne pas le contrôle passer en argument comme non valide, on enlève la bordure rouge.
        /// </summary>
        /// <param name="val">Validator ayant déclencher la fonction</param>
        function NewValidatorUpdateDisplay(val) {
            OriginalValidatorUpdateDisplay(val);                            // Déclenche la fonction d'origine

            for (var i = 0; i < Page_Validators.length; i++)                // Parcours des validators
            {
                // Vérificaton s'il s'agit bien du contrôle à valider et dans ce cas s'il est invalide
                if (val.controltovalidate == Page_Validators[i].controltovalidate && Page_Validators[i].isvalid == false) 
                {   
                    // Contrôle invalide, on change son style et on sort de la fonction. Pas nécessaire d'aller plus loin, il suffit d'un validator non valide
                    document.getElementById(val.controltovalidate).style.borderColor = 'red';       // Ici, on a choisi de changer la couleur du contour, mais on peut changer ce qu'on veut, ex : le fond ou tout autres style
                    return;
                }
            }

            // Si on arrive à cette instruction, c'est que le contrôle à valider est valide, on enlève ici le style "Erreur"
            document.getElementById(val.controltovalidate).style.borderColor = '';
           
        }
 

        
    //-->
</script>

jeudi 12 août 2010

Changer la bordure d'un contrôle lors de la validation

L'idée est de mettre en avant un champ dont la valeur n'est pas correcte sans toutefois que ce soit "lourd". L'étoile à coté n'est pas assez visible. Le message en rouge, trop lourd.

Deuxièmement, même s'il faut du code coté serveur pour faire le même boulot, on veut du JavaScript pour alléger le nombre d'aller-retours.

Nous faisons donc un contrôle dont la bordure devient rouge lors de la validation. On utilise un CustomValidator.

Voici la partie html :

<asp:TextBox ID="CAPACITETextBox" CssClass="form" runat="server" Text=' ' />
<asp:CustomValidator ID="CustomValidator1" runat="server" ErrorMessage="CustomValidator" ControlToValidate="CAPACITETextBox" ClientValidationFunction="NumValidation" Display="None"></asp:CustomValidator>

Et voici la fonction JavaScript. Pour l'exemple, elle vérifie si la valeur est un entier

        // Validation si c'est un numérique.
        function NumValidation(sender, args) {

            // Récupère le contrôle à valider
            var obj = document.getElementById(sender.controltovalidate); 

            // Vérification si c'est un Int
            if (!isNaN(args.Value) && Math.abs(args.Value) == args.Value && args.Value >= 0) 
            {
                // Oui, alors on enlève l'éventuelle couleur de la bordure
                obj.style.borderColor = "";
                args.IsValid = true;
                return;
            }
            
            // Erreur, on ajoute donc la couleur rouge en bordure
            obj.style.borderColor = "red";
            
            args.IsValid = false;
            return;

        }

vendredi 6 août 2010

SQL injection

Un sujet bien connu, mais on imagine pas toujours la liberté que peut avoir une personne mal intentionnée, ex : - récupérer toutes les données des bases - stopper le serveur SQL - stopper la machine - etc.

Regarder la Vidéo

jeudi 29 octobre 2009

Visual Studio 2010 BETA 2

Nettement plus stable que la BETA 1.

Une astuce pour les sites web. "Localhost" ne fonctionnait pas sur mon poste en IP V6. Il suffit de changer localhost par 127.0.0.1 pour que cela fonctionne.

En attendant de trouver mieux, cela permet d'avancer.

lundi 26 octobre 2009

Visual Studio .NET 2010 Beta 2

Quelques soucis avec la Beta 1, notamment la barre de menu qui ne se charge pas tjs bien et fait planté VS. La BETA 2 est ici.

Désinstallation de la BETA 1 obligatoire. Petite tuile, il demande le CD, difficile quand l'installer est du web installer...

Après qq temps, j'ai simplement annulé la désinstallation, puis supprimé "Team Foundation Server" avant, relancer la désinstallation et par bonheur cela a fonctionné.

Sinon, une piste que j'allais étudier sérieusement : http://blogs.dotnet-france.com/julienc/post/VS2010-Desinstallation-de-la-beta-1-TFSObjectModel-x86_ENUexe-.aspx

samedi 17 octobre 2009

Visual Studio 2010

La version BETA est téléchargeable ici : http://www.microsoft.com/belux/fr/visualstudio/products/2010/default.mspx

1ère impression : l'IDE est un peu long à s'ouvrir mais les fonctionnalités semblent prometteuses.

Plus d'info bientôt...