mercredi 10 février 2010

Utiliser MS Chart sur Serveur IIS

Le nouveau composant chart de MS permet comme son nom l'indique de faire des graphiques. Bien que son installation soit très facile sur la machine de développement on peut se retrouver bloqué lors du déploiement de l'application sur un serveur IIS.
Suite à l'installation, l'application web risque de nous afficher un message indiquant qu'il ne trouve pas "System.Web.DataVisualization" ...

La solution est la suivante :
Dans le fichier web.config ajouter les 3 choses suivantes : 

Au niveau de <appSettings>
<add key="ChartImageHandler" value="storage=file;timeout=20;dir=C:\_chart_temp;"/>

Au niveau de <system.web><httpHandlers>
<add path="ChartImg.axd" verb="GET,HEAD" type="System.Web.UI.DataVisualization.Charting.ChartHttpHandler, System.Web.DataVisualization, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" validate="false"/>

Au niveau de <system.webServer><handlers>
<add name="ChartImageHandler" preCondition="integratedMode" verb="GET,HEAD" path="ChartImg.axd" type="System.Web.UI.DataVisualization.Charting.ChartHttpHandler, System.Web.DataVisualization, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>

Ces trois ajouts doivent vous permettre d'assurer le fonctionnement :)

Quelques références pour vous aider :

En espérant que ca en aidera certains :)

mardi 05 janvier 2010

Bug AjaxControlTookit : TabContainer et TabPanes dynamiques / ModalPopupExtender

Après de nombreux essais j'ai pu me rendre compte que les deux dernières versions de l'AjaxControlToolkit releasées pouvaient poser problème.

La version 30512 pose problème avec les TabContainer pour lesquels on crée dynamiquement des TabPanes.
Imaginons que l'on créé des TabPanes en fonction d'une sélection dans des DropDownList, il peut arriver que l'on se retrouve avec des erreurs javascript sur le "onChange" d'une des DropDownList.

Ce problème est corrigé dans la version 30930 mais cette dernière pose problème avec les ModalPopupExtender.
En effet si l'on met des Textbox dans une ModalPopup en vue de faire une saisie utilisateur, la valeur entrée se retrouve avec une virgule en première position lors du postback (si l'on saisit "hello" dans la Textbox, après postback Textbox.Text se trouve être ",hello" ... problèmatique quand même.

Ma solution : télécharger les sources des deux versions, et copier tous les fichiers du répertoire Tabs de la version 30930 dans le dossier Tabs de la version 30512 et recompiler le toolkit version 30512 avec ces nouveaux fichiers. Je ne met pas ici la version que je me suis compilée et je vous invite à vous rentre sur le site CodePlex dédié :

Site AjaxControlToolkit
Télécharger la Version 30930
Télécharger la Version 30512

jeudi 10 décembre 2009

Exécuter un javascript à la fin de chaque requete AJAX.

Il est parfois pratique de pouvoir appeler un javascript à la fin d'un appel ajax (par exemple pour cacher un élément qui ne serait pas dans un update panel)

Exemple concret : des boutons d'export vers Excel ou Word comme dans ce billet ne peuvent pas être dans un UpdatePanel.
Si l'on souhaite les cacher lorsqu'aucun résultat à exporter n'existe, il faudra ajouter un HiddenField dans l'UpdatePanel qui prendra la valeur 1 ou 0 selon qu'il y a des résultats ou pas et un javascript qui lit sa valeur après chaque appel ajax pour cacher ou montrer le bouton d'export.

Un exemple parlant plus que des mots, prenons le code ci-dessous :

<table id="tableExport" style="display:none">
    <tr>
        <td align="center"><asp:ImageButton ID="ibt_excel" runat="server" onclick="ibt_excel_Click" ToolTip="Exporter vers Excel" ImageUrl="~/icones/page_excel.gif"/></td>
    </tr>
</table>
<asp:UpdatePanel  ID="UpdatePanel2" runat="server">
    <ContentTemplate>
        <asp:GridView ID="grdVue" runat="server">
        </asp:GridView>
        <asp:HiddenField ID="hdnHasResult" runat="server" Value="0" />
    </ContentTemplate>
</asp:UpdatePanel>

Je fais volontairement abstraction du code de remplissage de la GridView qui n'a pas d'intérêt pour ce billet.
La seule chose à faire lors du remplissage de la GridView est de positionner la valeur de hdnHasResult à 0 ou à 1.

A la fin de la page ajouter le code suivant :

//Affiche ou cache les boutons à chaque fois qu'un appel ajax est effectué
function gridViewHasResult(){
    var hdnHasResult = $get('<%=hdnHasResult.ClientID %>');
    if (hdnHasResult.value!='0'){
       document.getElementById('tableExport').style.display = '';
    }
    else{
       document.getElementById('tableExport').style.display = 'none';
    }
}

//Enregistre la méthode gridViewHasResult pour esxécution à la fin de chaque appel ajax.
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(gridViewHasResult);

</script>

A chaque fois que l'UpdatePanel sera raffraichit la fonction gridViewHasResult sera appelée.

samedi 04 juillet 2009

Monter un autoradio sur Xsara Picasso : la solution

Brancher un autoradio sur une Xsara Picasso, ca peut être tendu si on n'a pas la technique.
Si on branche ca en utilisant simplement les prises ISO on aura plusieurs suprises :

  • Possibilité de perdre les affichages tels que consommation tps réel, kilométrage restant à parcourir etc ...
  • L'autoradio s'allume lorsqu'on ouvre la porte ou le coffre
  • L'allumage lorsqu'on met le contact ne se fait pas

Lire la suite...

jeudi 31 mars 2005

Linux sur une XBox en 2 minutes

Ca va plaire à AM :) j'ai trouvé une distri de linux bootable sur CD, sur pc comme sur ... XBox.
Je me suis dit, bon on va tester, mais ca va surement pas marcher. Je regarde le contenu de l'image après l'avoir téléchargée et je me rend compte que y'a un fichier : default.xbe, LE truc qui me fais finalement penser que ca va marcher.
Détail de l'aventure dans la suite...

Lire la suite...