Saturday, January 30, 2010

Download to Excel

Albeit plethora of approaches traditionally followed, the one that impress me is the following.

Assuming datasource is readily available in hand, all we need to do is to export a part of the contents of the result set.

A handy and pliant approach to Download the page contents to Excel using ASP.Net is directly setting the dataset as a source for the response data. There is a small glitch in this as we have to disturb the code every time whenever the data source of the dataset is changed. Instead we can loosely couple this architecture by using XSL in place, provided the XSL file should be in a location which can be directly modified even in PROD similar to config files.

.Net snippet to achieve this:

Response.ClearContent();

Response.ClearHeaders();

Response.ContentType = "application/vnd.ms-excel";

Response.AddHeader("Content-Disposition", "Attachment; FileName =TestDownload);

Response.Charset = "";

XmlDataDocument xdd = new XmlDataDocument(oDS);

xdd.InnerText.Replace("\"", "'");

XslCompiledTransform xt = new XslCompiledTransform();

xt.Load(HttpContext.Current.Server.MapPath(C:\\Excel.xsl");

xt.Transform(xdd, null, Response.OutputStream);

xdd = null;

xt = null;

Response.Flush();

Response.Close();

this.Dispose();

XSL file can be used to control the display of the Excel including the column that are required, format , style etc.,

Wednesday, January 20, 2010

AutoComplete Search

Auto Complete Search is a good to have functionality to ease the search for a given context . Before deciding on the approach, lets first examine the data source from where the auto complete list needs to be populated.

case i) Data is available in the web page already and needs to be listed upon search.

In this case instead of caching the dataset or making the page heavy by storing the dataset values to maintain across postbacks, the suggestion list to be displayed can be built as a JSON structure.

JSON is a format in which the values are stored and is very easily accessible in the form of objects in the client side.

case ii) Data is not pre-fetched and needs to be rendered on the fly. In this case a definite server side call is required either synchronously/asynchronously. Here we can make use of the ASP.Net autocomplete feature. It requires a reference to the Ajax Extender control toolkit.
Here we necessarily need to call a web method with the default parameters mentioned in the syntax including the casing. So what about customization here?
Well, we can address it using the bridge method with the default parameters and then calling the custom method with the required set of custom parameters from there.