Tuesday, March 20, 2007

UpdatePanel still performing full postback

Had some fun tracking this one down today, fortunately someone else had already done the hard work in working out how to fix it.

Essentially I was trying out a basic AJAX page in an existing 2.0 web application project. The various additional required sections were added to the web.config and I followed the Introduction to the UpdatePanel control, where a label is updated when you click a button.

Simple. Or so you'd think. No AJAX behaviour for me - it was performing a full postback.

Fortunately I managed to find a post from "Rick" that explained what the culprit was - the <xhtmlConformance mode="Legacy"/> in the web.config. Commenting this out gives the desired behaviour.

I must admit I haven't bothered investigating any further to work out why that works - feel free to let me know.

Update:
Found another post about this that explains a bit more from Scott Guthrie.

Tuesday, March 06, 2007

Selecting random records from a database table

A little nugget I picked up from my colleague Wim today, that was actually his first blog post a few years back.

Need a random sample of data from your database? Try this:

SELECT TOP 10 * FROM Orders ORDER BY NEWID()

Friday, March 02, 2007

DeflateStream and zlib headers

The DeflateStream class in System.IO.Compression, as the docs state, represents the DEFLATE algorithm as in RFC 1951.

What it doesn't do (out of the box) is support compressed data in zlib format (see RFC 1950). When trying to decompress existing data, the easiest way I've found to get round this is simply to get rid of the 2 byte zlib header and use what's left, so something like the following works nicely if you've already got the data as a byte array in memory:


Array.Copy(zlibBytes, 2, strippedBytes, 0, zlibBytes.Length - 2);


Then just use the strippedBytes with DeflateStream instead.

Out of interest, I also tried stripping off the 4 byte Adler-32 checksum footer, and DeflateStream worked happily with that too.