(formerly known as wwHoverPanel)The West Wind Ajax Toolkit is a small self-contained library of AJAX controls and infrastructure classes that makes it easy to add AJAX functionality to ASP.NET applications. The library provides several high level controls that can be visually manipulated and support features like remote Method callbacks to the server, pop up windows, modal dialogs, draggable windows and a date time picker. In addition, a number of lower level tools such as a JSON Serializer, a generic JSON Callback manager, a ClientScript Proxy, a script compression module are also included.
This library is free and comes with full source code.
The key features of the library are:
- JSON Method Callbacks and the wwCallbackMethod Control
The library provides several easy and very flexible mechanisms for making AJAX method callbacks to the server to retrieve data from server methods. The wwCallbackMethod control allows creation of server side methods in an ASP.NET Page or any control derived class, mark them with a [CallbackMethod] attribute and route callbacks to these methods. It's as simple as creating the method, marking it and then writing one line of client code to call it. The control manages two-way JSON of parameters and return values. Both the control and client side class and single function access is provided to make these callbacks.The beauty of this approach is its simplicity - you can pass various types including complex objects, arrays, collections and datatables/datarows back and forth over the wire and program to them on the client. It's very easy and you can be up and running making AJAX method literally calls in minutes without any setup other than creating the server methods and a single client function call.
Some other useful control features:
- Control how data is passed back to the server (Get,Post,PostNoViewState,PostMethodParametersOnly)
- Works with non-serializable types and anonymous types and even Object
- Support for DataSet/DataTable/DataRow serialization to the client
- Automatic Callback detection (wwMethodCallback.IsCallback)
- Control developers can directly route AJAX callbacks to their controls
- High performance Http Handler option
- wwHoverPanel Control
The wwHoverPanel control allows creation of easy popup windows with content retrieved from the server with a single line of client script code. The control allows you to specify a URL and your single client function call allows specification of additional parameters for the request. The control can then automatically retrieve the result from the server and parse the content into the target panel. Many display features are automatically configured via server side control properties. You can set the position of the panel including hover behavior and positioning at the mouse cursor, manage panel transparency, displaying shadows, fading in/out of content, making panels sticky, draggable and closable or simply displaying panels in place. Most features can be configured entirely through declarative markup control properties.Hover behavior can be both inline (using a DIV in the current document) or using an IFRAME which allows integration of fully self contained Web pages as pop overs.
- wwDragPanel Control
This control provides draggable and closable windows that you can use as part of your page. These panels can be set up on the server side with control properties that set display features like transparency, shadow offset, ability to close windows. This is a great control to use in AJAX client applications to 'pop up' content ontop of existing pages either statically (simply hiding and making visible) or dynamically by loading content with Ajax using wwHoverPanel which derives from wwDragPanel. From the client side any control can be made draggable using the client side wwDragBehavior class. - wwModalDialog Control
Provided mainly because of many feature requests this control provides pop up panels that disable the background content by overlaying the background with an opaque panel and showing a panel ontop of it. The control makes it very easy to create the hover panel layout and easily display it from the client with a single method call. Both server and client side events are supported for this control to determine when the dialog is closed. Inherits from wwDragPanel so the pop up modal panels can be draggable and closable. - wwDatePicker Control
Based on Marc Garbanski's jQuery UI Datepicker control this is a simple and elegant popup date time picker control. - Client Library
This West Wind Ajax Toolkit also includes a client library of controls that can be used in JavaScript. There are client side classes that match the server side controls so you have full control over the wwHoverPanel and and wwCallbackMethod logic, wwDragBehavior, wwModalDialog all of which can be driven entirely through client code.In addition there are a number of support classes which include network and UI functionality:
- wwHttp
Provides a wrapper around the XmlHttp object with robust error handling and browser independent access to make remote, asynchronous callbacks to the server. - wwControl, wwList, wwToolTip
The wwControl class is built as a base control class that handles many common DOM operations in a browser independent manner. You can get and set bounds and location, show and hide, set opacity, assign text and html, do fades, and add shadows to control. wwList adds list specific functionality including the ability to databind to arrays of objects or server retrieved DataTables. wwTooltip is an easy to use tooltip behavior class that attaches to another control and provides popover tooltip semantics. - Utility Classes and Functions
In addition ther are a number of utility classes like wwUtils that provides several UI features like centering, shading of background content for overlays, wwEvent for simpler event binding and unbinding and consistent use of the Event object, wwDebug for a simple way to display debug output and a set of ajax helper functions for quickly making remote callbacks like ajaxRequest, ajaxLoadHtml, ajaxJson.
The library is relatively small at 47k uncompressed (12k GZipped and minified) and provides many useful features to page developers.
- JSON Serializer
This library includes a self-contained two-way JSON serializer. JSON serialization provides the ability to easily pass data from the server to the client, as well as data from the client back to the server. This converter can handle many data types directly, but there are some limitations due to the JavaScript to .NET type differences. For many common scenarios however, the serialization is quite adequate. - ClientScriptProxy
The ClientScriptProxy class provides a wrapper around Page.ClientScript and the MS Ajax ScriptManager and allows using the appropriate mechanism depending on whether MS Ajax is present or not. The class basically mimics the common methods in both interfaces and based on the availability of ScriptManager calls the appropriate component. Using this class ensures that Pages using script and other embedded Page resources work both in MS Ajax and non-MS Ajax environments which is especially important for controll development. - wwScriptCompression Module
Module that provides script minifiying and GZIP compression to JavaScript resources without requiring MS Ajax.