Search Results

Search found 24620 results on 985 pages for 'microsoft chart controls'.

Page 241/985 | < Previous Page | 237 238 239 240 241 242 243 244 245 246 247 248  | Next Page >

  • Windows Phone : le MarkePlace va évoluer pour s'adapter à la croissance, Microsoft annonce une mise à jour pour l'été

    Windows Phone : le MarkePlace va évoluer pour s'adapter à la croissance Microsoft annonce une mise à jour pour l'été La galerie d'applications Windows Phone a subi ces derniers mois un taux de croissance effréné. Au cours des trois premiers mois de l'année, plus de 29 000 nouvelles applications ont été soumises sur le MarketPlace (soit une augmentation de 60%), permettant à la galerie de franchir le seuil symbolique des 80 000 applications. De plus, le nombre de galeries a doublé pendant ce temps, passant à 54. Le programme développeur compte désormais plus de 20 000 développeurs enregistrés. À ce rythme, la galerie va franchir la barre des 100 000 applications dans moins de 100 jours.

    Read the article

  • Microsoft sur le point de se lancer dans les réseaux sociaux d'entreprises pour un milliard de dollars, d'après Bloomberg

    Microsoft pourrait débourser 1 milliard de dollars pour se lancer dans les réseaux sociaux professionnels D'entreprises, d'après Bloomberg Les réseaux sociaux, c'est un peu comme le Cloud ou les sites Webs. Il y en a de toutes sortes. L'appellation couvre presque tout et son contraire : des outils publics ou privés, pour le loisir ou pour les professionnels. Dans les réseaux, on connait Facebook, LinkedIn ou Viadeo, ou la deuxième tentative de Google de percer sur ce marché (Google+). Mais on connait moins les acteurs des « réseaux privés » comme Atlassian qui édite par exemple Confluence (sorte de Facebook à...

    Read the article

  • Microsoft sort la version 1.4 du SDK de Windows Azure, qui corrige de nombreux bogues de la version précédente

    Microsoft sort la version 1.4 du SDK de Windows Azure, qui corrige de nombreux bogues de la version précédente L'équipe de développement de Windows Azure vient de rendre disponible la nouvelle version de son SDK. Ainsi, Windows Azure SDK 1.4 est téléchargeable et apporte quelques mises à jour. Il corrige notamment quelques problèmes qui se trouvaient dans la version précédente (1.3), parmi lesquels : - correction de l'échec de l'IIS lors de la configuration du fichier web.config en lecture seule - correction des erreurs dans les packs IIS qui les faisaient doubler en taille lorsque packagés - correction du recyclage de la totalité d'un IIS web role quand le diagnotic sto...

    Read the article

  • How do I run Microsoft Explorer 8 plus on Ubuntu?

    - by user169487
    First off, you should know I'm a Ubuntu newbie who has become passionate since my strangely low-priced Dell computer showed up with Ubuntu loaded on it and it could do almost everything I need from a computer. But now I've got a problem. I know, it's like asking how to use a cassette player on your computer, but in South Korea EVERY website is made to work with exclusively on MS Explorer PLUS Active X, which Microsoft finally killed with 9. Hence, I have to use 8, as there are some Korean sites I need to access for searching, banking, etc. So I see that the way to go is to load PlayOnLinux, but then I it tells me to delete these. Do I really have to do that? Should I just hit "Install Anyway"? Or would that be just asking for trouble?

    Read the article

  • Windows Embedded : Microsoft adapte sa gamme d'OS embarqués à un secteur en forte expansion et riche en opportunités pour les développeurs

    Windows Embedded : Microsoft adapte sa gamme d'OS embarqués à un secteur en forte expansion Riche d'opportunités pour les développeurs Dans la famille Windows, les noms de XP, Vista, 7, Server ou même Azure sont certainement plus connus que « Embedded ». Il faut dire que les déclinaisons embarquées de Windows sont à elles seules une gamme complète dans laquelle il peut être souvent assez difficile de s'y retrouver. Pourtant, les développeurs auraient tort de se décourager, tant les déclinaisons de Windows Embedded couvrent un nombre impressionnant de besoins allant du terminal mobile durci (lecteur de code barre avec écran par exemple) à la robotique en passant par les boîtiers multimédia...

    Read the article

  • Microsoft publiera une douzaine de correctifs dont trois critiques la semaine prochaine dans le cadre de son "Patch Tuesday"

    Patch Tuesday : une douzaine de correctifs dont trois critiques seront publiés la semaine prochaine Mise à jour du 4/02/11, par Hinault Romaric Microsoft vient de divulguer quelques informations dans le cadre de son processus de notification préalable sur sa prochaine mise à jour de Sécurité le « Patch Tuesday ». C'est au total 12 correctifs pour 22 failles de sécurité qui seront disponibles dont 3 sont qualifiés de "critique" et le reste "d'important". Ces correctifs viennent résoudre des problèmes touchant Windows, Internet Explorer, Office, Visual Studio. L'un de ces bulletins permet de...

    Read the article

  • Microsoft publie le Patch Tuesday du mois de mars, qui corrige sept failles de sécurité dont 2 critiques dans Visual Studio

    Le Patch Tuesday concerne aussi Windows 8 Consumer Preview et apporte plusieurs correctifs de bogues à l'OS Mise à jour du 15/03/2012 Le Patch Tuesday publié mardi dernier par Microsoft apporte quelques correctifs à Windows 8 Consumer Preview. Ces mises à jour intègrent 8 correctifs pour des bugs dans l'OS. Le premier concerne une mise à jour de compatibilité des applications. Le second corrige un problème dans « Broker Infrastructure Service », pouvant conduire au ralentissement des connexions. Un Patch corrige deux bugs dans IE10, pouvant conduire à une fuite de mémoire. Les autres correctifs améliorent la préc...

    Read the article

  • Intune : administrez vos PC à distance via le Cloud et sécurisez-les contre les menaces, Microsoft offre un test gratuit de 30 jours

    Intune : administrez vos PC à distance via le Cloud et sécurisez-les contre les logiciels et les menaces, Microsoft offre un test gratuit de 30 jours [IMG]http://rdonfack.developpez.com/images/intune.PNG[/IMG] Windows Intune est une solution d'administration de postes de travail dans le Cloud qui permet également de les faire évoluer vers Windows 7 Entreprise. Le service permet aux responsables IT de gérer à distance l'ensemble de leur parc informatique sous Windows. Il intègre des services de gestion pour les parcs de PCs, le suivi des protections installées contre les logiciels malveillants, et le suivi des mises à jour Windows. Windows InTune perme...

    Read the article

  • Recherche en ligne : Bing progresse, Google et Yahoo restent stables, le client Windows 8 du moteur de Microsoft adopte les tuiles

    Recherche en ligne : Bing progresse Google et Yahoo restent stables, le client Windows 8 du moteur de Microsoft adopte les tuiles Bien que Google soit toujours en tête du classement des moteurs de recherche, Bing continue à évoluer petit à petit. Les statistiques de la recherche en ligne pour le mois de juillet 2012 viennent d'être publiées par le cabinet d'analyse Web comScore. La part de marché du moteur de recherche de Google reste stable au cours de cette période à 66,8%, très loin de ses concurrents. Bing qui occupe la seconde place, évolue à petits pas et se retrouve avec une part de 15,7% en juillet contre 15,6% en juin et 14,4% en juillet 2011. Le m...

    Read the article

  • Microsoft confirme la sortie mondiale de SQL Server 2008 R2 début mai, et annonce sa mise en product

    Mise à jour du 29.03.2010 par Katleen Microsoft dévoile les prochaines dates de sortie de SQL Server, version 2005 (SP4) et 2008 (SP2) L'équipe travaillant sur SQL Serveur vient de publier un billet assez succinct sur son blog, à propos des prochains services packs à sortir. Ces road maps indiquent uniquement les dates de sortie, et pas encore les contenus. SQL Server 2005 (SP4) sera disponible au cours du dernier trimestre 2010, il s'agira du dernier service pack pour cette version. SQL Server 2008 (SP2) devrait sortir lors du troisième trimestre 2010 Plus d'informations à venir sur ces deux sorties bientôt, notamment à propos de leurs contenus. A...

    Read the article

  • Microsoft sort un Livre Blanc sur Windows Embedded Standard 7 pour tout savoir de son OS embarqué fondé sur Windows 7

    Microsoft sort un Livre Blanc sur Windows Embedded Standard 7 Pour tout savoir de son nouvel OS embarqué Mise à jour du 08/12/10 Windows Embedded Standard 7 est une plateforme de nouvelle génération de la famille de produits que Windows XP Embedded et Windows Embedded Standard 2009. Windows Embedded Standard 7 offre, sous une forme extrêmement personnalisable et modulaire, les principales caractéristiques du système d'exploitation Windows 7. Ce qui permet aux OEM des secteurs de la distribution, de l'hôtellerie, etc., de se concentrer sur leur coeur de métier et de bien différencier leurs produits. Par défaut, l...

    Read the article

  • Windows Server 2012 : le point complet sur les nouvelles licences avec Microsoft, qui publie un Livre Blanc récapitulatif

    Windows Server 2012 : Microsoft simplifie ses licences L'éditeur publie un Livre Blanc et fait un point complet avec Developpez.com De huit licences différentes pour la version 2008 R2, Windows Server 2012 est passé à quatre. Un travail de simplification nécessaire pour de nombreux observateurs et pour des utilisateurs qui se perdaient souvent dans les méandres de la tarification de la déclinaison de Windows pour serveurs. Sur les quatre nouvelles éditions, deux concernent les grandes entreprises et les hébergeurs (la Standard et la Datacenter). Deux autres - promises pour la fin de l'année ? seront plus spécifiquement adaptées aux PME (Essentials et Foundation).

    Read the article

  • Faille zero-day découverte dans Internet Explorer, permettant de prendre à distance le contrôle d'un PC, Microsoft recommande EMET

    Faille zero-day découverte dans Internet Explorer permettant de prendre à distance le contrôle d'un ordinateur, Microsoft recommande EMET Une faille de sécurité critique dans Internet Explorer 6, 7, 8 et 9 vient d'être découverte par des experts en sécurité. Dans un billet de blog sur ZATAZ.com, Eric Romang, un conseiller en sécurité luxembourgeois, déclare avoir découvert la vulnérabilité lorsque son PC a été infecté par le cheval de troie Poison Ivy, qui est utilisé pour voler des données ou prendre le contrôle à distance d'un ordinateur. La faille pourrait être exploitée par des pirates distants qui peuvent obtenir les mêmes privilèges que l'utilisateur local, pour installer de...

    Read the article

  • Google Chrome continue de gagner des parts de marché en Europe, le "ballot screen" de Microsoft n'au

    Mise à jour du 07.05.2010 par Katleen Google Chrome continue de gagner des parts de marché en Europe, le "ballot screen" de Microsoft n'aurait aucun lien avec ce succès D'après les chiffres communiqués par l'AT Internet Institute en mars 2010, Internet Explorer a perdu 7.5 points sur le marché européen. Autrement dit, 57.1% des internautes l'utilisent. Cette chute fait un heureux : Google, dont le navigateur Chrome progresse en passant de 1.4% en mars 2009 à 5.3% actuellement. Il faut dire que la firme de Mountain View n'a pas lésiné niveau publicité pour promouvoir son logiciel. L'Espagne, l'Italie, la Belgique et le Royaume-Uni sont les pays de notre continent faisant le plus de place au...

    Read the article

  • IBM, numéro 1 des dépôts de brevets pour la 18eme année consécutive avec un record de 5.896 brevets, Microsoft dans le top 3

    IBM, numéro 1 des dépôts de brevets pour la 18eme année consécutive Avec un record de 5 896 brevets, Samsung et Microsoft dans le top 3 IBM est une fois de plus le numéro 1 dans le classement annuel des entreprises ayant déposé le plus de brevets au cours de l'année 2010. Les chercheurs de la firme ont réalisé un record avec un dépôt de 5 896 brevets au cours de l'année 2010, soit une augmentation de 10 % par rapport à l'année précédente. Ce chiffre fait de « Big Blue » la première ayant déposé plus de 5000 brevets au cours d'une année. C'est la 18eme année consécutive qu'IBM occupe cette place de numéro 1. Ces brevets touchent des domaines très variés. La fi...

    Read the article

  • Windows 8 sera adapté aux puces ARM, Microsoft fait la première démonstration officielle de l'OS au CES de Las Vegas

    Windows 8 sera adapté aux puces ARM Microsoft fait la première démonstration officielle de l'OS au CES de Las Vegas Mise à jour du 06/01/2011 par Idelways Après plus d'un an de spéculations et de fuites involontaires (ou pas), Steve Ballmer vient de faire la première démonstration du successeur de Windows 7, et a annoncé que l'OS supportera en natif les puces ARM. On sait donc désormais que Windows 8 (bien que Ballmer ait fait très attention d'éviter de lui donner le moindre nom) fonctionnera sur une architecture System-on-a-chip (SoC), fournie dans un premier temps par NVIDIA et Texas Instruments. Le PDG ...

    Read the article

  • Microsoft va-t-il devoir racheter Nokia pour pérenniser Windows Phone ? Le constructeur finlandais est de plus en plus dans la tourmente

    Nokia de plus en plus dans la tourmente Microsoft va-t-il devoir racheter le constructeur finlandais pour Windows Phone ? Nokia coule-t-il à pic ? Peut-être pas encore, mais le constructeur se rapproche dangereusement du point de rupture. Après avoir dévoilé de mauvais résultats prévisionnels (une perte d'exploitation de plus en plus importante qui dépassera les 3% du CA), et en dessous des attentes, l'action du groupe s'est littéralement écroulée de 18 % pour atteindre son plus bas depuis plus de 12 ans. [IMG]http://ftp-developpez.com/gordon-fowler/Nokia%20Bourse%202.png[/IMG] Conséquence de ces résultats, Nokia va fermer son usine finlandaise ? seule la R&a...

    Read the article

  • BlackBerry abandonné pour Windows Phone ? RIM pourrait se tourner vers Microsoft pour se relancer

    BlackBerry abandonné pour Windows Phone ? RIM pourrait se tourner vers Microsoft pour se relancer RIM (Research In Motion) se porte mal, et aligne trimestre après trimestre des résultats en baisse. Le constructeur canadien du BlackBerry a réalisé un chiffre d'affaires de moins de 3 milliards de dollars au premier trimestre 2012, soit une perte de 192 millions de dollars, et une chute de son chiffre d'affaires de 33 % par rapport à la même période l'an dernier. La direction du constructeur est sous pression, et doit trouver des solutions pour sortir de cette mauvaise passe qui n'a que trop duré. Du coup, des spéculations refont surface sur les futures orienta...

    Read the article

  • Windows 8 : Google sort son application de recherche pour contrer Bing et prépare le terrain à ses services concurrents de Microsoft

    Windows 8 : Google sort son application de recherche Pour contrer Bing et préparer le terrain pour ses services concurrents de Microsoft La recherche par défaut de Windows 8 est bien évidemment Bing. On ne sait pas si la justice décidera de s'attaquer à cette application, comme elle l'a fait pour Internet Explorer ou le Media Player, mais on sait une chose : Google a déjà réagi. Et de la meilleure manière qui soit : pas devant les tribunaux donc, mais avec une application maison. Tout comme pour la version iOS, Google Search for Windows 8 est gratuit, propose la recherche vocale et tous les raccourcis vers les services hébergés de Google. Dont Gmail, Calendar , Maps ...

    Read the article

  • Ikoula débride sa solution de stockage en ligne : espace et trafic illimités pour concurrencer DropBox, Google Drive et Skydrive de Microsoft

    Ikoula débride sa solution de stockage en ligne Espace et trafic illimités pour concurrencer DropBox, Google Drive et Skydrive de Microsoft iKeepinCloud gagne en maturité. Le service de stockage en ligne de la société française Ikoula ? dont les datacenters sont basés à Reims ? bénéficie à présent d'un espace et de trafic illimités et de 10 Mbps en upload/download. Les documents hébergés n'ont par ailleurs pas de taille maximale imposée. Le tout pour une vingtaine d'euros par mois. L'alternative à Google Docs, SkyDrive et autres DropBox n'est certes pas encore aussi populaire que ses concurrents mais la géolocalisation des données et son ouverture sont deux arguments qui convaincra...

    Read the article

  • How do I keep Visual Studio's Windows Forms Designer from deleting controls?

    - by Sören Kuklau
    With several forms of mine, I occasionally run into the following issue: I edit the form using the designer (Visual Studio 2008, Windows Forms, .NET 2.0, VB.NET) to add components, only to find out later that some minor adjustments were made (e.g. the form's size is suddenly changed by a few pixels), and controls get deleted. This happens silently — event-handling methods automatically have their Handles suffix removed, too, so they never get called, and there's no compiler error. I only notice much later or not at all, because I'm working on a different area in the form. As an example, I have a form with a SplitContainer containing an Infragistics UltraListView to the left, and an UltraTabControl to the right. I added a new tab, and controls within, and they worked fine. I later on found out that the list view's scrollbar was suddenly invisible, due to its size being off, and at least one control was removed from a different tab that I hadn't been working on. Is this a known issue with the WinForms Designer, or with Infragistics? I use version control, of course, so I can compare the changes and merge the deleted code back in, but it's a tedious process that shouldn't be necessary. Are there ways to avoid this? Is there a good reason for this to occur? One clue is that the control that was removed may have code (such as a Load event handler) that expects to be run in run time, not design time, and may be throwing an exception. Could this cause Visual Studio to remove the control?

    Read the article

  • WPF create a list of controls that can be scrolled via the mouse but still remain functional

    - by Mark
    I have a list of controls that I am displaying via a WrapPanel and it horizontally oriented. I have implemented a "Click and Drag" scrolling technique so that the user scrolls with the mouse via clicking and dragging. Like so: <Canvas x:Name="ParentCanvas" PreviewMouseDown="Canvas_MouseDown" MouseMove="Canvas_MouseMove"> <WrapPanel> <WrapPanel.RenderTransform> <TranslateTransform /> </WrapPanel.RenderTransform> <!-- controls are all in here ... --> </WrapPanel> </Canvas> Then in the code behind: private Point _mousePosition; private Point _lastMousePosition; private void Canvas_MouseDown(object sender, MouseButtonEventArgs e) { _lastMousePosition = e.GetPosition(ParentCanvas); e.Handled = true; } private void Canvas_MouseMove(object sender, MouseEventArgs e) { _mousePosition = e.GetPosition(ParentCanvas); var delta = _mousePosition - _lastMousePosition; if(e.LeftButton == MouseButtonState.Pressed && delta.X != 0) { var transform = ((TranslateTransform)_wrapPanel.RenderTransform).Clone(); transform.X += delta.X; _wrapPanel.RenderTransform = transform; _lastMousePosition = _mousePosition; } } This all works fine But what I want to do is make it so that when a users clicks to drag, the items within the WrapPanel dont respond (i.e. the user is only browsing), but when the user clicks (as in a full click) then they do respond to the click. Just like how the iphone works, when you press and drag directly on an app, it does not open the app, but rather scrolls the screen, but when you tap the app, it starts... I hope this makes sense. Cheers, Mark

    Read the article

  • C++/Win32 : XP Visual Styles - no controls are showing up?

    - by mrl33t
    Okay, so i'm pretty new to C++ & the Windows API and i'm just writing a small application. I wanted my application to make use of visual styles in both XP, Vista and Windows 7 so I added this line to the top of my code: #pragma comment(linker,"\"/manifestdependency:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"") It seemed to work perfectly on my Windows 7 machine and also Vista machine. But when I tried the application on XP the application wouldn't load any controls (e.g. buttons, labels etc.) - not even messageboxes would display. This image shows a small test application which i've just put together to demonstrate what i'm trying to explain: http://img704.imageshack.us/img704/2250/myapp.png In this test application i'm not using any particularly fancy or complicated code. I've effectively just taken the most basic sample code from the MSDN Library (http://msdn.microsoft.com/en-us/library/ff381409.aspx) and added a section to the WM_CREATE message to create a button: MyBtn = CreateWindow(L"Button", L"My Button", BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE, 25, 25, 100, 30, hWnd, NULL, hInst, 0); But I just can't figure out what's going on and why its not working. Any ideas guys? Thank you in advanced. (By the way the application works in XP if i remove the manifest section from the top - obviously without visual styles though. I should also probably mention that the app was built using Visual C++ 2010 Express on a Windows 7 machine - if that makes a difference?)

    Read the article

  • Is there a maximum number of input controls that can be used on an HTML form?

    - by Rich
    I have an ambitious requirement for an asp.net 2.0 web page that contains a table (gridview), and each row in the grid contains 6 select (dropdown) controls for data entry. The number of rows that will be displayed is dependent upon the user's search parameters, which are specified in another area of the page. Unfortunately, with the default (and even basic) search parameters specified, the grid could contain several hundred rows. I've noticed that the browser, in this case IE8, starts behaving rather erratically once I reach a large number of rows -- no documented evidence for the number of rows where this begins to be a problem. For example, trying to view the source of the page results in a message from IE stating that there was a problem with the page that forced the browser to reload it, and I never get the source. Obviously the page loads and renders rather slowly also. I know that my solution is probably going to involve paging the gridview such that it only displays 20 or so rows per page, and I'll have to write code to handle the saving of changes in the dropdown values when the user changes pages. I can probably turn off viewstate on the gridview also. However, the question I really want to pose is this -- has anyone seen a documented rule indicating the maximum number of input controls that an HTML browser form is supposed to be able to contain? I could not find anything on the Internet after doing a search, and I suspect the answer may be whatever the browser can handle based on the machine configuration it is running on. Any rules of thumb you use? Thanks for any suggestions. Rich

    Read the article

  • Rendering ASP.NET Script References into the Html Header

    - by Rick Strahl
    One thing that I’ve come to appreciate in control development in ASP.NET that use JavaScript is the ability to have more control over script and script include placement than ASP.NET provides natively. Specifically in ASP.NET you can use either the ClientScriptManager or ScriptManager to embed scripts and script references into pages via code. This works reasonably well, but the script references that get generated are generated into the HTML body and there’s very little operational control for placement of scripts. If you have multiple controls or several of the same control that need to place the same scripts onto the page it’s not difficult to end up with scripts that render in the wrong order and stop working correctly. This is especially critical if you load script libraries with dependencies either via resources or even if you are rendering referenced to CDN resources. Natively ASP.NET provides a host of methods that help embedding scripts into the page via either Page.ClientScript or the ASP.NET ScriptManager control (both with slightly different syntax): RegisterClientScriptBlock Renders a script block at the top of the HTML body and should be used for embedding callable functions/classes. RegisterStartupScript Renders a script block just prior to the </form> tag and should be used to for embedding code that should execute when the page is first loaded. Not recommended – use jQuery.ready() or equivalent load time routines. RegisterClientScriptInclude Embeds a reference to a script from a url into the page. RegisterClientScriptResource Embeds a reference to a Script from a resource file generating a long resource file string All 4 of these methods render their <script> tags into the HTML body. The script blocks give you a little bit of control by having a ‘top’ and ‘bottom’ of the document location which gives you some flexibility over script placement and precedence. Script includes and resource url unfortunately do not even get that much control – references are simply rendered into the page in the order of declaration. The ASP.NET ScriptManager control facilitates this task a little bit with the abililty to specify scripts in code and the ability to programmatically check what scripts have already been registered, but it doesn’t provide any more control over the script rendering process itself. Further the ScriptManager is a bear to deal with generically because generic code has to always check and see if it is actually present. Some time ago I posted a ClientScriptProxy class that helps with managing the latter process of sending script references either to ClientScript or ScriptManager if it’s available. Since I last posted about this there have been a number of improvements in this API, one of which is the ability to control placement of scripts and script includes in the page which I think is rather important and a missing feature in the ASP.NET native functionality. Handling ScriptRenderModes One of the big enhancements that I’ve come to rely on is the ability of the various script rendering functions described above to support rendering in multiple locations: /// <summary> /// Determines how scripts are included into the page /// </summary> public enum ScriptRenderModes { /// <summary> /// Inherits the setting from the control or from the ClientScript.DefaultScriptRenderMode /// </summary> Inherit, /// Renders the script include at the location of the control /// </summary> Inline, /// <summary> /// Renders the script include into the bottom of the header of the page /// </summary> Header, /// <summary> /// Renders the script include into the top of the header of the page /// </summary> HeaderTop, /// <summary> /// Uses ClientScript or ScriptManager to embed the script include to /// provide standard ASP.NET style rendering in the HTML body. /// </summary> Script, /// <summary> /// Renders script at the bottom of the page before the last Page.Controls /// literal control. Note this may result in unexpected behavior /// if /body and /html are not the last thing in the markup page. /// </summary> BottomOfPage } This enum is then applied to the various Register functions to allow more control over where scripts actually show up. Why is this useful? For me I often render scripts out of control resources and these scripts often include things like a JavaScript Library (jquery) and a few plug-ins. The order in which these can be loaded is critical so that jQuery.js always loads before any plug-in for example. Typically I end up with a general script layout like this: Core Libraries- HeaderTop Plug-ins: Header ScriptBlocks: Header or Script depending on other dependencies There’s also an option to render scripts and CSS at the very bottom of the page before the last Page control on the page which can be useful for speeding up page load when lots of scripts are loaded. The API syntax of the ClientScriptProxy methods is closely compatible with ScriptManager’s using static methods and control references to gain access to the page and embedding scripts. For example, to render some script into the current page in the header: // Create script block in header ClientScriptProxy.Current.RegisterClientScriptBlock(this, typeof(ControlResources), "hello_function", "function helloWorld() { alert('hello'); }", true, ScriptRenderModes.Header); // Same again - shouldn't be rendered because it's the same id ClientScriptProxy.Current.RegisterClientScriptBlock(this, typeof(ControlResources), "hello_function", "function helloWorld() { alert('hello'); }", true, ScriptRenderModes.Header); // Create a second script block in header ClientScriptProxy.Current.RegisterClientScriptBlock(this, typeof(ControlResources), "hello_function2", "function helloWorld2() { alert('hello2'); }", true, ScriptRenderModes.Header); // This just calls ClientScript and renders into bottom of document ClientScriptProxy.Current.RegisterStartupScript(this,typeof(ControlResources), "call_hello", "helloWorld();helloWorld2();", true); which generates: <html xmlns="http://www.w3.org/1999/xhtml" > <head><title> </title> <script type="text/javascript"> function helloWorld() { alert('hello'); } </script> <script type="text/javascript"> function helloWorld2() { alert('hello2'); } </script> </head> <body> … <script type="text/javascript"> //<![CDATA[ helloWorld();helloWorld2();//]]> </script> </form> </body> </html> Note that the scripts are generated into the header rather than the body except for the last script block which is the call to RegisterStartupScript. In general I wouldn’t recommend using RegisterStartupScript – ever. It’s a much better practice to use a script base load event to handle ‘startup’ code that should fire when the page first loads. So instead of the code above I’d actually recommend doing: ClientScriptProxy.Current.RegisterClientScriptBlock(this, typeof(ControlResources), "call_hello", "$().ready( function() { alert('hello2'); });", true, ScriptRenderModes.Header); assuming you’re using jQuery on the page. For script includes from a Url the following demonstrates how to embed scripts into the header. This example injects a jQuery and jQuery.UI script reference from the Google CDN then checks each with a script block to ensure that it has loaded and if not loads it from a server local location: // load jquery from CDN ClientScriptProxy.Current.RegisterClientScriptInclude(this, typeof(ControlResources), "http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js", ScriptRenderModes.HeaderTop); // check if jquery loaded - if it didn't we're not online string scriptCheck = @"if (typeof jQuery != 'object') document.write(unescape(""%3Cscript src='{0}' type='text/javascript'%3E%3C/script%3E""));"; string jQueryUrl = ClientScriptProxy.Current.GetWebResourceUrl(this, typeof(ControlResources), ControlResources.JQUERY_SCRIPT_RESOURCE); ClientScriptProxy.Current.RegisterClientScriptBlock(this, typeof(ControlResources), "jquery_register", string.Format(scriptCheck,jQueryUrl),true, ScriptRenderModes.HeaderTop); // Load jquery-ui from cdn ClientScriptProxy.Current.RegisterClientScriptInclude(this, typeof(ControlResources), "http://ajax.googleapis.com/ajax/libs/jqueryui/1.7.2/jquery-ui.min.js", ScriptRenderModes.Header); // check if we need to load from local string jQueryUiUrl = ResolveUrl("~/scripts/jquery-ui-custom.min.js"); ClientScriptProxy.Current.RegisterClientScriptBlock(this, typeof(ControlResources), "jqueryui_register", string.Format(scriptCheck, jQueryUiUrl), true, ScriptRenderModes.Header); // Create script block in header ClientScriptProxy.Current.RegisterClientScriptBlock(this, typeof(ControlResources), "hello_function", "$().ready( function() { alert('hello'); });", true, ScriptRenderModes.Header); which in turn generates this HTML: <html xmlns="http://www.w3.org/1999/xhtml" > <head> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js" type="text/javascript"></script> <script type="text/javascript"> if (typeof jQuery != 'object') document.write(unescape("%3Cscript src='/WestWindWebToolkitWeb/WebResource.axd?d=DIykvYhJ_oXCr-TA_dr35i4AayJoV1mgnQAQGPaZsoPM2LCdvoD3cIsRRitHKlKJfV5K_jQvylK7tsqO3lQIFw2&t=633979863959332352' type='text/javascript'%3E%3C/script%3E")); </script> <title> </title> <script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.7.2/jquery-ui.min.js" type="text/javascript"></script> <script type="text/javascript"> if (typeof jQuery != 'object') document.write(unescape("%3Cscript src='/WestWindWebToolkitWeb/scripts/jquery-ui-custom.min.js' type='text/javascript'%3E%3C/script%3E")); </script> <script type="text/javascript"> $().ready(function() { alert('hello'); }); </script> </head> <body> …</body> </html> As you can see there’s a bit more control in this process as you can inject both script includes and script blocks into the document at the top or bottom of the header, plus if necessary at the usual body locations. This is quite useful especially if you create custom server controls that interoperate with script and have certain dependencies. The above is a good example of a useful switchable routine where you can switch where scripts load from by default – the above pulls from Google CDN but a configuration switch may automatically switch to pull from the local development copies if your doing development for example. How does it work? As mentioned the ClientScriptProxy object mimicks many of the ScriptManager script related methods and so provides close API compatibility with it although it contains many additional overloads that enhance functionality. It does however work against ScriptManager if it’s available on the page, or Page.ClientScript if it’s not so it provides a single unified frontend to script access. There are however many overloads of the original SM methods like the above to provide additional functionality. The implementation of script header rendering is pretty straight forward – as long as a server header (ie. it has to have runat=”server” set) is available. Otherwise these routines fall back to using the default document level insertions of ScriptManager/ClientScript. Given that there is a server header it’s relatively easy to generate the script tags and code and append them to the header either at the top or bottom. I suspect Microsoft didn’t provide header rendering functionality precisely because a runat=”server” header is not required by ASP.NET so behavior would be slightly unpredictable. That’s not really a problem for a custom implementation however. Here’s the RegisterClientScriptBlock implementation that takes a ScriptRenderModes parameter to allow header rendering: /// <summary> /// Renders client script block with the option of rendering the script block in /// the Html header /// /// For this to work Header must be defined as runat="server" /// </summary> /// <param name="control">any control that instance typically page</param> /// <param name="type">Type that identifies this rendering</param> /// <param name="key">unique script block id</param> /// <param name="script">The script code to render</param> /// <param name="addScriptTags">Ignored for header rendering used for all other insertions</param> /// <param name="renderMode">Where the block is rendered</param> public void RegisterClientScriptBlock(Control control, Type type, string key, string script, bool addScriptTags, ScriptRenderModes renderMode) { if (renderMode == ScriptRenderModes.Inherit) renderMode = DefaultScriptRenderMode; if (control.Page.Header == null || renderMode != ScriptRenderModes.HeaderTop && renderMode != ScriptRenderModes.Header && renderMode != ScriptRenderModes.BottomOfPage) { RegisterClientScriptBlock(control, type, key, script, addScriptTags); return; } // No dupes - ref script include only once const string identifier = "scriptblock_"; if (HttpContext.Current.Items.Contains(identifier + key)) return; HttpContext.Current.Items.Add(identifier + key, string.Empty); StringBuilder sb = new StringBuilder(); // Embed in header sb.AppendLine("\r\n<script type=\"text/javascript\">"); sb.AppendLine(script); sb.AppendLine("</script>"); int? index = HttpContext.Current.Items["__ScriptResourceIndex"] as int?; if (index == null) index = 0; if (renderMode == ScriptRenderModes.HeaderTop) { control.Page.Header.Controls.AddAt(index.Value, new LiteralControl(sb.ToString())); index++; } else if(renderMode == ScriptRenderModes.Header) control.Page.Header.Controls.Add(new LiteralControl(sb.ToString())); else if (renderMode == ScriptRenderModes.BottomOfPage) control.Page.Controls.AddAt(control.Page.Controls.Count-1,new LiteralControl(sb.ToString())); HttpContext.Current.Items["__ScriptResourceIndex"] = index; } Note that the routine has to keep track of items inserted by id so that if the same item is added again with the same key it won’t generate two script entries. Additionally the code has to keep track of how many insertions have been made at the top of the document so that entries are added in the proper order. The RegisterScriptInclude method is similar but there’s some additional logic in here to deal with script file references and ClientScriptProxy’s (optional) custom resource handler that provides script compression /// <summary> /// Registers a client script reference into the page with the option to specify /// the script location in the page /// </summary> /// <param name="control">Any control instance - typically page</param> /// <param name="type">Type that acts as qualifier (uniqueness)</param> /// <param name="url">the Url to the script resource</param> /// <param name="ScriptRenderModes">Determines where the script is rendered</param> public void RegisterClientScriptInclude(Control control, Type type, string url, ScriptRenderModes renderMode) { const string STR_ScriptResourceIndex = "__ScriptResourceIndex"; if (string.IsNullOrEmpty(url)) return; if (renderMode == ScriptRenderModes.Inherit) renderMode = DefaultScriptRenderMode; // Extract just the script filename string fileId = null; // Check resource IDs and try to match to mapped file resources // Used to allow scripts not to be loaded more than once whether // embedded manually (script tag) or via resources with ClientScriptProxy if (url.Contains(".axd?r=")) { string res = HttpUtility.UrlDecode( StringUtils.ExtractString(url, "?r=", "&", false, true) ); foreach (ScriptResourceAlias item in ScriptResourceAliases) { if (item.Resource == res) { fileId = item.Alias + ".js"; break; } } if (fileId == null) fileId = url.ToLower(); } else fileId = Path.GetFileName(url).ToLower(); // No dupes - ref script include only once const string identifier = "script_"; if (HttpContext.Current.Items.Contains( identifier + fileId ) ) return; HttpContext.Current.Items.Add(identifier + fileId, string.Empty); // just use script manager or ClientScriptManager if (control.Page.Header == null || renderMode == ScriptRenderModes.Script || renderMode == ScriptRenderModes.Inline) { RegisterClientScriptInclude(control, type,url, url); return; } // Retrieve script index in header int? index = HttpContext.Current.Items[STR_ScriptResourceIndex] as int?; if (index == null) index = 0; StringBuilder sb = new StringBuilder(256); url = WebUtils.ResolveUrl(url); // Embed in header sb.AppendLine("\r\n<script src=\"" + url + "\" type=\"text/javascript\"></script>"); if (renderMode == ScriptRenderModes.HeaderTop) { control.Page.Header.Controls.AddAt(index.Value, new LiteralControl(sb.ToString())); index++; } else if (renderMode == ScriptRenderModes.Header) control.Page.Header.Controls.Add(new LiteralControl(sb.ToString())); else if (renderMode == ScriptRenderModes.BottomOfPage) control.Page.Controls.AddAt(control.Page.Controls.Count-1, new LiteralControl(sb.ToString())); HttpContext.Current.Items[STR_ScriptResourceIndex] = index; } There’s a little more code here that deals with cleaning up the passed in Url and also some custom handling of script resources that run through the ScriptCompressionModule – any script resources loaded in this fashion are automatically cached based on the resource id. Raw urls extract just the filename from the URL and cache based on that. All of this to avoid doubling up of scripts if called multiple times by multiple instances of the same control for example or several controls that all load the same resources/includes. Finally RegisterClientScriptResource utilizes the previous method to wrap the WebResourceUrl as well as some custom functionality for the resource compression module: /// <summary> /// Returns a WebResource or ScriptResource URL for script resources that are to be /// embedded as script includes. /// </summary> /// <param name="control">Any control</param> /// <param name="type">A type in assembly where resources are located</param> /// <param name="resourceName">Name of the resource to load</param> /// <param name="renderMode">Determines where in the document the link is rendered</param> public void RegisterClientScriptResource(Control control, Type type, string resourceName, ScriptRenderModes renderMode) { string resourceUrl = GetClientScriptResourceUrl(control, type, resourceName); RegisterClientScriptInclude(control, type, resourceUrl, renderMode); } /// <summary> /// Works like GetWebResourceUrl but can be used with javascript resources /// to allow using of resource compression (if the module is loaded). /// </summary> /// <param name="control"></param> /// <param name="type"></param> /// <param name="resourceName"></param> /// <returns></returns> public string GetClientScriptResourceUrl(Control control, Type type, string resourceName) { #if IncludeScriptCompressionModuleSupport // If wwScriptCompression Module through Web.config is loaded use it to compress // script resources by using wcSC.axd Url the module intercepts if (ScriptCompressionModule.ScriptCompressionModuleActive) { string url = "~/wwSC.axd?r=" + HttpUtility.UrlEncode(resourceName); if (type.Assembly != GetType().Assembly) url += "&t=" + HttpUtility.UrlEncode(type.FullName); return WebUtils.ResolveUrl(url); } #endif return control.Page.ClientScript.GetWebResourceUrl(type, resourceName); } This code merely retrieves the resource URL and then simply calls back to RegisterClientScriptInclude with the URL to be embedded which means there’s nothing specific to deal with other than the custom compression module logic which is nice and easy. What else is there in ClientScriptProxy? ClientscriptProxy also provides a few other useful services beyond what I’ve already covered here: Transparent ScriptManager and ClientScript calls ClientScriptProxy includes a host of routines that help figure out whether a script manager is available or not and all functions in this class call the appropriate object – ScriptManager or ClientScript – that is available in the current page to ensure that scripts get embedded into pages properly. This is especially useful for control development where controls have no control over the scripting environment in place on the page. RegisterCssLink and RegisterCssResource Much like the script embedding functions these two methods allow embedding of CSS links. CSS links are appended to the header or to a form declared with runat=”server”. LoadControlScript Is a high level resource loading routine that can be used to easily switch between different script linking modes. It supports loading from a WebResource, a url or not loading anything at all. This is very useful if you build controls that deal with specification of resource urls/ids in a standard way. Check out the full Code You can check out the full code to the ClientScriptProxyClass here: ClientScriptProxy.cs ClientScriptProxy Documentation (class reference) Note that the ClientScriptProxy has a few dependencies in the West Wind Web Toolkit of which it is part of. ControlResources holds a few standard constants and script resource links and the ScriptCompressionModule which is referenced in a few of the script inclusion methods. There’s also another useful ScriptContainer companion control  to the ClientScriptProxy that allows scripts to be placed onto the page’s markup including the ability to specify the script location and script minification options. You can find all the dependencies in the West Wind Web Toolkit repository: West Wind Web Toolkit Repository West Wind Web Toolkit Home Page© Rick Strahl, West Wind Technologies, 2005-2010Posted in ASP.NET  JavaScript  

    Read the article

< Previous Page | 237 238 239 240 241 242 243 244 245 246 247 248  | Next Page >