﻿<?xml version="1.0" encoding="utf-8"?><rss xmlns:a10="http://www.w3.org/2005/Atom" version="2.0"><channel xml:base="http://codepaste.net/recent"><title>CodePaste.NET</title><link>http://codepaste.net/list/user/1133?format=rss</link><description>Paste and Link .NET Code</description><lastBuildDate>Sat, 31 Jul 2010 13:09:41 -0700</lastBuildDate><item><guid isPermaLink="false">sfuywi</guid><link>http://codepaste.net/sfuywi</link><a10:author><a10:name>Rick Strahl</a10:name></a10:author><title>ExtractString</title><description>&lt;pre&gt;&lt;pre class="csharpcode"&gt;
&lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;
&lt;span class="rem"&gt;/// Extracts a string from between a pair of delimiters. Only the first &lt;/span&gt;
&lt;span class="rem"&gt;/// instance is found.&lt;/span&gt;
&lt;span class="rem"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;
&lt;span class="rem"&gt;/// &amp;lt;param name="source"&amp;gt;Input String to work on&amp;lt;/param&amp;gt;&lt;/span&gt;
&lt;span class="rem"&gt;/// &amp;lt;param name="StartDelim"&amp;gt;Beginning delimiter&amp;lt;/param&amp;gt;&lt;/span&gt;
&lt;span class="rem"&gt;/// &amp;lt;param name="endDelim"&amp;gt;ending delimiter&amp;lt;/param&amp;gt;&lt;/span&gt;
&lt;span class="rem"&gt;/// &amp;lt;param name="CaseInsensitive"&amp;gt;Determines whether the search for delimiters is case sensitive&amp;lt;/param&amp;gt;&lt;/span&gt;
&lt;span class="rem"&gt;/// &amp;lt;returns&amp;gt;Extracted string or ""&amp;lt;/returns&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; ExtractString(&lt;span class="kwrd"&gt;string&lt;/span&gt; source, &lt;span class="kwrd"&gt;string&lt;/span&gt; beginDelim,
                                   &lt;span class="kwrd"&gt;string&lt;/span&gt; endDelim, &lt;span class="kwrd"&gt;bool&lt;/span&gt; caseSensitive,
                                   &lt;span class="kwrd"&gt;bool&lt;/span&gt; allowMissingEndDelimiter)
{
    &lt;span class="kwrd"&gt;int&lt;/span&gt; at1, at2;
&amp;nbsp;
    &lt;span class="kwrd"&gt;if&lt;/span&gt; (&lt;span class="kwrd"&gt;string&lt;/span&gt;.IsNullOrEmpty(source))
        &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt;.Empty;
&amp;nbsp;
    &lt;span class="kwrd"&gt;if&lt;/span&gt; (caseSensitive)
    {
        at1 = source.IndexOf(beginDelim);
        &lt;span class="kwrd"&gt;if&lt;/span&gt; (at1 == -1)
            &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt;.Empty;
&amp;nbsp;
        at2 = source.IndexOf(endDelim, at1 + beginDelim.Length);
    }
    &lt;span class="kwrd"&gt;else&lt;/span&gt;
    {
        &lt;span class="rem"&gt;//string Lower = source.ToLower();&lt;/span&gt;
        at1 = source.IndexOf(beginDelim, 0, source.Length, StringComparison.OrdinalIgnoreCase);
        &lt;span class="kwrd"&gt;if&lt;/span&gt; (at1 == -1)
            &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt;.Empty;
&amp;nbsp;
        at2 = source.IndexOf(endDelim, at1 + beginDelim.Length, StringComparison.OrdinalIgnoreCase);
    }
&amp;nbsp;
    &lt;span class="kwrd"&gt;if&lt;/span&gt; (allowMissingEndDelimiter &amp;amp;&amp;amp; at2 == -1)
        &lt;span class="kwrd"&gt;return&lt;/span&gt; source.Substring(at1 + beginDelim.Length);
&amp;nbsp;
    &lt;span class="kwrd"&gt;if&lt;/span&gt; (at1 &amp;gt; -1 &amp;amp;&amp;amp; at2 &amp;gt; 1)
        &lt;span class="kwrd"&gt;return&lt;/span&gt; source.Substring(at1 + beginDelim.Length, at2 - at1 - beginDelim.Length);
&amp;nbsp;
    &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt;.Empty;
}
&amp;nbsp;
&lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;
&lt;span class="rem"&gt;/// Extracts a string from between a pair of delimiters. Only the first&lt;/span&gt;
&lt;span class="rem"&gt;/// instance is found.&lt;/span&gt;
&lt;span class="rem"&gt;/// &amp;lt;seealso&amp;gt;Class wwUtils&amp;lt;/seealso&amp;gt;&lt;/span&gt;
&lt;span class="rem"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;
&lt;span class="rem"&gt;/// &amp;lt;param name="source"&amp;gt;&lt;/span&gt;
&lt;span class="rem"&gt;/// Input String to work on&lt;/span&gt;
&lt;span class="rem"&gt;/// &amp;lt;/param&amp;gt;&lt;/span&gt;
&lt;span class="rem"&gt;/// &amp;lt;param name="beginDelim"&amp;gt;&amp;lt;/param&amp;gt;&lt;/span&gt;
&lt;span class="rem"&gt;/// &amp;lt;param name="endDelim"&amp;gt;&lt;/span&gt;
&lt;span class="rem"&gt;/// ending delimiter&lt;/span&gt;
&lt;span class="rem"&gt;/// &amp;lt;/param&amp;gt;&lt;/span&gt;
&lt;span class="rem"&gt;/// &amp;lt;param name="CaseInSensitive"&amp;gt;&amp;lt;/param&amp;gt;&lt;/span&gt;
&lt;span class="rem"&gt;/// &amp;lt;returns&amp;gt;String&amp;lt;/returns&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; ExtractString(&lt;span class="kwrd"&gt;string&lt;/span&gt; source, &lt;span class="kwrd"&gt;string&lt;/span&gt; beginDelim, &lt;span class="kwrd"&gt;string&lt;/span&gt; endDelim, &lt;span class="kwrd"&gt;bool&lt;/span&gt; caseSensitive)
{
    &lt;span class="kwrd"&gt;return&lt;/span&gt; ExtractString(source, beginDelim, endDelim, caseSensitive, &lt;span class="kwrd"&gt;false&lt;/span&gt;);
}
&amp;nbsp;
&lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;
&lt;span class="rem"&gt;/// Extracts a string from between a pair of delimiters. Only the first &lt;/span&gt;
&lt;span class="rem"&gt;/// instance is found. Search is case insensitive.&lt;/span&gt;
&lt;span class="rem"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;
&lt;span class="rem"&gt;/// &amp;lt;param name="source"&amp;gt;&lt;/span&gt;
&lt;span class="rem"&gt;/// Input String to work on&lt;/span&gt;
&lt;span class="rem"&gt;/// &amp;lt;/param&amp;gt;&lt;/span&gt;
&lt;span class="rem"&gt;/// &amp;lt;param name="StartDelim"&amp;gt;&lt;/span&gt;
&lt;span class="rem"&gt;/// Beginning delimiter&lt;/span&gt;
&lt;span class="rem"&gt;/// &amp;lt;/param&amp;gt;&lt;/span&gt;
&lt;span class="rem"&gt;/// &amp;lt;param name="endDelim"&amp;gt;&lt;/span&gt;
&lt;span class="rem"&gt;/// ending delimiter&lt;/span&gt;
&lt;span class="rem"&gt;/// &amp;lt;/param&amp;gt;&lt;/span&gt;
&lt;span class="rem"&gt;/// &amp;lt;returns&amp;gt;Extracted string or string.Empty&amp;lt;/returns&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; ExtractString(&lt;span class="kwrd"&gt;string&lt;/span&gt; source, &lt;span class="kwrd"&gt;string&lt;/span&gt; beginDelim, &lt;span class="kwrd"&gt;string&lt;/span&gt; endDelim)
{
    &lt;span class="kwrd"&gt;return&lt;/span&gt; ExtractString(source, beginDelim, endDelim, &lt;span class="kwrd"&gt;false&lt;/span&gt;, &lt;span class="kwrd"&gt;false&lt;/span&gt;);
}
&amp;nbsp;
&lt;/pre&gt;&lt;/pre&gt;</description><pubDate>Fri, 23 Jul 2010 17:20:23 -0700</pubDate></item><item><guid isPermaLink="false">i89xhc</guid><link>http://codepaste.net/i89xhc</link><a10:author><a10:name>Rick Strahl</a10:name></a10:author><title>JSON ServiceProxy to call WCF or ASMX JSON Services with Date Parsing</title><description>&lt;pre&gt;&lt;pre class="csharpcode"&gt;
&lt;span class="rem"&gt;/// &amp;lt;reference path="jquery.js" /&amp;gt;&lt;/span&gt;
&lt;span class="rem"&gt;/*&lt;/span&gt;
&lt;span class="rem"&gt;ServiceProxy.js  &lt;/span&gt;
&lt;span class="rem"&gt;Version 0.965 - 4/5/10&lt;/span&gt;
&lt;span class="rem"&gt;&lt;/span&gt;
&lt;span class="rem"&gt;(c) 2008-2010 Rick Strahl, West Wind Technologies &lt;/span&gt;
&lt;span class="rem"&gt;www.west-wind.com&lt;/span&gt;
&lt;span class="rem"&gt;&lt;/span&gt;
&lt;span class="rem"&gt;Licensed under MIT License&lt;/span&gt;
&lt;span class="rem"&gt;http://en.wikipedia.org/wiki/MIT_License&lt;/span&gt;
&lt;span class="rem"&gt;*/&lt;/span&gt;
&lt;span class="rem"&gt;// set up a global filter to always parse JSON with&lt;/span&gt;
&lt;span class="rem"&gt;// date formatting applied&lt;/span&gt;
$.ajaxSetup({ dataFilter: &lt;span class="kwrd"&gt;function&lt;/span&gt;(jsonString) {
    &lt;span class="kwrd"&gt;debugger&lt;/span&gt;;
    &lt;span class="kwrd"&gt;if&lt;/span&gt; (&lt;span class="kwrd"&gt;this&lt;/span&gt;.contentType == &lt;span class="str"&gt;"application/json"&lt;/span&gt;) {
        &lt;span class="rem"&gt;// Use json library so we can fix up dates&lt;/span&gt;
        &lt;span class="kwrd"&gt;var&lt;/span&gt; res = JSON.parseWithDate(jsonString);
        &lt;span class="kwrd"&gt;if&lt;/span&gt; (res == &lt;span class="kwrd"&gt;null&lt;/span&gt;)
            &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;null&lt;/span&gt;;
        &lt;span class="kwrd"&gt;if&lt;/span&gt; (res.hasOwnProperty(&lt;span class="str"&gt;"d"&lt;/span&gt;))
            res = result.d;
        &lt;span class="kwrd"&gt;return&lt;/span&gt; res;
    }
    &lt;span class="kwrd"&gt;return&lt;/span&gt; jsonString;
}
});
&amp;nbsp;
&amp;nbsp;
&lt;span class="kwrd"&gt;this&lt;/span&gt;.ServiceProxy = &lt;span class="kwrd"&gt;function&lt;/span&gt;(serviceUrl) {
    &lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;
    &lt;span class="rem"&gt;/// Generic Service Proxy class that can be used to&lt;/span&gt;
    &lt;span class="rem"&gt;/// call JSON Services generically using jQuery.&lt;/span&gt;
    &lt;span class="rem"&gt;/// Includes all dependencies.&lt;/span&gt;
    &lt;span class="rem"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;
    &lt;span class="rem"&gt;/// &amp;lt;param name="serviceUrl" type="string"&amp;gt;&lt;/span&gt;
    &lt;span class="rem"&gt;/// The Url of the service ready to accept the method name&lt;/span&gt;
    &lt;span class="rem"&gt;/// should contain trailing slash (or other URL separator ?,&amp;amp;)&lt;/span&gt;
    &lt;span class="rem"&gt;/// &amp;lt;/param&amp;gt;&lt;/span&gt;
    &lt;span class="rem"&gt;/// &amp;lt;example&amp;gt;&lt;/span&gt;
    &lt;span class="rem"&gt;/// var proxy = new ServiceProxy("JsonStockService.svc/");&lt;/span&gt;
    &lt;span class="rem"&gt;/// proxy.invoke("GetStockQuote",{symbol:"msft"},&lt;/span&gt;
    &lt;span class="rem"&gt;///              function(quote) { alert(result.LastPrice); },onPageError);&lt;/span&gt;
    &lt;span class="rem"&gt;///&amp;lt;/example&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;var&lt;/span&gt; _I = &lt;span class="kwrd"&gt;this&lt;/span&gt;;
    &lt;span class="kwrd"&gt;this&lt;/span&gt;.serviceUrl = serviceUrl;
    &lt;span class="kwrd"&gt;this&lt;/span&gt;.isWcf = &lt;span class="kwrd"&gt;true&lt;/span&gt;;
&amp;nbsp;
&amp;nbsp;
    &lt;span class="kwrd"&gt;this&lt;/span&gt;.invoke = &lt;span class="kwrd"&gt;function&lt;/span&gt;(method, &lt;span class="kwrd"&gt;params&lt;/span&gt;, callback, errorHandler, bare) {
        &lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;
        &lt;span class="rem"&gt;/// Calls a WCF/ASMX service and returns the result.&lt;/span&gt;
        &lt;span class="rem"&gt;/// &amp;lt;/summary&amp;gt;    &lt;/span&gt;
        &lt;span class="rem"&gt;/// &amp;lt;param name="method" type="string"&amp;gt;The method of the service to call&amp;lt;/param&amp;gt;&lt;/span&gt;
        &lt;span class="rem"&gt;/// &amp;lt;param name="params" type="object"&amp;gt;An object that represents the parameters to pass {symbol:"msft",years:2}       &lt;/span&gt;
        &lt;span class="rem"&gt;/// &amp;lt;param name="callback" type="function"&amp;gt;Function called on success. &lt;/span&gt;
        &lt;span class="rem"&gt;/// Receives a single parameter of the parsed result value&amp;lt;/parm&amp;gt;&lt;/span&gt;
        &lt;span class="rem"&gt;/// &amp;lt;param name="errorCallback" type="function"&amp;gt;Function called on failure. &lt;/span&gt;
        &lt;span class="rem"&gt;/// Receives a single error object with Message property&amp;lt;/parm&amp;gt;&lt;/span&gt;
        &lt;span class="rem"&gt;/// &amp;lt;param name="isBare" type="boolean"&amp;gt;Set to true if response is not a WCF/ASMX style 'wrapped' object&amp;lt;/parm&amp;gt;&lt;/span&gt;
&amp;nbsp;
        &lt;span class="kwrd"&gt;var&lt;/span&gt; json = _I.isWcf ? JSON.stringifyWcf(&lt;span class="kwrd"&gt;params&lt;/span&gt;) : JSON.stringify(&lt;span class="kwrd"&gt;params&lt;/span&gt;);
&amp;nbsp;
        &lt;span class="rem"&gt;// Service endpoint URL        &lt;/span&gt;
        &lt;span class="kwrd"&gt;var&lt;/span&gt; url = _I.serviceUrl + method;
&amp;nbsp;
        $.ajax({
            url: url,
            data: json,
            type: &lt;span class="str"&gt;"POST"&lt;/span&gt;,
            processData: &lt;span class="kwrd"&gt;false&lt;/span&gt;,
            contentType: &lt;span class="str"&gt;"application/json"&lt;/span&gt;,
            timeout: 10000,
            dataType: &lt;span class="str"&gt;"text"&lt;/span&gt;,  &lt;span class="rem"&gt;// not "json" we'll parse&lt;/span&gt;
            success: &lt;span class="kwrd"&gt;function&lt;/span&gt;(result) {  &lt;span class="rem"&gt;// msg parse with dataFilter above!&lt;/span&gt;
                &lt;span class="kwrd"&gt;if&lt;/span&gt; (!callback) &lt;span class="kwrd"&gt;return&lt;/span&gt;;                
&amp;nbsp;
                callback(result);
            },
            error: &lt;span class="kwrd"&gt;function&lt;/span&gt;(xhr, status) {
                &lt;span class="kwrd"&gt;var&lt;/span&gt; err = &lt;span class="kwrd"&gt;null&lt;/span&gt;;
                &lt;span class="kwrd"&gt;if&lt;/span&gt; (xhr.readyState == 4) {
                    &lt;span class="kwrd"&gt;var&lt;/span&gt; res = xhr.responseText;
                    &lt;span class="kwrd"&gt;if&lt;/span&gt; (res &amp;amp;&amp;amp; res.charAt(0) == &lt;span class="str"&gt;'{'&lt;/span&gt;)
                        &lt;span class="kwrd"&gt;var&lt;/span&gt; err = JSON.parseWithDate(res);
                    &lt;span class="kwrd"&gt;if&lt;/span&gt; (!err) {
                        &lt;span class="kwrd"&gt;if&lt;/span&gt; (xhr.status &amp;amp;&amp;amp; xhr.status != 200)
                            err = &lt;span class="kwrd"&gt;new&lt;/span&gt; CallbackException(xhr.status + &lt;span class="str"&gt;" "&lt;/span&gt; + xhr.statusText);
                        &lt;span class="kwrd"&gt;else&lt;/span&gt;
                            err = &lt;span class="kwrd"&gt;new&lt;/span&gt; CallbackException(&lt;span class="str"&gt;"Callback Error: "&lt;/span&gt; + status);
                        err.detail = res;
                    }
                }
                &lt;span class="kwrd"&gt;if&lt;/span&gt; (!err)
                    err = &lt;span class="kwrd"&gt;new&lt;/span&gt; CallbackException(&lt;span class="str"&gt;"Callback Error: "&lt;/span&gt; + status);
&amp;nbsp;
                &lt;span class="kwrd"&gt;if&lt;/span&gt; (errorHandler)
                    errorHandler(err, _I, xhr);
&amp;nbsp;
            }
        });
    }
}
&lt;span class="kwrd"&gt;this&lt;/span&gt;.CallbackException = &lt;span class="kwrd"&gt;function&lt;/span&gt;(message, detail) {
    &lt;span class="kwrd"&gt;this&lt;/span&gt;.isCallbackError = &lt;span class="kwrd"&gt;true&lt;/span&gt;;
    &lt;span class="kwrd"&gt;if&lt;/span&gt; (&lt;span class="kwrd"&gt;typeof&lt;/span&gt; (message) == &lt;span class="str"&gt;"object"&lt;/span&gt;) {
        &lt;span class="kwrd"&gt;if&lt;/span&gt; (message.message)
            &lt;span class="kwrd"&gt;this&lt;/span&gt;.message = message.message;
        &lt;span class="kwrd"&gt;else&lt;/span&gt; &lt;span class="kwrd"&gt;if&lt;/span&gt; (message.Message)
            &lt;span class="kwrd"&gt;this&lt;/span&gt;.message = message.Message;
    }
    &lt;span class="kwrd"&gt;else&lt;/span&gt;
        &lt;span class="kwrd"&gt;this&lt;/span&gt;.message = message;
&amp;nbsp;
    &lt;span class="kwrd"&gt;if&lt;/span&gt; (detail)
        &lt;span class="kwrd"&gt;this&lt;/span&gt;.detail = detail;
    &lt;span class="kwrd"&gt;else&lt;/span&gt;
        &lt;span class="kwrd"&gt;this&lt;/span&gt;.detail = &lt;span class="kwrd"&gt;null&lt;/span&gt;;
}
&amp;nbsp;
&amp;nbsp;
&lt;span class="rem"&gt;/*&lt;/span&gt;
&lt;span class="rem"&gt;http://www.JSON.org/json2.js&lt;/span&gt;
&lt;span class="rem"&gt;2009-04-16&lt;/span&gt;
&lt;span class="rem"&gt;Public Domain.&lt;/span&gt;
&lt;span class="rem"&gt;*/&lt;/span&gt;
&lt;span class="kwrd"&gt;if&lt;/span&gt; (!&lt;span class="kwrd"&gt;this&lt;/span&gt;.JSON) { &lt;span class="kwrd"&gt;this&lt;/span&gt;.JSON = {}; }
(&lt;span class="kwrd"&gt;function&lt;/span&gt;() {
    &lt;span class="kwrd"&gt;function&lt;/span&gt; f(n) { &lt;span class="kwrd"&gt;return&lt;/span&gt; n &amp;lt; 10 ? &lt;span class="str"&gt;'0'&lt;/span&gt; + n : n; }
    &lt;span class="kwrd"&gt;if&lt;/span&gt; (&lt;span class="kwrd"&gt;typeof&lt;/span&gt; Date.prototype.toJSON !== &lt;span class="str"&gt;'function'&lt;/span&gt;) {
        Date.prototype.toJSON = &lt;span class="kwrd"&gt;function&lt;/span&gt;(key) {
            &lt;span class="kwrd"&gt;debugger&lt;/span&gt;; &lt;span class="kwrd"&gt;return&lt;/span&gt; isFinite(&lt;span class="kwrd"&gt;this&lt;/span&gt;.valueOf()) ? &lt;span class="kwrd"&gt;this&lt;/span&gt;.getUTCFullYear() + &lt;span class="str"&gt;'-'&lt;/span&gt; +
f(&lt;span class="kwrd"&gt;this&lt;/span&gt;.getUTCMonth() + 1) + &lt;span class="str"&gt;'-'&lt;/span&gt; +
f(&lt;span class="kwrd"&gt;this&lt;/span&gt;.getUTCDate()) + &lt;span class="str"&gt;'T'&lt;/span&gt; +
f(&lt;span class="kwrd"&gt;this&lt;/span&gt;.getUTCHours()) + &lt;span class="str"&gt;':'&lt;/span&gt; +
f(&lt;span class="kwrd"&gt;this&lt;/span&gt;.getUTCMinutes()) + &lt;span class="str"&gt;':'&lt;/span&gt; +
f(&lt;span class="kwrd"&gt;this&lt;/span&gt;.getUTCSeconds()) + &lt;span class="str"&gt;'Z'&lt;/span&gt; : &lt;span class="kwrd"&gt;null&lt;/span&gt;;
        }; String.prototype.toJSON = Number.prototype.toJSON = Boolean.prototype.toJSON = &lt;span class="kwrd"&gt;function&lt;/span&gt;(key) { &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;this&lt;/span&gt;.valueOf(); };
    }
    &lt;span class="kwrd"&gt;var&lt;/span&gt; cx = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g, escapable = /[\\\&lt;span class="str"&gt;"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g, gap, indent, meta = { '\b': '\\b', '\t': '\\t', '\n': '\\n', '\f': '\\f', '\r': '\\r', '"&lt;/span&gt;&lt;span class="str"&gt;': '&lt;/span&gt;\\&lt;span class="str"&gt;"', '\\': '\\\\' }, rep; function quote(string) { escapable.lastIndex = 0; return escapable.test(string) ? '"&lt;/span&gt;&lt;span class="str"&gt;' + string.replace(escapable, function(a) { var c = meta[a]; return typeof c === '&lt;/span&gt;&lt;span class="kwrd"&gt;string&lt;/span&gt;&lt;span class="str"&gt;' ? c : '&lt;/span&gt;\\u&lt;span class="str"&gt;' + ('&lt;/span&gt;0000&lt;span class="str"&gt;' + a.charCodeAt(0).toString(16)).slice(-4); }) + '&lt;/span&gt;&lt;span class="str"&gt;"' : '"&lt;/span&gt;&lt;span class="str"&gt;' + string + '&lt;/span&gt;&lt;span class="str"&gt;"'; }
    function str(key, holder) {
        var i, k, v, length, mind = gap, partial, value = holder[key]; if (value &amp;amp;&amp;amp; typeof value === 'object' &amp;amp;&amp;amp; typeof value.toJSON === 'function') { value = value.toJSON(key); }
        if (typeof rep === 'function') { value = rep.call(holder, key, value); }
        switch (typeof value) {
            case 'string': return quote(value); case 'number': return isFinite(value) ? String(value) : 'null'; case 'boolean': case 'null': return String(value); case 'object': if (!value) { return 'null'; }
                gap += indent; partial = []; if (Object.prototype.toString.apply(value) === '[object Array]') {
                    length = value.length; for (i = 0; i &amp;lt; length; i += 1) { partial[i] = str(i, value) || 'null'; }
                    v = partial.length === 0 ? '[]' : gap ? '[\n' + gap +
partial.join(',\n' + gap) + '\n' +
mind + ']' : '[' + partial.join(',') + ']'; gap = mind; return v;
                }
                if (rep &amp;amp;&amp;amp; typeof rep === 'object') { length = rep.length; for (i = 0; i &amp;lt; length; i += 1) { k = rep[i]; if (typeof k === 'string') { v = str(k, value); if (v) { partial.push(quote(k) + (gap ? ': ' : ':') + v); } } } } else { for (k in value) { if (Object.hasOwnProperty.call(value, k)) { v = str(k, value); if (v) { partial.push(quote(k) + (gap ? ': ' : ':') + v); } } } }
                v = partial.length === 0 ? '{}' : gap ? '{\n' + gap + partial.join(',\n' + gap) + '\n' +
mind + '}' : '{' + partial.join(',') + '}'; gap = mind; return v;
        } 
    }
    if (typeof JSON.stringify !== 'function') {
        JSON.stringify = function(value, replacer, space) {
            var i; gap = ''; indent = ''; if (typeof space === 'number') { for (i = 0; i &amp;lt; space; i += 1) { indent += ' '; } } else if (typeof space === 'string') { indent = space; }
            rep = replacer; if (replacer &amp;amp;&amp;amp; typeof replacer !== 'function' &amp;amp;&amp;amp; (typeof replacer !== 'object' || typeof replacer.length !== 'number')) { throw new Error('JSON.stringify'); }
            return str('', { '': value });
        };
    }
    if (typeof JSON.parse !== 'function') {
        JSON.parse = function(text, reviver) {
            var j; function walk(holder, key) {
                var k, v, value = holder[key]; if (value &amp;amp;&amp;amp; typeof value === 'object') { for (k in value) { if (Object.hasOwnProperty.call(value, k)) { v = walk(value, k); if (v !== undefined) { value[k] = v; } else { delete value[k]; } } } }
                return reviver.call(holder, key, value);
            }
            cx.lastIndex = 0; if (cx.test(text)) {
                text = text.replace(cx, function(a) {
                    return '\\u' +
('0000' + a.charCodeAt(0).toString(16)).slice(-4);
                });
            }
            if (/^[\],:{}\s]*$/.test(text.replace(/\\(?:["&lt;/span&gt;\\\/bfnrt]|u[0-9a-fA-F]{4})/g, &lt;span class="str"&gt;'@'&lt;/span&gt;).replace(/&lt;span class="str"&gt;"[^"&lt;/span&gt;\\\n\r]*&lt;span class="str"&gt;"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']').replace(/(?:^|:|,)(?:\s*\[)+/g, ''))) { j = eval('(' + text + ')'); return typeof reviver === 'function' ? walk({ '': j }, '') : j; }
            throw new SyntaxError('JSON.parse');
        };
    } 
} ());
&amp;nbsp;
&amp;nbsp;
if (this.JSON &amp;amp;&amp;amp; !this.JSON.parseWithDate) {
    var reISO = /^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}(?:\.\d*)?)Z$/;
    var reMsAjax = /^\/Date\((d|-|.*)\)[\/|\\]$/;
&amp;nbsp;
    JSON.parseWithDate = function(json) {
        /// &amp;lt;summary&amp;gt;
        /// parses a JSON string and turns ISO or MSAJAX date strings
        /// into native JS date objects
        /// &amp;lt;/summary&amp;gt;    
        /// &amp;lt;param name="&lt;/span&gt;json&lt;span class="str"&gt;" type="&lt;/span&gt;&lt;span class="kwrd"&gt;var&lt;/span&gt;&lt;span class="str"&gt;"&amp;gt;json with dates to parse&amp;lt;/param&amp;gt;        
        /// &amp;lt;/param&amp;gt;
        /// &amp;lt;returns type="&lt;/span&gt;value, array or &lt;span class="kwrd"&gt;object&lt;/span&gt;&lt;span class="str"&gt;" /&amp;gt;
        try {
            var res = JSON.parse(json,
            function(key, value) {
                if (typeof value === 'string') {
                    var a = reISO.exec(value);
                    if (a)
                        return new Date(Date.UTC(+a[1], +a[2] - 1, +a[3], +a[4], +a[5], +a[6]));
                    a = reMsAjax.exec(value);
                    if (a) {
                        var b = a[1].split(/[-+,.]/);
                        return new Date(b[0] ? +b[0] : 0 - +b[1]);
                    }
                }
                return value;
            });
            return res;
        } catch (e) {
            // orignal error thrown has no error message so rethrow with message
            throw new Error("&lt;/span&gt;JSON content could not be parsed&lt;span class="str"&gt;");
            return null;
        }
    };
    JSON.stringifyWcf = function(json) {
        /// &amp;lt;summary&amp;gt;
        /// Wcf specific stringify that encodes dates in the
        /// a WCF compatible format ("&lt;/span&gt;/Date(9991231231)/&lt;span class="str"&gt;")
        /// Note: this format works ONLY with WCF. 
        ///       ASMX can use ISO dates as of .NET 3.5 SP1
        /// &amp;lt;/summary&amp;gt;
        /// &amp;lt;param name="&lt;/span&gt;key&lt;span class="str"&gt;" type="&lt;/span&gt;&lt;span class="kwrd"&gt;var&lt;/span&gt;&lt;span class="str"&gt;"&amp;gt;property name&amp;lt;/param&amp;gt;
        /// &amp;lt;param name="&lt;/span&gt;value&lt;span class="str"&gt;" type="&lt;/span&gt;&lt;span class="kwrd"&gt;var&lt;/span&gt;&lt;span class="str"&gt;"&amp;gt;value of the property&amp;lt;/param&amp;gt;         
        return JSON.stringify(json, function(key, value) {
            if (typeof value == "&lt;/span&gt;&lt;span class="kwrd"&gt;string&lt;/span&gt;&lt;span class="str"&gt;") {
                var a = reISO.exec(value);
                if (a) {
                    var val = '/Date(' + new Date(Date.UTC(+a[1], +a[2] - 1, +a[3], +a[4], +a[5], +a[6])).getTime() + ')/';
                    this[key] = val;
                    return val;
                }
            }
            return value;
        })
    };
    JSON.dateStringToDate = function(dtString) {
        /// &amp;lt;summary&amp;gt;
        /// Converts a JSON ISO or MSAJAX string into a date object
        /// &amp;lt;/summary&amp;gt;    
        /// &amp;lt;param name="&lt;/span&gt;&lt;span class="str"&gt;" type="&lt;/span&gt;&lt;span class="kwrd"&gt;var&lt;/span&gt;&lt;span class="str"&gt;"&amp;gt;Date String&amp;lt;/param&amp;gt;
        /// &amp;lt;returns type="&lt;/span&gt;&lt;span class="kwrd"&gt;date&lt;/span&gt; or &lt;span class="kwrd"&gt;null&lt;/span&gt; &lt;span class="kwrd"&gt;if&lt;/span&gt; invalid" /&amp;gt; 
        &lt;span class="kwrd"&gt;var&lt;/span&gt; a = reISO.exec(dtString);
        &lt;span class="kwrd"&gt;if&lt;/span&gt; (a)
            &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;new&lt;/span&gt; Date(Date.UTC(+a[1], +a[2] - 1, +a[3], +a[4], +a[5], +a[6]));
        a = reMsAjax.exec(dtString);
        &lt;span class="kwrd"&gt;if&lt;/span&gt; (a) {
            &lt;span class="kwrd"&gt;var&lt;/span&gt; b = a[1].split(/[-,.]/);
            &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;new&lt;/span&gt; Date(+b[0]);
        }
        &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;null&lt;/span&gt;;
    };
}
&lt;/pre&gt;&lt;/pre&gt;</description><pubDate>Mon, 12 Apr 2010 18:40:35 -0700</pubDate></item><item><guid isPermaLink="false">4bwjoo</guid><link>http://codepaste.net/4bwjoo</link><a10:author><a10:name>Rick Strahl</a10:name></a10:author><title>CreateComInstance - Late Binding COM instantiation</title><description>&lt;pre&gt;&lt;pre class="csharpcode"&gt;
&amp;nbsp;
&lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;
&lt;span class="rem"&gt;/// Creates a COM instance from a ProgID. Loads either&lt;/span&gt;
&lt;span class="rem"&gt;/// Exe or DLL servers.&lt;/span&gt;
&lt;span class="rem"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;
&lt;span class="rem"&gt;/// &amp;lt;param name="progId"&amp;gt;&amp;lt;/param&amp;gt;&lt;/span&gt;
&lt;span class="rem"&gt;/// &amp;lt;returns&amp;gt;&amp;lt;/returns&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;object&lt;/span&gt; CreateComInstance(&lt;span class="kwrd"&gt;string&lt;/span&gt; progId)
{
    Type type = Type.GetTypeFromProgID(progId);
    &lt;span class="kwrd"&gt;if&lt;/span&gt; (type == &lt;span class="kwrd"&gt;null&lt;/span&gt;)
        &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;null&lt;/span&gt;;
&amp;nbsp;
    &lt;span class="kwrd"&gt;return&lt;/span&gt; Activator.CreateInstance(type);
}
&amp;nbsp;
&lt;/pre&gt;&lt;/pre&gt;</description><pubDate>Fri, 29 Jan 2010 14:52:57 -0800</pubDate></item><item><guid isPermaLink="false">gj384m</guid><link>http://codepaste.net/gj384m</link><a10:author><a10:name>Rick Strahl</a10:name></a10:author><title>Generic String to Simple Type Conversion Routine</title><description>&lt;pre&gt;&lt;pre class="csharpcode"&gt;
&lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;
&lt;span class="rem"&gt;/// Turns a string into a typed value generically.&lt;/span&gt;
&lt;span class="rem"&gt;/// Explicitly assigns common types and falls back&lt;/span&gt;
&lt;span class="rem"&gt;/// on using type converters for unhandled types.         &lt;/span&gt;
&lt;span class="rem"&gt;/// &lt;/span&gt;
&lt;span class="rem"&gt;/// Common uses: &lt;/span&gt;
&lt;span class="rem"&gt;/// * UI -&amp;amp;gt; to data conversions&lt;/span&gt;
&lt;span class="rem"&gt;/// * Parsers&lt;/span&gt;
&lt;span class="rem"&gt;/// &amp;lt;seealso&amp;gt;Class ReflectionUtils&amp;lt;/seealso&amp;gt;&lt;/span&gt;
&lt;span class="rem"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;
&lt;span class="rem"&gt;/// &amp;lt;param name="sourceString"&amp;gt;&lt;/span&gt;
&lt;span class="rem"&gt;/// The string to convert from&lt;/span&gt;
&lt;span class="rem"&gt;/// &amp;lt;/param&amp;gt;&lt;/span&gt;
&lt;span class="rem"&gt;/// &amp;lt;param name="targetType"&amp;gt;&lt;/span&gt;
&lt;span class="rem"&gt;/// The type to convert to&lt;/span&gt;
&lt;span class="rem"&gt;/// &amp;lt;/param&amp;gt;&lt;/span&gt;
&lt;span class="rem"&gt;/// &amp;lt;param name="culture"&amp;gt;&lt;/span&gt;
&lt;span class="rem"&gt;/// Culture used for numeric and datetime values.&lt;/span&gt;
&lt;span class="rem"&gt;/// &amp;lt;/param&amp;gt;&lt;/span&gt;
&lt;span class="rem"&gt;/// &amp;lt;returns&amp;gt;object. Throws exception if it cannot be converted.&amp;lt;/returns&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;object&lt;/span&gt; StringToTypedValue(&lt;span class="kwrd"&gt;string&lt;/span&gt; sourceString, Type targetType, CultureInfo culture)
{
    &lt;span class="kwrd"&gt;object&lt;/span&gt; Result = &lt;span class="kwrd"&gt;null&lt;/span&gt;;
&amp;nbsp;
    &lt;span class="kwrd"&gt;bool&lt;/span&gt; isEmpty = &lt;span class="kwrd"&gt;false&lt;/span&gt;;
    &lt;span class="kwrd"&gt;if&lt;/span&gt; (sourceString == &lt;span class="kwrd"&gt;null&lt;/span&gt; || sourceString == &lt;span class="kwrd"&gt;string&lt;/span&gt;.Empty)
        isEmpty = &lt;span class="kwrd"&gt;true&lt;/span&gt;;
&amp;nbsp;
    &lt;span class="kwrd"&gt;if&lt;/span&gt; (targetType == &lt;span class="kwrd"&gt;typeof&lt;/span&gt;(&lt;span class="kwrd"&gt;string&lt;/span&gt;))
        Result = sourceString;
    &lt;span class="kwrd"&gt;else&lt;/span&gt; &lt;span class="kwrd"&gt;if&lt;/span&gt; (targetType == &lt;span class="kwrd"&gt;typeof&lt;/span&gt;(Int32) || targetType == &lt;span class="kwrd"&gt;typeof&lt;/span&gt;(&lt;span class="kwrd"&gt;int&lt;/span&gt;))
    {
        &lt;span class="kwrd"&gt;if&lt;/span&gt; (isEmpty)
            Result = 0;
        &lt;span class="kwrd"&gt;else&lt;/span&gt;
            Result = Int32.Parse(sourceString, NumberStyles.Any, culture.NumberFormat);
    }
    &lt;span class="kwrd"&gt;else&lt;/span&gt; &lt;span class="kwrd"&gt;if&lt;/span&gt; (targetType == &lt;span class="kwrd"&gt;typeof&lt;/span&gt;(Int64))
    {
        &lt;span class="kwrd"&gt;if&lt;/span&gt; (isEmpty)
            Result = (Int64)0;
        &lt;span class="kwrd"&gt;else&lt;/span&gt;
            Result = Int64.Parse(sourceString, NumberStyles.Any, culture.NumberFormat);
    }
    &lt;span class="kwrd"&gt;else&lt;/span&gt; &lt;span class="kwrd"&gt;if&lt;/span&gt; (targetType == &lt;span class="kwrd"&gt;typeof&lt;/span&gt;(Int16))
    {
        &lt;span class="kwrd"&gt;if&lt;/span&gt; (isEmpty)
            Result = (Int16)0;
        &lt;span class="kwrd"&gt;else&lt;/span&gt;
            Result = Int16.Parse(sourceString, NumberStyles.Any, culture.NumberFormat);
    }
    &lt;span class="kwrd"&gt;else&lt;/span&gt; &lt;span class="kwrd"&gt;if&lt;/span&gt; (targetType == &lt;span class="kwrd"&gt;typeof&lt;/span&gt;(&lt;span class="kwrd"&gt;decimal&lt;/span&gt;))
    {
        &lt;span class="kwrd"&gt;if&lt;/span&gt; (isEmpty)
            Result = 0M;
        &lt;span class="kwrd"&gt;else&lt;/span&gt;
            Result = &lt;span class="kwrd"&gt;decimal&lt;/span&gt;.Parse(sourceString, NumberStyles.Any, culture.NumberFormat);
    }
    &lt;span class="kwrd"&gt;else&lt;/span&gt; &lt;span class="kwrd"&gt;if&lt;/span&gt; (targetType == &lt;span class="kwrd"&gt;typeof&lt;/span&gt;(DateTime))
    {
        &lt;span class="kwrd"&gt;if&lt;/span&gt; (isEmpty)
            Result = DateTime.MinValue;
        &lt;span class="kwrd"&gt;else&lt;/span&gt;
            Result = Convert.ToDateTime(sourceString, culture.DateTimeFormat);
    }
    &lt;span class="kwrd"&gt;else&lt;/span&gt; &lt;span class="kwrd"&gt;if&lt;/span&gt; (targetType == &lt;span class="kwrd"&gt;typeof&lt;/span&gt;(&lt;span class="kwrd"&gt;byte&lt;/span&gt;))
    {
        &lt;span class="kwrd"&gt;if&lt;/span&gt; (isEmpty)
            Result = 0;
        &lt;span class="kwrd"&gt;else&lt;/span&gt;
            Result = Convert.ToByte(sourceString);
    }
    &lt;span class="kwrd"&gt;else&lt;/span&gt; &lt;span class="kwrd"&gt;if&lt;/span&gt; (targetType == &lt;span class="kwrd"&gt;typeof&lt;/span&gt;(&lt;span class="kwrd"&gt;double&lt;/span&gt;))
    {
        &lt;span class="kwrd"&gt;if&lt;/span&gt; (isEmpty)
            Result = 0F;
        &lt;span class="kwrd"&gt;else&lt;/span&gt;
            Result = Double.Parse(sourceString, NumberStyles.Any, culture.NumberFormat);
    }
    &lt;span class="kwrd"&gt;else&lt;/span&gt; &lt;span class="kwrd"&gt;if&lt;/span&gt; (targetType == &lt;span class="kwrd"&gt;typeof&lt;/span&gt;(Single))
    {
        &lt;span class="kwrd"&gt;if&lt;/span&gt; (isEmpty)
            Result = 0F;
        &lt;span class="kwrd"&gt;else&lt;/span&gt;
            Result = Single.Parse(sourceString, NumberStyles.Any, culture.NumberFormat);
    }
    &lt;span class="kwrd"&gt;else&lt;/span&gt; &lt;span class="kwrd"&gt;if&lt;/span&gt; (targetType == &lt;span class="kwrd"&gt;typeof&lt;/span&gt;(&lt;span class="kwrd"&gt;bool&lt;/span&gt;))
    {
        &lt;span class="kwrd"&gt;if&lt;/span&gt; (!isEmpty &amp;amp;&amp;amp; 
            sourceString.ToLower() == &lt;span class="str"&gt;"true"&lt;/span&gt; || sourceString.ToLower() == &lt;span class="str"&gt;"on"&lt;/span&gt; || sourceString == &lt;span class="str"&gt;"1"&lt;/span&gt;)
            Result = &lt;span class="kwrd"&gt;true&lt;/span&gt;;
        &lt;span class="kwrd"&gt;else&lt;/span&gt;
            Result = &lt;span class="kwrd"&gt;false&lt;/span&gt;;
    }
    &lt;span class="kwrd"&gt;else&lt;/span&gt; &lt;span class="kwrd"&gt;if&lt;/span&gt; (targetType.IsEnum)
        Result = Enum.Parse(targetType, sourceString);
    &lt;span class="kwrd"&gt;else&lt;/span&gt; &lt;span class="kwrd"&gt;if&lt;/span&gt; (targetType == &lt;span class="kwrd"&gt;typeof&lt;/span&gt;(&lt;span class="kwrd"&gt;byte&lt;/span&gt;[]))
    {
        &lt;span class="rem"&gt;// TODO: Convert HexBinary string to byte array&lt;/span&gt;
        Result = &lt;span class="kwrd"&gt;null&lt;/span&gt;;
    }
    &lt;span class="rem"&gt;// Handle nullables explicitly since type converter won't handle conversions&lt;/span&gt;
    &lt;span class="rem"&gt;// properly for things like decimal separators currency formats etc.&lt;/span&gt;
    &lt;span class="rem"&gt;// Grab underlying type and pass value to that&lt;/span&gt;
    &lt;span class="kwrd"&gt;else&lt;/span&gt; &lt;span class="kwrd"&gt;if&lt;/span&gt; (targetType.Name.StartsWith(&lt;span class="str"&gt;"Nullable`"&lt;/span&gt;))
    {
        &lt;span class="kwrd"&gt;if&lt;/span&gt; (sourceString.ToLower() == &lt;span class="str"&gt;"null"&lt;/span&gt;)
            Result = &lt;span class="kwrd"&gt;null&lt;/span&gt;;
        &lt;span class="kwrd"&gt;else&lt;/span&gt;
        {
            targetType = Nullable.GetUnderlyingType(targetType);
            Result = StringToTypedValue(sourceString, targetType);
        }
    }
    &lt;span class="kwrd"&gt;else&lt;/span&gt;
    {
        TypeConverter converter = TypeDescriptor.GetConverter(targetType);
        &lt;span class="kwrd"&gt;if&lt;/span&gt; (converter != &lt;span class="kwrd"&gt;null&lt;/span&gt; &amp;amp;&amp;amp; converter.CanConvertFrom(&lt;span class="kwrd"&gt;typeof&lt;/span&gt;(&lt;span class="kwrd"&gt;string&lt;/span&gt;)))
            Result = converter.ConvertFromString(&lt;span class="kwrd"&gt;null&lt;/span&gt;, culture, sourceString);
        &lt;span class="kwrd"&gt;else&lt;/span&gt;
        {
            Debug.Assert(&lt;span class="kwrd"&gt;false&lt;/span&gt;, &lt;span class="str"&gt;"Type Conversion not handled in StringToTypedValue for "&lt;/span&gt; +
                                            targetType.Name + &lt;span class="str"&gt;" "&lt;/span&gt; + sourceString);
            &lt;span class="kwrd"&gt;throw&lt;/span&gt; (&lt;span class="kwrd"&gt;new&lt;/span&gt; InvalidCastException(Resources.StringToTypedValueValueTypeConversionFailed + targetType.Name));
        }
    }
&amp;nbsp;
    &lt;span class="kwrd"&gt;return&lt;/span&gt; Result;
}
&amp;nbsp;
&lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;
&lt;span class="rem"&gt;/// Turns a string into a typed value generically.&lt;/span&gt;
&lt;span class="rem"&gt;/// Explicitly assigns common types and falls back&lt;/span&gt;
&lt;span class="rem"&gt;/// on using type converters for unhandled types.         &lt;/span&gt;
&lt;span class="rem"&gt;/// &lt;/span&gt;
&lt;span class="rem"&gt;/// Common uses: &lt;/span&gt;
&lt;span class="rem"&gt;/// * UI -&amp;amp;gt; to data conversions&lt;/span&gt;
&lt;span class="rem"&gt;/// * Parsers&lt;/span&gt;
&lt;span class="rem"&gt;/// &amp;lt;seealso&amp;gt;Class ReflectionUtils&amp;lt;/seealso&amp;gt;&lt;/span&gt;
&lt;span class="rem"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;
&lt;span class="rem"&gt;/// &amp;lt;param name="sourceString"&amp;gt;&lt;/span&gt;
&lt;span class="rem"&gt;/// The string to convert from&lt;/span&gt;
&lt;span class="rem"&gt;/// &amp;lt;/param&amp;gt;&lt;/span&gt;
&lt;span class="rem"&gt;/// &amp;lt;param name="targetType"&amp;gt;&lt;/span&gt;
&lt;span class="rem"&gt;/// The type to convert to&lt;/span&gt;
&lt;span class="rem"&gt;/// &amp;lt;/param&amp;gt;&lt;/span&gt;
&lt;span class="rem"&gt;/// &amp;lt;returns&amp;gt;object. Throws exception if it cannot be converted.&amp;lt;/returns&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;object&lt;/span&gt; StringToTypedValue(&lt;span class="kwrd"&gt;string&lt;/span&gt; sourceString, Type targetType)
{
    &lt;span class="kwrd"&gt;return&lt;/span&gt; StringToTypedValue(sourceString, targetType, CultureInfo.CurrentCulture);
}
&amp;nbsp;
&lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;
&lt;span class="rem"&gt;/// Generic version allow for automatic type conversion without the explicit type&lt;/span&gt;
&lt;span class="rem"&gt;/// parameter&lt;/span&gt;
&lt;span class="rem"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;
&lt;span class="rem"&gt;/// &amp;lt;typeparam name="T"&amp;gt;Type to be converted to&amp;lt;/typeparam&amp;gt;&lt;/span&gt;
&lt;span class="rem"&gt;/// &amp;lt;param name="sourceString"&amp;gt;input string value to be converted&amp;lt;/param&amp;gt;&lt;/span&gt;
&lt;span class="rem"&gt;/// &amp;lt;param name="culture"&amp;gt;Culture applied to conversion&amp;lt;/param&amp;gt;&lt;/span&gt;
&lt;span class="rem"&gt;/// &amp;lt;returns&amp;gt;&amp;lt;/returns&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; T StringToTypedValue&amp;lt;T&amp;gt;(&lt;span class="kwrd"&gt;string&lt;/span&gt; sourceString, CultureInfo culture)                            
{            
    &lt;span class="kwrd"&gt;return&lt;/span&gt; (T) StringToTypedValue(sourceString, &lt;span class="kwrd"&gt;typeof&lt;/span&gt;(T), culture);            
}
&amp;nbsp;
&lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;
&lt;span class="rem"&gt;/// Generic version allow for automatic type conversion without the explicit type&lt;/span&gt;
&lt;span class="rem"&gt;/// parameter. Defaults conversion to CurrentCulture.&lt;/span&gt;
&lt;span class="rem"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;
&lt;span class="rem"&gt;/// &amp;lt;typeparam name="T"&amp;gt;Type to be converted to&amp;lt;/typeparam&amp;gt;&lt;/span&gt;
&lt;span class="rem"&gt;/// &amp;lt;param name="sourceString"&amp;gt;input string value to be converted&amp;lt;/param&amp;gt;&lt;/span&gt;
&lt;span class="rem"&gt;/// &amp;lt;returns&amp;gt;&amp;lt;/returns&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; T StringToTypedValue&amp;lt;T&amp;gt;(&lt;span class="kwrd"&gt;string&lt;/span&gt; sourceString)
{
    &lt;span class="kwrd"&gt;return&lt;/span&gt; (T)StringToTypedValue(sourceString, &lt;span class="kwrd"&gt;typeof&lt;/span&gt;(T), CultureInfo.Current);
}
&amp;nbsp;
&lt;/pre&gt;&lt;/pre&gt;</description><pubDate>Fri, 08 Jan 2010 16:21:04 -0800</pubDate></item><item><guid isPermaLink="false">arbcji</guid><link>http://codepaste.net/arbcji</link><a10:author><a10:name>Rick Strahl</a10:name></a10:author><title>Base36Encode Base36Decode</title><description>&lt;pre&gt;&lt;pre class="csharpcode"&gt;
&lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; base36Chars = &lt;span class="str"&gt;"0123456789abcdefghijklmnopqrstuvwxyz"&lt;/span&gt;;
&lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;char&lt;/span&gt;[] base36CharArray = base36Chars.ToCharArray();            
&amp;nbsp;
&amp;nbsp;
&lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;
&lt;span class="rem"&gt;/// Encodes an integer into a string by mapping to alpha and digits (36 chars)&lt;/span&gt;
&lt;span class="rem"&gt;/// chars are embedded as lower case&lt;/span&gt;
&lt;span class="rem"&gt;/// &lt;/span&gt;
&lt;span class="rem"&gt;/// Example: 4zx12ss&lt;/span&gt;
&lt;span class="rem"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;
&lt;span class="rem"&gt;/// &amp;lt;param name="value"&amp;gt;&amp;lt;/param&amp;gt;&lt;/span&gt;
&lt;span class="rem"&gt;/// &amp;lt;returns&amp;gt;&amp;lt;/returns&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; Base36Encode(&lt;span class="kwrd"&gt;long&lt;/span&gt; &lt;span class="kwrd"&gt;value&lt;/span&gt;)
{
    &lt;span class="kwrd"&gt;string&lt;/span&gt; returnValue = &lt;span class="str"&gt;""&lt;/span&gt;;
    &lt;span class="kwrd"&gt;bool&lt;/span&gt; isNegative = &lt;span class="kwrd"&gt;value&lt;/span&gt; &amp;lt; 0;
    &lt;span class="kwrd"&gt;if&lt;/span&gt; (isNegative)
        &lt;span class="kwrd"&gt;value&lt;/span&gt; = &lt;span class="kwrd"&gt;value&lt;/span&gt; * -1;
    
    &lt;span class="kwrd"&gt;do&lt;/span&gt;
    {
        returnValue = base36CharArray[&lt;span class="kwrd"&gt;value&lt;/span&gt; % base36CharArray.Length] + returnValue;
        &lt;span class="kwrd"&gt;value&lt;/span&gt; /= 36;
    } &lt;span class="kwrd"&gt;while&lt;/span&gt; (&lt;span class="kwrd"&gt;value&lt;/span&gt; != 0);
&amp;nbsp;
    &lt;span class="kwrd"&gt;return&lt;/span&gt; isNegative ?  returnValue + &lt;span class="str"&gt;"-"&lt;/span&gt; : returnValue;
}
&amp;nbsp;
&lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;
&lt;span class="rem"&gt;/// Decodes a base36 encoded string to an integer&lt;/span&gt;
&lt;span class="rem"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;
&lt;span class="rem"&gt;/// &amp;lt;param name="input"&amp;gt;&amp;lt;/param&amp;gt;&lt;/span&gt;
&lt;span class="rem"&gt;/// &amp;lt;returns&amp;gt;&amp;lt;/returns&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;long&lt;/span&gt; Base36Decode(&lt;span class="kwrd"&gt;string&lt;/span&gt; input)
{
    &lt;span class="kwrd"&gt;bool&lt;/span&gt; isNegative = &lt;span class="kwrd"&gt;false&lt;/span&gt;;
    &lt;span class="kwrd"&gt;if&lt;/span&gt; (input.EndsWith(&lt;span class="str"&gt;"-"&lt;/span&gt;))
    {
        isNegative = &lt;span class="kwrd"&gt;true&lt;/span&gt;;
        input = input.Substring(0,input.Length-1);
    }
&amp;nbsp;
    &lt;span class="kwrd"&gt;char&lt;/span&gt;[] arrInput = input.ToCharArray();
    Array.Reverse(arrInput);
    &lt;span class="kwrd"&gt;long&lt;/span&gt; returnValue = 0;
    &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;long&lt;/span&gt; i = 0; i &amp;lt; arrInput.Length; i++)
    {
        &lt;span class="kwrd"&gt;long&lt;/span&gt; valueindex = base36Chars.IndexOf(arrInput[i]);
        returnValue += Convert.ToInt64(valueindex * Math.Pow(36, i))6
    }
    &lt;span class="kwrd"&gt;return&lt;/span&gt; isNegative ? returnValue * -1 : returnValue;
}
&lt;/pre&gt;&lt;/pre&gt;</description><pubDate>Wed, 23 Dec 2009 19:28:20 -0800</pubDate></item><item><guid isPermaLink="false">eety8b</guid><link>http://codepaste.net/eety8b</link><a10:author><a10:name>Rick Strahl</a10:name></a10:author><title>Copy to Clipboard in JavaScript</title><description>&lt;pre&gt;&lt;pre class="csharpcode"&gt;
&lt;span class="kwrd"&gt;function&lt;/span&gt; copyToClipboard(e) {
    $(&lt;span class="str"&gt;'#CodeDisplay'&lt;/span&gt;).editable();
    $(&lt;span class="str"&gt;'#_contenteditor'&lt;/span&gt;)
     .focus()
     .select()
     .keydown(&lt;span class="kwrd"&gt;function&lt;/span&gt;(e) {
        &lt;span class="rem"&gt;// capture Ctl-C, Ctl-X, ESC to remove editable&lt;/span&gt;
        &lt;span class="kwrd"&gt;if&lt;/span&gt; (e.which == 99 || e.which == 120 || e.which == 27) {                
            &lt;span class="rem"&gt;// have to delay so text doesn't go away before copy operation&lt;/span&gt;
            setTimeout( &lt;span class="kwrd"&gt;function&lt;/span&gt;() { $(&lt;span class="str"&gt;"#CodeDisplay"&lt;/span&gt;).editable(&lt;span class="str"&gt;"cleanup"&lt;/span&gt;) },500);
        }
    });
&amp;nbsp;
    &lt;span class="rem"&gt;// show overlay message&lt;/span&gt;
    $(&lt;span class="str"&gt;"#divCopyDialog"&lt;/span&gt;)
                .centerInClient({ container: $(&lt;span class="str"&gt;"#divContainerContent"&lt;/span&gt;) })
                .css(&lt;span class="str"&gt;"top"&lt;/span&gt;, 350)
                .shadow()
                .closable()
                .draggable()
                .show()
                .fadeIn(1000);
    setTimeout(&lt;span class="kwrd"&gt;function&lt;/span&gt;() { $(&lt;span class="str"&gt;"#divCopyDialog"&lt;/span&gt;).fadeOut(1000); }, 3000);
};
&lt;/pre&gt;&lt;/pre&gt;</description><pubDate>Thu, 17 Dec 2009 15:40:34 -0800</pubDate></item><item><guid isPermaLink="false">ousyw6</guid><link>http://codepaste.net/ousyw6</link><a10:author><a10:name>Rick Strahl</a10:name></a10:author><title>Retrieving the Virtual in a Web Connection Request</title><description>&lt;pre&gt;&lt;pre class="csharpcode"&gt;
&lt;span class="rem"&gt;************************************************************************&lt;/span&gt;
&lt;span class="rem"&gt;* wwProcess :: GetUrlBasePath&lt;/span&gt;
&lt;span class="rem"&gt;****************************************&lt;/span&gt;
&lt;span class="rem"&gt;***  Function: Method responsible for establishing the base path&lt;/span&gt;
&lt;span class="rem"&gt;***            for this application. &lt;/span&gt;
&lt;span class="rem"&gt;***    Assume:&lt;/span&gt;
&lt;span class="rem"&gt;***      Pass:&lt;/span&gt;
&lt;span class="rem"&gt;***    Return:&lt;/span&gt;
&lt;span class="rem"&gt;************************************************************************&lt;/span&gt;
&lt;span class="kwrd"&gt;FUNCTION&lt;/span&gt; GetUrlBasePath()
&lt;span class="kwrd"&gt;LOCAL&lt;/span&gt; lcPath
&amp;nbsp;
&lt;span class="kwrd"&gt;IF&lt;/span&gt; !&lt;span class="kwrd"&gt;EMPTY&lt;/span&gt;(&lt;span class="kwrd"&gt;THIS&lt;/span&gt;.cUrlBasePath)
   &lt;span class="kwrd"&gt;RETURN&lt;/span&gt; &lt;span class="kwrd"&gt;this&lt;/span&gt;.cUrlBasePath
&lt;span class="kwrd"&gt;ENDIF&lt;/span&gt;   
 
&lt;span class="rem"&gt;*** Try to read ADSI Virtual Path setting from IIS&lt;/span&gt;
lcPath = Request.ServerVariables(&lt;span class="str"&gt;"APPL_MD_PATH"&lt;/span&gt;)
&lt;span class="rem"&gt;* /LM/W3SVC/1/ROOT/wconnect&lt;/span&gt;
&lt;span class="kwrd"&gt;IF&lt;/span&gt; !&lt;span class="kwrd"&gt;EMPTY&lt;/span&gt;(lcPath)
    lcPath = Extract(lcPath,&lt;span class="str"&gt;"ROOT/"&lt;/span&gt;,&lt;span class="str"&gt;""&lt;/span&gt;,&lt;span class="str"&gt;""&lt;/span&gt;,.t.)
    &lt;span class="kwrd"&gt;IF&lt;/span&gt; &lt;span class="kwrd"&gt;EMPTY&lt;/span&gt;(lcPath)
       lcPath = &lt;span class="str"&gt;"/"&lt;/span&gt;
    &lt;span class="kwrd"&gt;ELSE&lt;/span&gt;
        lcPath = &lt;span class="str"&gt;"/"&lt;/span&gt; + lcPath + &lt;span class="str"&gt;"/"&lt;/span&gt;
    &lt;span class="kwrd"&gt;ENDIF&lt;/span&gt;         
    &lt;span class="kwrd"&gt;this&lt;/span&gt;.cUrlBasePath = lcPath
    &lt;span class="kwrd"&gt;RETURN&lt;/span&gt; lcPath
&lt;span class="kwrd"&gt;ENDIF&lt;/span&gt;
&amp;nbsp;
&lt;span class="kwrd"&gt;TRY&lt;/span&gt; 
   &lt;span class="kwrd"&gt;THIS&lt;/span&gt;.oConfig = &lt;span class="kwrd"&gt;EVALUATE&lt;/span&gt;(&lt;span class="str"&gt;"THIS.oServer.oConfig.o"&lt;/span&gt; + &lt;span class="kwrd"&gt;this&lt;/span&gt;.&lt;span class="kwrd"&gt;Class&lt;/span&gt;)
   &lt;span class="kwrd"&gt;THIS&lt;/span&gt;.cUrlBasePath = &lt;span class="kwrd"&gt;THIS&lt;/span&gt;.oConfig.cVirtualPath
&lt;span class="kwrd"&gt;CATCH&lt;/span&gt;
&lt;span class="kwrd"&gt;ENDTRY&lt;/span&gt;
&amp;nbsp;
&lt;span class="kwrd"&gt;RETURN&lt;/span&gt; &lt;span class="kwrd"&gt;THIS&lt;/span&gt;.cUrlbasePath
&lt;span class="kwrd"&gt;ENDFUNC&lt;/span&gt;
&lt;span class="rem"&gt;*  wwProcess :: GetUrlBasePath&lt;/span&gt;
&lt;/pre&gt;&lt;/pre&gt;</description><pubDate>Wed, 16 Dec 2009 14:43:37 -0800</pubDate></item><item><guid isPermaLink="false">wfyobb</guid><link>http://codepaste.net/wfyobb</link><a10:author><a10:name>Rick Strahl</a10:name></a10:author><title>SetUrlEncodedKeys for Query String injection</title><description>&lt;pre&gt;&lt;pre class="csharpcode"&gt;
&lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;
&lt;span class="rem"&gt;/// Allows setting of a value in a UrlEncoded string. If the key doesn't exist&lt;/span&gt;
&lt;span class="rem"&gt;/// a new one is set, if it exists it's replaced with the new value.&lt;/span&gt;
&lt;span class="rem"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;
&lt;span class="rem"&gt;/// &amp;lt;param name="urlEncoded"&amp;gt;A UrlEncoded string of key value pairs&amp;lt;/param&amp;gt;&lt;/span&gt;
&lt;span class="rem"&gt;/// &amp;lt;param name="key"&amp;gt;&amp;lt;/param&amp;gt;&lt;/span&gt;
&lt;span class="rem"&gt;/// &amp;lt;param name="value"&amp;gt;&amp;lt;/param&amp;gt;&lt;/span&gt;
&lt;span class="rem"&gt;/// &amp;lt;returns&amp;gt;&amp;lt;/returns&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; SetUrlEncodedKey(&lt;span class="kwrd"&gt;string&lt;/span&gt; urlEncoded, &lt;span class="kwrd"&gt;string&lt;/span&gt; key, &lt;span class="kwrd"&gt;string&lt;/span&gt; &lt;span class="kwrd"&gt;value&lt;/span&gt;)
{
    &lt;span class="kwrd"&gt;if&lt;/span&gt; (!urlEncoded.EndsWith(&lt;span class="str"&gt;"?"&lt;/span&gt;) &amp;amp;&amp;amp; !urlEncoded.EndsWith(&lt;span class="str"&gt;"&amp;amp;"&lt;/span&gt;))
        urlEncoded += &lt;span class="str"&gt;"&amp;amp;"&lt;/span&gt;;
&amp;nbsp;
    Match match = Regex.Match(urlEncoded, &lt;span class="str"&gt;"[?|&amp;amp;]"&lt;/span&gt; + key + &lt;span class="str"&gt;"=.*?&amp;amp;"&lt;/span&gt;);
&amp;nbsp;
    &lt;span class="kwrd"&gt;if&lt;/span&gt; (match == &lt;span class="kwrd"&gt;null&lt;/span&gt; || &lt;span class="kwrd"&gt;string&lt;/span&gt;.IsNullOrEmpty(match.Value))
        urlEncoded = urlEncoded + key + &lt;span class="str"&gt;"="&lt;/span&gt; + UrlEncode(&lt;span class="kwrd"&gt;value&lt;/span&gt;) + &lt;span class="str"&gt;"&amp;amp;"&lt;/span&gt;;
    &lt;span class="kwrd"&gt;else&lt;/span&gt;
        urlEncoded = urlEncoded.Replace(match.Value, match.Value.Substring(0, 1) + key + &lt;span class="str"&gt;"="&lt;/span&gt; + UrlEncode(&lt;span class="kwrd"&gt;value&lt;/span&gt;) + &lt;span class="str"&gt;"&amp;amp;"&lt;/span&gt;);
&amp;nbsp;
    &lt;span class="kwrd"&gt;return&lt;/span&gt; urlEncoded.TrimEnd(&lt;span class="str"&gt;'&amp;amp;'&lt;/span&gt;);
}
&amp;nbsp;
&lt;/pre&gt;&lt;/pre&gt;</description><pubDate>Mon, 30 Nov 2009 16:07:04 -0800</pubDate></item><item><guid isPermaLink="false">wmqd6g</guid><link>http://codepaste.net/wmqd6g</link><a10:author><a10:name>Rick Strahl</a10:name></a10:author><title>FoxPro Xml State Storage</title><description>&lt;pre&gt;&lt;pre class="csharpcode"&gt;
&lt;span class="preproc"&gt;#include&lt;/span&gt; wconnect.h
&amp;nbsp;
&lt;span class="kwrd"&gt;SET&lt;/span&gt; &lt;span class="kwrd"&gt;PROCEDURE&lt;/span&gt; &lt;span class="kwrd"&gt;TO&lt;/span&gt; wwXmlState.prg ADDITIVE
&amp;nbsp;
&lt;span class="preproc"&gt;#IF&lt;/span&gt; .F.   &lt;span class="rem"&gt;&amp;amp;&amp;amp; Sample code&lt;/span&gt;
&lt;span class="kwrd"&gt;CLEAR&lt;/span&gt;
oState = &lt;span class="kwrd"&gt;CREATEOBJECT&lt;/span&gt;(&lt;span class="str"&gt;"wwXMLState"&lt;/span&gt;)
&amp;nbsp;
&amp;nbsp;
oState.LoadXML(&lt;span class="kwrd"&gt;FULLPATH&lt;/span&gt;( &lt;span class="str"&gt;"test.xml"&lt;/span&gt;),.T.)
? oState.GetXML()
&amp;nbsp;
oState.SetProperty(&lt;span class="str"&gt;"Test"&lt;/span&gt;,&lt;span class="str"&gt;"New Value "&lt;/span&gt; + &lt;span class="kwrd"&gt;TIME&lt;/span&gt;())
oState.SetProperty(&lt;span class="str"&gt;"Number"&lt;/span&gt;,123.33)
oState.SetProperty(&lt;span class="str"&gt;"Bool"&lt;/span&gt;,.T.)
oState.SetProperty(&lt;span class="str"&gt;"Bool2"&lt;/span&gt;,.F.)
oState.SetProperty(&lt;span class="str"&gt;"date"&lt;/span&gt;,&lt;span class="kwrd"&gt;DATE&lt;/span&gt;())
oState.SetProperty(&lt;span class="str"&gt;"datetime"&lt;/span&gt;,&lt;span class="kwrd"&gt;DATETIME&lt;/span&gt;())
&amp;nbsp;
? oState.GetXML()
?
? &lt;span class="str"&gt;"PRINTING ALL PROPERTIES"&lt;/span&gt;
&lt;span class="kwrd"&gt;DIMENSION&lt;/span&gt; laProps&lt;span class="str"&gt;[1]&lt;/span&gt;
lnCount =  oState.aGetProperties(@laProps)
? lnCount
&lt;span class="kwrd"&gt;FOR&lt;/span&gt; x=1 &lt;span class="kwrd"&gt;to&lt;/span&gt; lnCount
   ?  laProps&lt;span class="str"&gt;[x,1]&lt;/span&gt;, laProps&lt;span class="str"&gt;[x,2]&lt;/span&gt;
&lt;span class="kwrd"&gt;ENDFOR&lt;/span&gt;
&amp;nbsp;
&lt;span class="rem"&gt;*_cliptext = oState.GetXML()&lt;/span&gt;
? 
? oState.GetProperty(&lt;span class="str"&gt;"Test"&lt;/span&gt;)
? oState.GetProperty(&lt;span class="str"&gt;"Number"&lt;/span&gt;)
? oState.GetProperty(&lt;span class="str"&gt;"Number"&lt;/span&gt;)
? oState.GetProperty(&lt;span class="str"&gt;"Bool"&lt;/span&gt;)
? oState.GetProperty(&lt;span class="str"&gt;"Bool2"&lt;/span&gt;)
? oState.GetProperty(&lt;span class="str"&gt;"date"&lt;/span&gt;)
? oState.GetProperty(&lt;span class="str"&gt;"datetime"&lt;/span&gt;)
&amp;nbsp;
oState.SaveXML(&lt;span class="kwrd"&gt;FULLPATH&lt;/span&gt;(&lt;span class="str"&gt;"Test.xml"&lt;/span&gt;))
&amp;nbsp;
&lt;span class="preproc"&gt;#ENDIF&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&lt;span class="rem"&gt;********************************************************&lt;/span&gt;
&lt;span class="kwrd"&gt;DEFINE&lt;/span&gt; &lt;span class="kwrd"&gt;CLASS&lt;/span&gt; wwXMLState AS &lt;span class="kwrd"&gt;Relation&lt;/span&gt;
&lt;span class="rem"&gt;********************************************************&lt;/span&gt;
&lt;span class="rem"&gt;*: Author: Rick Strahl&lt;/span&gt;
&lt;span class="rem"&gt;*:         (c) West Wind Technologies, 2000&lt;/span&gt;
&lt;span class="rem"&gt;*:Contact: http://www.west-wind.com&lt;/span&gt;
&lt;span class="rem"&gt;*:Created: 12/19/2000&lt;/span&gt;
&lt;span class="rem"&gt;********************************************************&lt;/span&gt;
&lt;span class="preproc"&gt;#IF&lt;/span&gt; .F.
&lt;span class="rem"&gt;*:Help Documentation&lt;/span&gt;
&lt;span class="rem"&gt;*:Topic:&lt;/span&gt;
&lt;span class="kwrd"&gt;Class&lt;/span&gt; wwXMLState
&amp;nbsp;
&lt;span class="rem"&gt;*:Description:&lt;/span&gt;
Allows storage &lt;span class="kwrd"&gt;of&lt;/span&gt; properties in a single XML string/&lt;span class="kwrd"&gt;object&lt;/span&gt;.
&lt;span class="kwrd"&gt;This&lt;/span&gt; mechanism can be &lt;span class="kwrd"&gt;used&lt;/span&gt; &lt;span class="kwrd"&gt;to&lt;/span&gt; easily &lt;span class="kwrd"&gt;store&lt;/span&gt; state in &lt;span class="kwrd"&gt;memo&lt;/span&gt;
&lt;span class="kwrd"&gt;fields&lt;/span&gt;, or &lt;span class="kwrd"&gt;files&lt;/span&gt; &lt;span class="kwrd"&gt;for&lt;/span&gt; dynamic application properties or 
uses such as configuration &lt;span class="kwrd"&gt;files&lt;/span&gt;.
&amp;nbsp;
XML is loaded &lt;span class="kwrd"&gt;with&lt;/span&gt; the LoadXML() method and the SetProperty
and GetProperty methods are &lt;span class="kwrd"&gt;used&lt;/span&gt; &lt;span class="kwrd"&gt;to&lt;/span&gt; &lt;span class="kwrd"&gt;set&lt;/span&gt; and retrieve values
&lt;span class="kwrd"&gt;from&lt;/span&gt; the current XML state.
&amp;nbsp;
&lt;span class="rem"&gt;*:Example:&lt;/span&gt;
&lt;span class="kwrd"&gt;SET&lt;/span&gt; &lt;span class="kwrd"&gt;PROCEDURE&lt;/span&gt; &lt;span class="kwrd"&gt;TO&lt;/span&gt; wwXMLState
&amp;nbsp;
USE SomeTable
&amp;nbsp;
o = &lt;span class="kwrd"&gt;CREATEOBJECT&lt;/span&gt;(&lt;span class="str"&gt;"wwXMLState"&lt;/span&gt;)
&amp;nbsp;
&lt;span class="rem"&gt;*** Set a value&lt;/span&gt;
o.cXML = SomeTable.XMLPropertiesMemo
o.SetProperty(&lt;span class="str"&gt;"testproperty"&lt;/span&gt;,&lt;span class="str"&gt;"new value"&lt;/span&gt;,&lt;span class="str"&gt;"string"&lt;/span&gt;,&lt;span class="str"&gt;"Testing"&lt;/span&gt;)
&lt;span class="kwrd"&gt;REPLACE&lt;/span&gt; SomeTable.XMLPropertiesMemo &lt;span class="kwrd"&gt;with&lt;/span&gt; o.cXML
&amp;nbsp;
&lt;span class="rem"&gt;*** Retrieve a value&lt;/span&gt;
o.cXML = SomeTable.XMLPropertiesMemo
lcValue = o.GetProperty(&lt;span class="str"&gt;"testproperty"&lt;/span&gt;)
&amp;nbsp;
&lt;span class="rem"&gt;*:ENDHELP&lt;/span&gt;
&lt;span class="preproc"&gt;#ENDIF&lt;/span&gt;
&amp;nbsp;
&lt;span class="rem"&gt;*** XML State String&lt;/span&gt;
cRootNode = &lt;span class="str"&gt;"properties"&lt;/span&gt;
&amp;nbsp;
&lt;span class="rem"&gt;*** Reference to the XMLDOM&lt;/span&gt;
&lt;span class="rem"&gt;*** Note: Recommend MSXML3 parser version&lt;/span&gt;
&lt;span class="kwrd"&gt;PROTECTED&lt;/span&gt; oDOM
oDOM = .&lt;span class="kwrd"&gt;NULL&lt;/span&gt;.
&amp;nbsp;
&lt;span class="kwrd"&gt;PROTECTED&lt;/span&gt; lLoaded
lLoaded = .F.
&amp;nbsp;
&lt;span class="rem"&gt;********************************************************&lt;/span&gt;
&lt;span class="rem"&gt;* wwXMLState :: Init&lt;/span&gt;
&lt;span class="rem"&gt;****************************************&lt;/span&gt;
&lt;span class="kwrd"&gt;FUNCTION&lt;/span&gt; Init
&lt;span class="kwrd"&gt;LPARAMETERS&lt;/span&gt; loDOM
&amp;nbsp;
&lt;span class="kwrd"&gt;IF&lt;/span&gt; &lt;span class="kwrd"&gt;VARTYPE&lt;/span&gt;(loDOM) = &lt;span class="str"&gt;"O"&lt;/span&gt;
   &lt;span class="kwrd"&gt;THIS&lt;/span&gt;.oDOM = loDOM
&lt;span class="kwrd"&gt;ELSE&lt;/span&gt;
   &lt;span class="kwrd"&gt;THIS&lt;/span&gt;.oDOM = &lt;span class="kwrd"&gt;CREATEOBJECT&lt;/span&gt;(XML_XMLDOM_PROGID)
   &lt;span class="kwrd"&gt;THIS&lt;/span&gt;.oDOM.Async = .F.
&lt;span class="kwrd"&gt;ENDIF&lt;/span&gt;
&amp;nbsp;
&lt;span class="kwrd"&gt;ENDFUNC&lt;/span&gt;
&lt;span class="rem"&gt;*  wwXMLState :: Init&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&lt;span class="rem"&gt;********************************************************&lt;/span&gt;
&lt;span class="rem"&gt;* wwXMLState :: LoadXML&lt;/span&gt;
&lt;span class="rem"&gt;****************************************&lt;/span&gt;
&lt;span class="rem"&gt;***  Function: Loads an XML string into the parser.&lt;/span&gt;
&lt;span class="rem"&gt;***    Assume:&lt;/span&gt;
&lt;span class="rem"&gt;***      Pass: lcXMl   -  XML string to load OR&lt;/span&gt;
&lt;span class="rem"&gt;***                       Filename/URL if llUrl is .T.&lt;/span&gt;
&lt;span class="rem"&gt;***            llUrl   -  .T. if from URL or File&lt;/span&gt;
&lt;span class="rem"&gt;***    Return: .T. or .F.&lt;/span&gt;
&lt;span class="rem"&gt;********************************************************&lt;/span&gt;
&lt;span class="kwrd"&gt;FUNCTION&lt;/span&gt; LoadXML
&lt;span class="kwrd"&gt;LPARAMETERS&lt;/span&gt; lcXML, llUrl
&amp;nbsp;
&lt;span class="kwrd"&gt;THIS&lt;/span&gt;.lLoaded = .T.
&amp;nbsp;
&lt;span class="rem"&gt;*** Create empty property bag&lt;/span&gt;
&lt;span class="kwrd"&gt;IF&lt;/span&gt; &lt;span class="kwrd"&gt;EMPTY&lt;/span&gt;(lcXML)
   lcXML = &lt;span class="str"&gt;"&amp;lt;"&lt;/span&gt; + &lt;span class="kwrd"&gt;THIS&lt;/span&gt;.cRootNode + &lt;span class="str"&gt;"&amp;gt;&amp;lt;/"&lt;/span&gt; + &lt;span class="kwrd"&gt;THIS&lt;/span&gt;.cRootNode + &lt;span class="str"&gt;"&amp;gt;"&lt;/span&gt;
   &lt;span class="kwrd"&gt;THIS&lt;/span&gt;.oDOM.LoadXML( lcXML )  &lt;span class="rem"&gt;&amp;amp;&amp;amp; Initialize empty&lt;/span&gt;
   &lt;span class="kwrd"&gt;THIS&lt;/span&gt;.lLoaded = .T.
   &lt;span class="kwrd"&gt;RETURN&lt;/span&gt; .T.
&lt;span class="kwrd"&gt;ENDIF&lt;/span&gt;
  
&lt;span class="kwrd"&gt;IF&lt;/span&gt; llUrl
   &lt;span class="kwrd"&gt;THIS&lt;/span&gt;.oDOM.&lt;span class="kwrd"&gt;Load&lt;/span&gt;(lcXML)
&lt;span class="kwrd"&gt;ELSE&lt;/span&gt;   
   &lt;span class="kwrd"&gt;THIS&lt;/span&gt;.oDOM.LoadXML(lcXML)
&lt;span class="kwrd"&gt;ENDIF&lt;/span&gt;
&amp;nbsp;
&lt;span class="kwrd"&gt;IF&lt;/span&gt; !&lt;span class="kwrd"&gt;EMPTY&lt;/span&gt;(&lt;span class="kwrd"&gt;THIS&lt;/span&gt;.oDOM.ParseError.Reason)
   lcXML = &lt;span class="str"&gt;"&amp;lt;"&lt;/span&gt; + &lt;span class="kwrd"&gt;THIS&lt;/span&gt;.cRootNode + &lt;span class="str"&gt;"&amp;gt;&amp;lt;/"&lt;/span&gt; + &lt;span class="kwrd"&gt;THIS&lt;/span&gt;.cRootNode + &lt;span class="str"&gt;"&amp;gt;"&lt;/span&gt;
   &lt;span class="kwrd"&gt;THIS&lt;/span&gt;.oDOM.LoadXML( lcXML )  &lt;span class="rem"&gt;&amp;amp;&amp;amp; Initialize empty&lt;/span&gt;
   &lt;span class="kwrd"&gt;THIS&lt;/span&gt;.lLoaded = .F.
   &lt;span class="kwrd"&gt;RETURN&lt;/span&gt; .F.
&lt;span class="kwrd"&gt;ENDIF&lt;/span&gt;
&amp;nbsp;
&lt;span class="kwrd"&gt;RETURN&lt;/span&gt; .T.
&lt;span class="kwrd"&gt;ENDFUNC&lt;/span&gt;
&lt;span class="rem"&gt;*  wwXMLState :: LoadXML&lt;/span&gt;
&amp;nbsp;
&lt;span class="rem"&gt;************************************************************************&lt;/span&gt;
&lt;span class="rem"&gt;* wwXMLState :: GetXML&lt;/span&gt;
&lt;span class="rem"&gt;****************************************&lt;/span&gt;
&lt;span class="rem"&gt;***  Function: Returns the entire XML as a string for storage&lt;/span&gt;
&lt;span class="rem"&gt;***    Return: Returns the entire property state as an XML string&lt;/span&gt;
&lt;span class="rem"&gt;************************************************************************&lt;/span&gt;
&lt;span class="kwrd"&gt;FUNCTION&lt;/span&gt; GetXML
&lt;span class="kwrd"&gt;RETURN&lt;/span&gt; &lt;span class="kwrd"&gt;THIS&lt;/span&gt;.oDom.XML
&lt;span class="kwrd"&gt;ENDFUNC&lt;/span&gt;
&lt;span class="rem"&gt;*  wwXMLState :: GetXML&lt;/span&gt;
&amp;nbsp;
&lt;span class="rem"&gt;************************************************************************&lt;/span&gt;
&lt;span class="rem"&gt;* wwXMLState :: SaveXML&lt;/span&gt;
&lt;span class="rem"&gt;****************************************&lt;/span&gt;
&lt;span class="rem"&gt;***  Function: Saves the current XML state to a file&lt;/span&gt;
&lt;span class="rem"&gt;***    Assume:&lt;/span&gt;
&lt;span class="rem"&gt;***      Pass: lcFileName  -   Fully qualified path&lt;/span&gt;
&lt;span class="rem"&gt;***    Return: Nothing&lt;/span&gt;
&lt;span class="rem"&gt;************************************************************************&lt;/span&gt;
&lt;span class="kwrd"&gt;FUNCTION&lt;/span&gt; SaveXML
&lt;span class="kwrd"&gt;LPARAMETERS&lt;/span&gt; lcFileName
&lt;span class="kwrd"&gt;THIS&lt;/span&gt;.oDOM.&lt;span class="kwrd"&gt;Save&lt;/span&gt;(lcFileName)
&lt;span class="kwrd"&gt;ENDFUNC&lt;/span&gt;
&lt;span class="rem"&gt;*  wwXMLState :: SaveXML&lt;/span&gt;
&amp;nbsp;
&lt;span class="rem"&gt;********************************************************&lt;/span&gt;
&lt;span class="rem"&gt;* wwXMLState :: SetProperty&lt;/span&gt;
&lt;span class="rem"&gt;****************************************&lt;/span&gt;
&lt;span class="rem"&gt;***  Function: Sets a property in the XML content&lt;/span&gt;
&lt;span class="rem"&gt;***    Assume:&lt;/span&gt;
&lt;span class="rem"&gt;***      Pass: lcProperty   -   The property to set&lt;/span&gt;
&lt;span class="rem"&gt;***            lvValue      -   The Value to set prop to&lt;/span&gt;
&lt;span class="rem"&gt;***                             pass .NULL. to delete &lt;/span&gt;
&lt;span class="rem"&gt;***            lctype       -   (optional) string, float &lt;/span&gt;
&lt;span class="rem"&gt;***                                integer, boolean&lt;/span&gt;
&lt;span class="rem"&gt;***            lcDescription-   (optional) Description &lt;/span&gt;
&lt;span class="rem"&gt;***    Return: nothing&lt;/span&gt;
&lt;span class="rem"&gt;********************************************************&lt;/span&gt;
&lt;span class="kwrd"&gt;FUNCTION&lt;/span&gt; SetProperty
&lt;span class="kwrd"&gt;LPARAMETERS&lt;/span&gt; lcProperty, lcValue, lcType, lcDescription
&lt;span class="kwrd"&gt;LOCAL&lt;/span&gt; loDOM, lcValue, lcType, loProperty
&amp;nbsp;
&lt;span class="kwrd"&gt;IF&lt;/span&gt; &lt;span class="kwrd"&gt;EMPTY&lt;/span&gt;(lcType)
   lcType = &lt;span class="kwrd"&gt;VARTYPE&lt;/span&gt;(lcValue)
   &lt;span class="kwrd"&gt;DO&lt;/span&gt; CASE
      CASE &lt;span class="kwrd"&gt;ISNULL&lt;/span&gt;(lcValue) 
      CASE lcType = &lt;span class="str"&gt;"C"&lt;/span&gt; OR lcType = &lt;span class="str"&gt;"V"&lt;/span&gt;
         lcType = &lt;span class="str"&gt;"string"&lt;/span&gt;
      CASE lcType = &lt;span class="str"&gt;"N"&lt;/span&gt;
         lcType = &lt;span class="str"&gt;"float"&lt;/span&gt;
      CASE lcType = &lt;span class="str"&gt;"L"&lt;/span&gt;
         lcType = &lt;span class="str"&gt;"boolean"&lt;/span&gt;
         &lt;span class="kwrd"&gt;IF&lt;/span&gt; lcValue
            lcValue = &lt;span class="str"&gt;"1"&lt;/span&gt;
         &lt;span class="kwrd"&gt;ELSE&lt;/span&gt;
            lcValue = &lt;span class="str"&gt;"0"&lt;/span&gt;
         &lt;span class="kwrd"&gt;ENDIF&lt;/span&gt;
      CASE lcType = &lt;span class="str"&gt;"T"&lt;/span&gt; or lcType = &lt;span class="str"&gt;"D"&lt;/span&gt;
         lcType = &lt;span class="str"&gt;"datetime"&lt;/span&gt;
      CASE lcType = &lt;span class="str"&gt;"O"&lt;/span&gt;
         &lt;span class="kwrd"&gt;RETURN&lt;/span&gt;   .F. &lt;span class="rem"&gt;&amp;amp;&amp;amp; Ignore objects&lt;/span&gt;
      CASE lcType = &lt;span class="str"&gt;"G"&lt;/span&gt;
         &lt;span class="kwrd"&gt;RETURN&lt;/span&gt; .F.
      &lt;span class="kwrd"&gt;OTHERWISE&lt;/span&gt;
         lcType = &lt;span class="str"&gt;"string"&lt;/span&gt; 
   &lt;span class="kwrd"&gt;ENDCASE&lt;/span&gt;
&lt;span class="kwrd"&gt;ENDIF&lt;/span&gt;
&amp;nbsp;
&lt;span class="kwrd"&gt;IF&lt;/span&gt; !&lt;span class="kwrd"&gt;THIS&lt;/span&gt;.lLoaded
   &lt;span class="kwrd"&gt;THIS&lt;/span&gt;.LoadXML()
&lt;span class="kwrd"&gt;ENDIF&lt;/span&gt;
&amp;nbsp;
loDOM = &lt;span class="kwrd"&gt;THIS&lt;/span&gt;.oDOM
&amp;nbsp;
&lt;span class="rem"&gt;*** Remove Item if NULL was passed for value&lt;/span&gt;
&lt;span class="kwrd"&gt;IF&lt;/span&gt; &lt;span class="kwrd"&gt;ISNULL&lt;/span&gt;(lcValue)
   loProperties = loDOM.SelectSingleNode(&lt;span class="str"&gt;"/"&lt;/span&gt; + ;
                                 &lt;span class="kwrd"&gt;THIS&lt;/span&gt;.cRootNode)
   loProperty = loDOM.SelectSingleNode(&lt;span class="str"&gt;"/"&lt;/span&gt; + ;
               &lt;span class="kwrd"&gt;THIS&lt;/span&gt;.cRootNode + &lt;span class="str"&gt;"/"&lt;/span&gt; + lcProperty)
                         
   &lt;span class="kwrd"&gt;IF&lt;/span&gt; !&lt;span class="kwrd"&gt;ISNULL&lt;/span&gt;(loProperty)
      loProperties.removeChild(loProperty)
   &lt;span class="kwrd"&gt;ENDIF&lt;/span&gt;
   &lt;span class="kwrd"&gt;RETURN&lt;/span&gt;
&lt;span class="kwrd"&gt;ENDIF&lt;/span&gt;
&amp;nbsp;
loProperty = loDOM.SelectSingleNode(&lt;span class="str"&gt;"/"&lt;/span&gt; + ;
                  &lt;span class="kwrd"&gt;THIS&lt;/span&gt;.cRootNode+ &lt;span class="str"&gt;"/"&lt;/span&gt; + lcProperty)
&lt;span class="kwrd"&gt;IF&lt;/span&gt; &lt;span class="kwrd"&gt;ISNULL&lt;/span&gt;(loProperty)
   &lt;span class="rem"&gt;*** Add the property&lt;/span&gt;
   loProperties = loDOM.SelectSingleNode(&lt;span class="str"&gt;"/"&lt;/span&gt; + ;
                                     &lt;span class="kwrd"&gt;THIS&lt;/span&gt;.cRootNode)
   &lt;span class="kwrd"&gt;IF&lt;/span&gt; &lt;span class="kwrd"&gt;ISNULL&lt;/span&gt;(loProperties)
      &lt;span class="kwrd"&gt;THIS&lt;/span&gt;.oDOM.LoadXML(&lt;span class="str"&gt;"&amp;lt;"&lt;/span&gt; + &lt;span class="kwrd"&gt;THIS&lt;/span&gt;.cRootNode+ &lt;span class="str"&gt;"&amp;gt;&amp;lt;/"&lt;/span&gt; + ;
                        &lt;span class="kwrd"&gt;THIS&lt;/span&gt;.cRootNode+ &lt;span class="str"&gt;"&amp;gt;"&lt;/span&gt;)
   &lt;span class="kwrd"&gt;ENDIF&lt;/span&gt;
&amp;nbsp;
   loProperty = loDOM.createElement(lcProperty)
&amp;nbsp;
   loProperties.appendChild(loProperty)
&lt;span class="kwrd"&gt;ENDIF&lt;/span&gt;
&amp;nbsp;
loProperty.&lt;span class="kwrd"&gt;TEXT&lt;/span&gt; = lcValue  &lt;span class="rem"&gt;&amp;amp;&amp;amp; Automatic Type Conversion&lt;/span&gt;
&amp;nbsp;
loType = loDOM.createAttribute(&lt;span class="str"&gt;"type"&lt;/span&gt;)
loType.VALUE = lcType
loProperty.ATTRIBUTES.setNamedItem(loType)
&amp;nbsp;
&lt;span class="kwrd"&gt;IF&lt;/span&gt; !&lt;span class="kwrd"&gt;EMPTY&lt;/span&gt;(lcDescription)
   loType = loDOM.createAttribute(&lt;span class="str"&gt;"description"&lt;/span&gt;)
   loType.VALUE = lcDescription
   loProperty.ATTRIBUTES.setNamedItem(loType)
&lt;span class="kwrd"&gt;ENDIF&lt;/span&gt;
&amp;nbsp;
&lt;span class="kwrd"&gt;RETURN&lt;/span&gt; .t.
&lt;span class="kwrd"&gt;ENDFUNC&lt;/span&gt;
&lt;span class="rem"&gt;*  wwXMLState :: SetProperty&lt;/span&gt;
&amp;nbsp;
&lt;span class="rem"&gt;********************************************************&lt;/span&gt;
&lt;span class="rem"&gt;* wwXMLState :: GetProperty&lt;/span&gt;
&lt;span class="rem"&gt;****************************************&lt;/span&gt;
&lt;span class="rem"&gt;***  Function: Retrieves a property contained in XML &lt;/span&gt;
&lt;span class="rem"&gt;***    Assume: &lt;/span&gt;
&lt;span class="rem"&gt;***      Pass: lcProperty - Property to retrieve&lt;/span&gt;
&lt;span class="rem"&gt;***    Return: Returns typed value of the property&lt;/span&gt;
&lt;span class="rem"&gt;********************************************************&lt;/span&gt;
&lt;span class="kwrd"&gt;FUNCTION&lt;/span&gt; GetProperty
&lt;span class="kwrd"&gt;LPARAMETER&lt;/span&gt; lcProperty
&lt;span class="kwrd"&gt;LOCAL&lt;/span&gt; loDOM, lcValue, lcType, loProperty, loValue
&amp;nbsp;
&amp;nbsp;
&lt;span class="kwrd"&gt;IF&lt;/span&gt; !&lt;span class="kwrd"&gt;THIS&lt;/span&gt;.lLoaded
   &lt;span class="kwrd"&gt;IF&lt;/span&gt; !&lt;span class="kwrd"&gt;THIS&lt;/span&gt;.LoadXML()
      &lt;span class="kwrd"&gt;RETURN&lt;/span&gt; 
   &lt;span class="kwrd"&gt;ENDIF&lt;/span&gt;
&lt;span class="kwrd"&gt;ENDIF&lt;/span&gt;
&amp;nbsp;
loDOM = &lt;span class="kwrd"&gt;THIS&lt;/span&gt;.oDOM
&amp;nbsp;
loValue = loDOM.SelectSingleNode(&lt;span class="str"&gt;"/"&lt;/span&gt; + &lt;span class="kwrd"&gt;THIS&lt;/span&gt;.cRootNode+ ;
                                 &lt;span class="str"&gt;"/"&lt;/span&gt; + lcProperty)
&lt;span class="kwrd"&gt;IF&lt;/span&gt; &lt;span class="kwrd"&gt;ISNULL&lt;/span&gt;(loValue)
   &lt;span class="kwrd"&gt;RETURN&lt;/span&gt; .&lt;span class="kwrd"&gt;NULL&lt;/span&gt;.
&lt;span class="kwrd"&gt;ENDIF&lt;/span&gt;
&amp;nbsp;
lcValue = loValue.&lt;span class="kwrd"&gt;Text&lt;/span&gt;
lcType = &lt;span class="kwrd"&gt;LOWER&lt;/span&gt;(;
          loValue.Attributes.GetNamedItem(&lt;span class="str"&gt;"type"&lt;/span&gt;).&lt;span class="kwrd"&gt;Text&lt;/span&gt;)
&amp;nbsp;
&lt;span class="kwrd"&gt;DO&lt;/span&gt; CASE 
CASE &lt;span class="kwrd"&gt;INLIST&lt;/span&gt;(lcType,&lt;span class="str"&gt;"string"&lt;/span&gt;,&lt;span class="str"&gt;"xml"&lt;/span&gt;,&lt;span class="str"&gt;"url"&lt;/span&gt;,&lt;span class="str"&gt;"file"&lt;/span&gt;)
   &lt;span class="kwrd"&gt;RETURN&lt;/span&gt; lcValue
CASE lcType = &lt;span class="str"&gt;"integer"&lt;/span&gt; or lcType=&lt;span class="str"&gt;"float"&lt;/span&gt;
   &lt;span class="kwrd"&gt;RETURN&lt;/span&gt; &lt;span class="kwrd"&gt;VAL&lt;/span&gt;(lcValue)
CASE lcType = &lt;span class="str"&gt;"boolean"&lt;/span&gt;
   &lt;span class="kwrd"&gt;RETURN&lt;/span&gt; &lt;span class="kwrd"&gt;IIF&lt;/span&gt;(lcValue = &lt;span class="str"&gt;"1"&lt;/span&gt;,.T.,.F.)
CASE lcType = &lt;span class="str"&gt;"datetime"&lt;/span&gt;
   &lt;span class="kwrd"&gt;RETURN&lt;/span&gt; &lt;span class="kwrd"&gt;CTOT&lt;/span&gt;(lcValue)
&lt;span class="kwrd"&gt;ENDCASE&lt;/span&gt;
&amp;nbsp;
&lt;span class="kwrd"&gt;RETURN&lt;/span&gt; .&lt;span class="kwrd"&gt;NULL&lt;/span&gt;.
&lt;span class="kwrd"&gt;ENDFUNC&lt;/span&gt;
&lt;span class="rem"&gt;*  wwXMLState :: GetProperty&lt;/span&gt;
&amp;nbsp;
&lt;span class="rem"&gt;************************************************************************&lt;/span&gt;
&lt;span class="rem"&gt;* wwXMLState :: AGetProperties&lt;/span&gt;
&lt;span class="rem"&gt;****************************************&lt;/span&gt;
&lt;span class="rem"&gt;***  Function: Returns all properties and values in a 4D array&lt;/span&gt;
&lt;span class="rem"&gt;***    Assume:&lt;/span&gt;
&lt;span class="rem"&gt;***      Pass: @laProperties  -  Array (by reference) to receive &lt;/span&gt;
&lt;span class="rem"&gt;***                              settings.&lt;/span&gt;
&lt;span class="rem"&gt;***    Return: Count of properties&lt;/span&gt;
&lt;span class="rem"&gt;***            2D Array:  1 - Key   2 - Typed value  3 - Type 4 - Description&lt;/span&gt;
&lt;span class="rem"&gt;************************************************************************&lt;/span&gt;
&lt;span class="kwrd"&gt;FUNCTION&lt;/span&gt; AGetProperties
&lt;span class="kwrd"&gt;LPARAMETERS&lt;/span&gt; laProperties
&lt;span class="kwrd"&gt;LOCAL&lt;/span&gt; lnX, loDOM, loValue
&lt;span class="kwrd"&gt;IF&lt;/span&gt; !&lt;span class="kwrd"&gt;THIS&lt;/span&gt;.lLoaded
   &lt;span class="kwrd"&gt;IF&lt;/span&gt; !&lt;span class="kwrd"&gt;THIS&lt;/span&gt;.LoadXML()
      &lt;span class="kwrd"&gt;RETURN&lt;/span&gt; 0
   &lt;span class="kwrd"&gt;ENDIF&lt;/span&gt;
&lt;span class="kwrd"&gt;ENDIF&lt;/span&gt;
   
loDOM = &lt;span class="kwrd"&gt;THIS&lt;/span&gt;.oDOM
&amp;nbsp;
loProperties = loDOM.DocumentElement.ChildNodes   
&amp;nbsp;
&lt;span class="kwrd"&gt;FOR&lt;/span&gt; lnX=0 &lt;span class="kwrd"&gt;to&lt;/span&gt; loProperties.length - 1
   &lt;span class="kwrd"&gt;DIMENSION&lt;/span&gt; laProperties&lt;span class="str"&gt;[lnX+1,4]&lt;/span&gt;
   loValue = loProperties.item(lnX)
   laProperties&lt;span class="str"&gt;[lnX+1,1]&lt;/span&gt; = loValue.nodeName
   laProperties&lt;span class="str"&gt;[lnX+1,2]&lt;/span&gt; = &lt;span class="kwrd"&gt;THIS&lt;/span&gt;.GetProperty(laProperties&lt;span class="str"&gt;[lnX+1,1]&lt;/span&gt;) 
   laProperties&lt;span class="str"&gt;[lnX+1,3]&lt;/span&gt; = loValue.Attributes.GetNamedItem(&lt;span class="str"&gt;"type"&lt;/span&gt;).&lt;span class="kwrd"&gt;Text&lt;/span&gt;
   
   loDescript = loValue.Attributes.GetNamedItem(&lt;span class="str"&gt;"description"&lt;/span&gt;)
   &lt;span class="kwrd"&gt;IF&lt;/span&gt; !&lt;span class="kwrd"&gt;ISNULL&lt;/span&gt;(loDescript)
      laProperties&lt;span class="str"&gt;[lnX+1,4]&lt;/span&gt; = loDescript.&lt;span class="kwrd"&gt;Text&lt;/span&gt;
   &lt;span class="kwrd"&gt;ELSE&lt;/span&gt;
      laProperties&lt;span class="str"&gt;[lnX+1,4]&lt;/span&gt; = &lt;span class="str"&gt;""&lt;/span&gt;
   &lt;span class="kwrd"&gt;ENDIF&lt;/span&gt;
&lt;span class="kwrd"&gt;ENDFOR&lt;/span&gt;
&amp;nbsp;
&lt;span class="kwrd"&gt;RETURN&lt;/span&gt; lnX
&lt;span class="kwrd"&gt;ENDFUNC&lt;/span&gt;
&lt;span class="rem"&gt;*  wwXMLState :: AGetProperties&lt;/span&gt;
&amp;nbsp;
&lt;span class="kwrd"&gt;ENDDEFINE&lt;/span&gt;
*EOC wwXMLState 
&lt;/pre&gt;&lt;/pre&gt;</description><pubDate>Sat, 28 Nov 2009 01:46:27 -0800</pubDate></item><item><guid isPermaLink="false">7hbohm</guid><link>http://codepaste.net/7hbohm</link><a10:author><a10:name>Rick Strahl</a10:name></a10:author><title>Transformable ASP.NET Response Filter implementation</title><description>&lt;pre&gt;&lt;pre class="csharpcode"&gt;
&lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;
&lt;span class="rem"&gt;/// A semi-generic Response Filter that allows transformations&lt;/span&gt;
&lt;span class="rem"&gt;/// to be easily hooked up easily via a TransformStream event    &lt;/span&gt;
&lt;span class="rem"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; TransformResponseFilter : Stream
{
    &lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;
    &lt;span class="rem"&gt;/// The original stream&lt;/span&gt;
    &lt;span class="rem"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;
    Stream _stream;
&amp;nbsp;
    &lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;
    &lt;span class="rem"&gt;/// Current position in the original stream&lt;/span&gt;
    &lt;span class="rem"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;long&lt;/span&gt; _position;
&amp;nbsp;
    &lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;
    &lt;span class="rem"&gt;/// Stream that original content is read into&lt;/span&gt;
    &lt;span class="rem"&gt;/// and then passed to TransformStream function&lt;/span&gt;
    &lt;span class="rem"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;
    MemoryStream _cacheStream = &lt;span class="kwrd"&gt;new&lt;/span&gt; MemoryStream(5000);
&amp;nbsp;
    &lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;
    &lt;span class="rem"&gt;/// Internal pointer that that keeps track of the size&lt;/span&gt;
    &lt;span class="rem"&gt;/// of the cacheStream&lt;/span&gt;
    &lt;span class="rem"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;int&lt;/span&gt; _cachePointer = 0;        
&amp;nbsp;
&amp;nbsp;
&amp;nbsp;
    &lt;span class="kwrd"&gt;public&lt;/span&gt; TransformResponseFilter(Stream responseStream)
    {
        _stream = responseStream;
    }
&amp;nbsp;
    &lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;
    &lt;span class="rem"&gt;/// Event that can be hooked up to handle Responsestream&lt;/span&gt;
    &lt;span class="rem"&gt;/// Transformation. Passed a MemoryStream that you can &lt;/span&gt;
    &lt;span class="rem"&gt;/// modify and return back the transformed MemoryStream&lt;/span&gt;
    &lt;span class="rem"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;event&lt;/span&gt; Func&amp;lt;MemoryStream, MemoryStream&amp;gt; TransformStream;
&amp;nbsp;
    &lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;
    &lt;span class="rem"&gt;/// &lt;/span&gt;
    &lt;span class="rem"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;event&lt;/span&gt; Func&amp;lt;&lt;span class="kwrd"&gt;string&lt;/span&gt;, &lt;span class="kwrd"&gt;string&lt;/span&gt;&amp;gt; TransformString;
&amp;nbsp;
    &lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;
    &lt;span class="rem"&gt;/// Overridable method that can handle transforming the &lt;/span&gt;
    &lt;span class="rem"&gt;/// stream by accepting an input stream and returning a&lt;/span&gt;
    &lt;span class="rem"&gt;/// transformed stream&lt;/span&gt;
    &lt;span class="rem"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;
    &lt;span class="rem"&gt;/// &amp;lt;param name="ms"&amp;gt;&amp;lt;/param&amp;gt;&lt;/span&gt;
    &lt;span class="rem"&gt;/// &amp;lt;returns&amp;gt;&amp;lt;/returns&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;protected&lt;/span&gt; &lt;span class="kwrd"&gt;virtual&lt;/span&gt; MemoryStream OnTransformStream(MemoryStream ms)
    {
        &lt;span class="kwrd"&gt;if&lt;/span&gt; (TransformStream != &lt;span class="kwrd"&gt;null&lt;/span&gt;)
            &lt;span class="kwrd"&gt;return&lt;/span&gt; TransformStream(ms);
&amp;nbsp;
        &lt;span class="kwrd"&gt;return&lt;/span&gt; ms;
    }
&amp;nbsp;
    &lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;
    &lt;span class="rem"&gt;/// Allows transforming of strings&lt;/span&gt;
    &lt;span class="rem"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;
    &lt;span class="rem"&gt;/// &amp;lt;param name="responseText"&amp;gt;&amp;lt;/param&amp;gt;&lt;/span&gt;
    &lt;span class="rem"&gt;/// &amp;lt;returns&amp;gt;&amp;lt;/returns&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;internal&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; OnTransformString(&lt;span class="kwrd"&gt;string&lt;/span&gt; responseText)
    {
        &lt;span class="kwrd"&gt;if&lt;/span&gt; (TransformString != &lt;span class="kwrd"&gt;null&lt;/span&gt;)          
            TransformString(responseText);            
&amp;nbsp;
        &lt;span class="kwrd"&gt;return&lt;/span&gt; responseText;
    }
&amp;nbsp;
    &lt;span class="kwrd"&gt;internal&lt;/span&gt; MemoryStream OnTransformStringInternal(MemoryStream ms)
    {
        &lt;span class="kwrd"&gt;if&lt;/span&gt; (TransformString == &lt;span class="kwrd"&gt;null&lt;/span&gt;)
            &lt;span class="kwrd"&gt;return&lt;/span&gt; ms;
&amp;nbsp;
        &lt;span class="rem"&gt;//string content = ms.GetAsString();&lt;/span&gt;
        &lt;span class="kwrd"&gt;string&lt;/span&gt; content = Encoding.Default.GetString(ms.ToArray());
           
        content = TransformString(content);         
        &lt;span class="kwrd"&gt;byte&lt;/span&gt;[] buffer  = Encoding.Default.GetBytes(content);
        ms = &lt;span class="kwrd"&gt;new&lt;/span&gt; MemoryStream();
        ms.Write(buffer,0,buffer.Length);
        &lt;span class="rem"&gt;//ms.WriteString(content);&lt;/span&gt;
&amp;nbsp;
        &lt;span class="kwrd"&gt;return&lt;/span&gt; ms;
    }
&amp;nbsp;
&amp;nbsp;
    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;override&lt;/span&gt; &lt;span class="kwrd"&gt;bool&lt;/span&gt; CanRead
    {
        get { &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;true&lt;/span&gt;; }
    }
&amp;nbsp;
    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;override&lt;/span&gt; &lt;span class="kwrd"&gt;bool&lt;/span&gt; CanSeek
    {
        get { &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;true&lt;/span&gt;; }
    }
&amp;nbsp;
    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;override&lt;/span&gt; &lt;span class="kwrd"&gt;bool&lt;/span&gt; CanWrite
    {
        get { &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;true&lt;/span&gt;; }
    }
&amp;nbsp;
    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;override&lt;/span&gt; &lt;span class="kwrd"&gt;long&lt;/span&gt; Length
    {
        get { &lt;span class="kwrd"&gt;return&lt;/span&gt; 0; }
    }
&amp;nbsp;
    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;override&lt;/span&gt; &lt;span class="kwrd"&gt;long&lt;/span&gt; Position
    {
        get { &lt;span class="kwrd"&gt;return&lt;/span&gt; _position; }
        set { _position = &lt;span class="kwrd"&gt;value&lt;/span&gt;; }
    }
&amp;nbsp;
    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;override&lt;/span&gt; &lt;span class="kwrd"&gt;long&lt;/span&gt; Seek(&lt;span class="kwrd"&gt;long&lt;/span&gt; offset, System.IO.SeekOrigin direction)
    {
        &lt;span class="kwrd"&gt;return&lt;/span&gt; _stream.Seek(offset, direction);
    }
&amp;nbsp;
    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;override&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; SetLength(&lt;span class="kwrd"&gt;long&lt;/span&gt; length)
    {
        _stream.SetLength(length);
    }
&amp;nbsp;
    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;override&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Close()
    {
        _stream.Close();
    }
&amp;nbsp;
    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;override&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Flush()
    {            
        &lt;span class="rem"&gt;// Check for transform implementations&lt;/span&gt;
        _cacheStream = OnTransformStream(_cacheStream);
        _cacheStream = OnTransformStringInternal(_cacheStream);
        
        &lt;span class="rem"&gt;// write the stream back out&lt;/span&gt;
        _stream.Write(_cacheStream.ToArray(), 0, (&lt;span class="kwrd"&gt;int&lt;/span&gt;)_cacheStream.Length);
&amp;nbsp;
        &lt;span class="rem"&gt;// default flush behavior&lt;/span&gt;
        _stream.Flush();
    }
&amp;nbsp;
    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;override&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt; Read(&lt;span class="kwrd"&gt;byte&lt;/span&gt;[] buffer, &lt;span class="kwrd"&gt;int&lt;/span&gt; offset, &lt;span class="kwrd"&gt;int&lt;/span&gt; count)
    {
        &lt;span class="kwrd"&gt;return&lt;/span&gt; _stream.Read(buffer, offset, count);
    }
&amp;nbsp;
&amp;nbsp;
    &lt;span class="rem"&gt;// The Write method actually does the filtering.&lt;/span&gt;
    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;override&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Write(&lt;span class="kwrd"&gt;byte&lt;/span&gt;[] buffer, &lt;span class="kwrd"&gt;int&lt;/span&gt; offset, &lt;span class="kwrd"&gt;int&lt;/span&gt; count)
    {
        &lt;span class="rem"&gt;// copy to holding buffer only - we'll write out later&lt;/span&gt;
        _cacheStream.Write(buffer, 0, count);
        _cachePointer += count;
    }
&amp;nbsp;
}
&amp;nbsp;
&amp;nbsp;
&lt;span class="rem"&gt;// *** TO USE IN A PAGE&lt;/span&gt;
&amp;nbsp;
        &lt;span class="kwrd"&gt;protected&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Page_Load(&lt;span class="kwrd"&gt;object&lt;/span&gt; sender, System.EventArgs e)
        {
            &lt;span class="rem"&gt;// Put user code to initialize the page here&lt;/span&gt;
            &lt;span class="kwrd"&gt;if&lt;/span&gt; (&lt;span class="kwrd"&gt;this&lt;/span&gt;.chkEnableFilter.Checked)
            {
                TransformResponseFilter filter = &lt;span class="kwrd"&gt;new&lt;/span&gt; TransformResponseFilter(Response.Filter);
                filter.TransformStream += &lt;span class="kwrd"&gt;new&lt;/span&gt; Func&amp;lt;MemoryStream, MemoryStream&amp;gt;(filter_TransformStream);
                Response.Filter = filter;
            }
            &lt;span class="kwrd"&gt;else&lt;/span&gt;
            {
                &lt;span class="rem"&gt;// We have to redirect to get back to non-encoded page&lt;/span&gt;
                &lt;span class="kwrd"&gt;if&lt;/span&gt; (IsPostBack)
                    Response.Redirect(&lt;span class="str"&gt;"ResponseFilter.aspx"&lt;/span&gt;);
            }
        }
&amp;nbsp;
        &lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;
        &lt;span class="rem"&gt;/// Do the transformation here&lt;/span&gt;
        &lt;span class="rem"&gt;/// &lt;/span&gt;
        &lt;span class="rem"&gt;/// This transform replaces ~/ in string expressions&lt;/span&gt;
        &lt;span class="rem"&gt;/// with the Application's base path&lt;/span&gt;
        &lt;span class="rem"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;
        &lt;span class="rem"&gt;/// &amp;lt;param name="ms"&amp;gt;&amp;lt;/param&amp;gt;&lt;/span&gt;
        &lt;span class="rem"&gt;/// &amp;lt;returns&amp;gt;&amp;lt;/returns&amp;gt;&lt;/span&gt;
        MemoryStream filter_TransformStream(MemoryStream ms)
        {
            &lt;span class="kwrd"&gt;string&lt;/span&gt; output = ms.GetAsString();
&amp;nbsp;
            &lt;span class="kwrd"&gt;string&lt;/span&gt; path = HttpContext.Current.Request.ApplicationPath;
            output = output.Replace(&lt;span class="str"&gt;"\"~/"&lt;/span&gt;, &lt;span class="str"&gt;"\""&lt;/span&gt; + path + &lt;span class="str"&gt;"/"&lt;/span&gt;).Replace(&lt;span class="str"&gt;"'~/"&lt;/span&gt;, &lt;span class="str"&gt;"'"&lt;/span&gt; + path + &lt;span class="str"&gt;"/"&lt;/span&gt;);
&amp;nbsp;
            ms = &lt;span class="kwrd"&gt;new&lt;/span&gt; MemoryStream(output.Length);
            ms.WriteString(output);
&amp;nbsp;
            &lt;span class="kwrd"&gt;return&lt;/span&gt; ms;
        }
&lt;/pre&gt;&lt;/pre&gt;</description><pubDate>Thu, 12 Nov 2009 12:14:24 -0800</pubDate></item><item><guid isPermaLink="false">6iejv8</guid><link>http://codepaste.net/6iejv8</link><a10:author><a10:name>Rick Strahl</a10:name></a10:author><title>Capture and Transform Response Output using a Filter</title><description>&lt;pre&gt;&lt;pre class="csharpcode"&gt;
&lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;
&lt;span class="rem"&gt;/// Summary description for ResponseFilter.&lt;/span&gt;
&lt;span class="rem"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;partial&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; ResponseFilter : System.Web.UI.Page
{
   &lt;span class="kwrd"&gt;protected&lt;/span&gt; System.Web.UI.HtmlControls.HtmlForm Form1;
   &lt;span class="kwrd"&gt;protected&lt;/span&gt; System.Web.UI.WebControls.TextBox TextBox1;
&amp;nbsp;
   &lt;span class="kwrd"&gt;protected&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Page_Load(&lt;span class="kwrd"&gt;object&lt;/span&gt; sender, System.EventArgs e)
   {
      &lt;span class="rem"&gt;// Put user code to initialize the page here&lt;/span&gt;
         &lt;span class="kwrd"&gt;if&lt;/span&gt; (&lt;span class="kwrd"&gt;this&lt;/span&gt;.chkEnableFilter.Checked)
             Response.Filter = &lt;span class="kwrd"&gt;new&lt;/span&gt; UpperCaseFilter(Response.Filter);
         &lt;span class="kwrd"&gt;else&lt;/span&gt;
         {
             &lt;span class="rem"&gt;// We have to redirect to get back to non-encoded page&lt;/span&gt;
             &lt;span class="kwrd"&gt;if&lt;/span&gt; (IsPostBack)
                 Response.Redirect(&lt;span class="str"&gt;"ResponseFilter.aspx"&lt;/span&gt;);
         }
   }
&amp;nbsp;
&amp;nbsp;
}
&amp;nbsp;
&amp;nbsp;
 &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; UpperCaseFilter : Stream
 &lt;span class="rem"&gt;// This filter changes all characters passed through it to uppercase.&lt;/span&gt;
 {
     &lt;span class="kwrd"&gt;private&lt;/span&gt; Stream _stream;
     &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;long&lt;/span&gt; _position;
&amp;nbsp;
     &lt;span class="kwrd"&gt;public&lt;/span&gt; UpperCaseFilter(Stream sink)
     {
         _stream = sink;
     }
&amp;nbsp;
     &lt;span class="rem"&gt;// The following members of Stream must be overriden.&lt;/span&gt;
     &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;override&lt;/span&gt; &lt;span class="kwrd"&gt;bool&lt;/span&gt; CanRead
     {
         get { &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;true&lt;/span&gt;; }
     }
&amp;nbsp;
     &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;override&lt;/span&gt; &lt;span class="kwrd"&gt;bool&lt;/span&gt; CanSeek
     {
         get { &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;true&lt;/span&gt;; }
     }
&amp;nbsp;
     &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;override&lt;/span&gt; &lt;span class="kwrd"&gt;bool&lt;/span&gt; CanWrite
     {
         get { &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;true&lt;/span&gt;; }
     }
&amp;nbsp;
     &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;override&lt;/span&gt; &lt;span class="kwrd"&gt;long&lt;/span&gt; Length
     {
         get { &lt;span class="kwrd"&gt;return&lt;/span&gt; 0; }
     }
&amp;nbsp;
     &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;override&lt;/span&gt; &lt;span class="kwrd"&gt;long&lt;/span&gt; Position
     {
         get { &lt;span class="kwrd"&gt;return&lt;/span&gt; _position; }
         set { _position = &lt;span class="kwrd"&gt;value&lt;/span&gt;; }
     }
&amp;nbsp;
     &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;override&lt;/span&gt; &lt;span class="kwrd"&gt;long&lt;/span&gt; Seek(&lt;span class="kwrd"&gt;long&lt;/span&gt; offset, System.IO.SeekOrigin direction)
     {
         &lt;span class="kwrd"&gt;return&lt;/span&gt; _stream.Seek(offset, direction);
     }
&amp;nbsp;
     &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;override&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; SetLength(&lt;span class="kwrd"&gt;long&lt;/span&gt; length)
     {
         _stream.SetLength(length);
     }
&amp;nbsp;
     &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;override&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Close()
     {
         _stream.Close();
     }
&amp;nbsp;
     &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;override&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Flush()
     {
         ms = TransformStream(ms);
         _stream.Write(ms.ToArray(), 0, (&lt;span class="kwrd"&gt;int&lt;/span&gt;)ms.Length);
&amp;nbsp;
         _stream.Flush();
     }
&amp;nbsp;
     &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;override&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt; Read(&lt;span class="kwrd"&gt;byte&lt;/span&gt;[] buffer, &lt;span class="kwrd"&gt;int&lt;/span&gt; offset, &lt;span class="kwrd"&gt;int&lt;/span&gt; count)
     {
         &lt;span class="kwrd"&gt;return&lt;/span&gt; _stream.Read(buffer, offset, count);
     }
&amp;nbsp;
     MemoryStream ms = &lt;span class="kwrd"&gt;new&lt;/span&gt; MemoryStream(5000);
     &lt;span class="kwrd"&gt;int&lt;/span&gt; buffPointer = 0;
&amp;nbsp;
     &lt;span class="rem"&gt;// The Write method actually does the filtering.&lt;/span&gt;
     &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;override&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Write(&lt;span class="kwrd"&gt;byte&lt;/span&gt;[] buffer, &lt;span class="kwrd"&gt;int&lt;/span&gt; offset, &lt;span class="kwrd"&gt;int&lt;/span&gt; count)
     {       
         &lt;span class="rem"&gt;// copy to holding buffer&lt;/span&gt;
         ms.Write(buffer,0, count);
         buffPointer += count;
&amp;nbsp;
        &lt;span class="rem"&gt;// _stream.Write(buffer, 0, count);&lt;/span&gt;
     }
&amp;nbsp;
     &lt;span class="kwrd"&gt;protected&lt;/span&gt; MemoryStream TransformStream(MemoryStream ms)
     {
         &lt;span class="kwrd"&gt;string&lt;/span&gt; text = Encoding.Default.GetString(ms.ToArray());
&amp;nbsp;
         text = text.Replace(&lt;span class="str"&gt;"the"&lt;/span&gt;, &lt;span class="str"&gt;"THE BIG REPLACEMENT CAPER"&lt;/span&gt;);
&amp;nbsp;
         &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;new&lt;/span&gt; MemoryStream(Encoding.Default.GetBytes(text));            
     }
 }
&amp;nbsp;
&lt;/pre&gt;&lt;/pre&gt;</description><pubDate>Wed, 11 Nov 2009 17:19:49 -0800</pubDate></item><item><guid isPermaLink="false">fznwbn</guid><link>http://codepaste.net/fznwbn</link><a10:author><a10:name>Rick Strahl</a10:name></a10:author><title>$.fadeTo/fadeOut not responding on table rows</title><description>&lt;pre&gt;&lt;pre class="csharpcode"&gt;
    &lt;span class="kwrd"&gt;var&lt;/span&gt; sel =
        $(&lt;span class="str"&gt;"#gdEntries&amp;gt;tbody&amp;gt;tr"&lt;/span&gt;)
                .not(&lt;span class="str"&gt;":first-child"&lt;/span&gt;)  &lt;span class="rem"&gt;// no header&lt;/span&gt;
                .not(&lt;span class="str"&gt;":last-child"&lt;/span&gt;)   &lt;span class="rem"&gt;// no footer&lt;/span&gt;
                .filter(&lt;span class="str"&gt;":even"&lt;/span&gt;)
                .addClass(&lt;span class="str"&gt;"gridalternate"&lt;/span&gt;);
&amp;nbsp;
    &lt;span class="rem"&gt;// *** Demonstrate simple plugin&lt;/span&gt;
    sel.fadeTo(2000,0.30);
&amp;nbsp;
&amp;nbsp;
&lt;span class="rem"&gt;// html&lt;/span&gt;
&amp;lt;table &lt;span class="kwrd"&gt;class&lt;/span&gt;=&lt;span class="str"&gt;"blackborder"&lt;/span&gt; cellspacing=&lt;span class="str"&gt;"0"&lt;/span&gt; cellpadding=&lt;span class="str"&gt;"4"&lt;/span&gt; rules=&lt;span class="str"&gt;"all"&lt;/span&gt; PagePageSize=&lt;span class="str"&gt;"8"&lt;/span&gt; border=&lt;span class="str"&gt;"1"&lt;/span&gt; id=&lt;span class="str"&gt;"gdEntries"&lt;/span&gt; style=&lt;span class="str"&gt;"width:750px;border-collapse:collapse;"&lt;/span&gt;&amp;gt;
        &amp;lt;tr &lt;span class="kwrd"&gt;class&lt;/span&gt;=&lt;span class="str"&gt;"gridheader"&lt;/span&gt;&amp;gt;
            &amp;lt;th scope=&lt;span class="str"&gt;"col"&lt;/span&gt;&amp;gt;Time &lt;span class="kwrd"&gt;in&lt;/span&gt;&amp;lt;/th&amp;gt;&amp;lt;th scope=&lt;span class="str"&gt;"col"&lt;/span&gt;&amp;gt;Description&amp;lt;/th&amp;gt;&amp;lt;th scope=&lt;span class="str"&gt;"col"&lt;/span&gt;&amp;gt;Total&amp;lt;/th&amp;gt;
        &amp;lt;/tr&amp;gt;&amp;lt;tr &lt;span class="kwrd"&gt;class&lt;/span&gt;=&lt;span class="str"&gt;"griddatarow"&lt;/span&gt; pk=&lt;span class="str"&gt;"257"&lt;/span&gt;&amp;gt;
            &amp;lt;td &lt;span class="kwrd"&gt;class&lt;/span&gt;=&lt;span class="str"&gt;"timeinField"&lt;/span&gt;&amp;gt;Nov 10 12:00 AM&amp;lt;/td&amp;gt;&amp;lt;td &lt;span class="kwrd"&gt;class&lt;/span&gt;=&lt;span class="str"&gt;"descriptionField"&lt;/span&gt;&amp;gt;
                    &amp;lt;div style=&lt;span class="str"&gt;"display:none"&lt;/span&gt;&amp;gt;257&amp;lt;/div&amp;gt;
                    &amp;lt;b&amp;gt;Fix up jQuery Download&amp;lt;/b&amp;gt;
                    &amp;lt;div id=&lt;span class="str"&gt;"entrydescription"&lt;/span&gt;&amp;gt;Refactor jQuery samples to work into a single Web project &lt;span class="kwrd"&gt;for&lt;/span&gt; less dependencies &lt;span class="kwrd"&gt;for&lt;/span&gt; users to play with.&amp;lt;/div&amp;gt;            
                &amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;150.00&amp;lt;/td&amp;gt;
        &amp;lt;/tr&amp;gt;&amp;lt;tr &lt;span class="kwrd"&gt;class&lt;/span&gt;=&lt;span class="str"&gt;"griddatarow"&lt;/span&gt; pk=&lt;span class="str"&gt;"253"&lt;/span&gt;&amp;gt;
            &amp;lt;td &lt;span class="kwrd"&gt;class&lt;/span&gt;=&lt;span class="str"&gt;"timeinField"&lt;/span&gt;&amp;gt;Apr 22 05:30 PM&amp;lt;/td&amp;gt;&amp;lt;td &lt;span class="kwrd"&gt;class&lt;/span&gt;=&lt;span class="str"&gt;"descriptionField"&lt;/span&gt;&amp;gt;
                    &amp;lt;div style=&lt;span class="str"&gt;"display:none"&lt;/span&gt;&amp;gt;253&amp;lt;/div&amp;gt;
                    &amp;lt;b&amp;gt;Preparation &lt;span class="kwrd"&gt;for&lt;/span&gt; DevConnection jQuery Session&amp;lt;/b&amp;gt;
                    &amp;lt;div id=&lt;span class="str"&gt;"entrydescription"&lt;/span&gt;&amp;gt;Work on walk-through's &lt;span class="kwrd"&gt;for&lt;/span&gt; jQuery session&amp;lt;/div&amp;gt;            
                &amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;140.00&amp;lt;/td&amp;gt;
        &amp;lt;/tr&amp;gt;&amp;lt;tr &lt;span class="kwrd"&gt;class&lt;/span&gt;=&lt;span class="str"&gt;"griddatarow"&lt;/span&gt; pk=&lt;span class="str"&gt;"252"&lt;/span&gt;&amp;gt;
            &amp;lt;td &lt;span class="kwrd"&gt;class&lt;/span&gt;=&lt;span class="str"&gt;"timeinField"&lt;/span&gt;&amp;gt;Apr 22 10:15 AM&amp;lt;/td&amp;gt;&amp;lt;td &lt;span class="kwrd"&gt;class&lt;/span&gt;=&lt;span class="str"&gt;"descriptionField"&lt;/span&gt;&amp;gt;
                    &amp;lt;div style=&lt;span class="str"&gt;"display:none"&lt;/span&gt;&amp;gt;252&amp;lt;/div&amp;gt;
                    &amp;lt;b&amp;gt;Get ready &lt;span class="kwrd"&gt;for&lt;/span&gt; LINQ to SQL Talk&amp;lt;/b&amp;gt;
                    &amp;lt;div id=&lt;span class="str"&gt;"entrydescription"&lt;/span&gt;&amp;gt;Review samples to ensure they work. Zip up all samples and latest slides and upload to site. Revisit LINQ to SQL queries to be hand coded during demo.&amp;lt;/div&amp;gt;            
                &amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;199.99&amp;lt;/td&amp;gt;
        &amp;lt;/tr&amp;gt;
&amp;lt;/table&amp;gt;
&lt;/pre&gt;&lt;/pre&gt;</description><pubDate>Sun, 08 Nov 2009 22:05:33 -0800</pubDate></item><item><guid isPermaLink="false">hpgt9y</guid><link>http://codepaste.net/hpgt9y</link><a10:author><a10:name>Rick Strahl</a10:name></a10:author><title>Getting a Reference to HttpWorkerRequest Instance in ASP.NET</title><description>&lt;pre&gt;&lt;pre class="csharpcode"&gt;
IServiceProvider provider = (IServiceProvider)HttpContext.Current.Context;
HttpWorkerRequest worker = (HttpWorkerRequest)provider.GetService(&lt;span class="kwrd"&gt;typeof&lt;/span&gt;(HttpWorkerRequest)); 
&amp;nbsp;
&lt;/pre&gt;&lt;/pre&gt;</description><pubDate>Sun, 08 Nov 2009 16:26:39 -0800</pubDate></item><item><guid isPermaLink="false">i79krf</guid><link>http://codepaste.net/i79krf</link><a10:author><a10:name>Rick Strahl</a10:name></a10:author><title>ResolveThemeUrl</title><description>&lt;pre&gt;&lt;pre class="csharpcode"&gt;
&lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;
&lt;span class="rem"&gt;/// Returns an application Url that's Theme relative.&lt;/span&gt;
&lt;span class="rem"&gt;/// images/users.gif&lt;/span&gt;
&lt;span class="rem"&gt;/// returns: /myapp/app_themes/{activetheme}/images/users.gif&lt;/span&gt;
&lt;span class="rem"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; ResolveThemeUrl(&lt;span class="kwrd"&gt;string&lt;/span&gt; themeRelativePath)
{
    &lt;span class="kwrd"&gt;string&lt;/span&gt; theme = &lt;span class="kwrd"&gt;null&lt;/span&gt;;
    
    &lt;span class="rem"&gt;// try to pick up active theme&lt;/span&gt;
    Page page = HttpContext.Current.Handler &lt;span class="kwrd"&gt;as&lt;/span&gt; Page;
    &lt;span class="kwrd"&gt;if&lt;/span&gt; (page != &lt;span class="kwrd"&gt;null&lt;/span&gt;)
        theme = page.Theme;
    
    &lt;span class="rem"&gt;// if not available use config default&lt;/span&gt;
    &lt;span class="kwrd"&gt;if&lt;/span&gt; (!&lt;span class="kwrd"&gt;string&lt;/span&gt;.IsNullOrEmpty(theme))
        theme = App.Configuration.Theme;
                
    &lt;span class="kwrd"&gt;return&lt;/span&gt; HttpContext.Current.Request.ApplicationPath + &lt;span class="str"&gt;"/"&lt;/span&gt;.Replace(&lt;span class="str"&gt;"//"&lt;/span&gt;, &lt;span class="str"&gt;""&lt;/span&gt;) + &lt;span class="str"&gt;"app_themes/"&lt;/span&gt; +
           theme +  &lt;span class="str"&gt;"/"&lt;/span&gt; +
           themeRelativePath;
}
&lt;/pre&gt;&lt;/pre&gt;</description><pubDate>Thu, 29 Oct 2009 02:04:48 -0700</pubDate></item><item><guid isPermaLink="false">c7v9ot</guid><link>http://codepaste.net/c7v9ot</link><a10:author><a10:name>Rick Strahl</a10:name></a10:author><title>Bind ComboBox to Data and add a first item with text - is there an easier way?</title><description>&lt;pre&gt;&lt;pre class="csharpcode"&gt;
&amp;nbsp;
   &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; ListUtils
   {
       &lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;
       &lt;span class="rem"&gt;/// Manual ComboBox binding and adding a first item&lt;/span&gt;
       &lt;span class="rem"&gt;/// &lt;/span&gt;
       &lt;span class="rem"&gt;/// Assumes you're binding to an enumerable list of some sort&lt;/span&gt;
       &lt;span class="rem"&gt;/// and you're binding to Properties (not fields)&lt;/span&gt;
       &lt;span class="rem"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;
       &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; BindWithFirstItem(IEnumerable items, ComboBox listBox,
                                  &lt;span class="kwrd"&gt;string&lt;/span&gt; textField, &lt;span class="kwrd"&gt;string&lt;/span&gt; valueField,
                                  &lt;span class="kwrd"&gt;string&lt;/span&gt; firstItemText, &lt;span class="kwrd"&gt;object&lt;/span&gt; firstItemValue)
       {
           &lt;span class="rem"&gt;// We'll actually bind ListItem&lt;/span&gt;
           listBox.DisplayMember = &lt;span class="str"&gt;"DisplayText"&lt;/span&gt;;
           listBox.ValueMember = &lt;span class="str"&gt;"Value"&lt;/span&gt;;
&amp;nbsp;
           &lt;span class="kwrd"&gt;if&lt;/span&gt; (firstItemText != &lt;span class="kwrd"&gt;null&lt;/span&gt;)
           {
               ListItem li = &lt;span class="kwrd"&gt;new&lt;/span&gt; ListItem()
               {
                   DisplayText = firstItemText,
                   Value = firstItemValue
               };
               listBox.Items.Add(li);
           }
&amp;nbsp;
           &lt;span class="kwrd"&gt;foreach&lt;/span&gt; (&lt;span class="kwrd"&gt;object&lt;/span&gt; item &lt;span class="kwrd"&gt;in&lt;/span&gt; items)
           {
               PropertyInfo piText = &lt;span class="kwrd"&gt;null&lt;/span&gt;;
               PropertyInfo piValue = &lt;span class="kwrd"&gt;null&lt;/span&gt;;
&amp;nbsp;
               &lt;span class="kwrd"&gt;if&lt;/span&gt; (piText == &lt;span class="kwrd"&gt;null&lt;/span&gt;)
               {
                   piText = item.GetType().GetProperty(textField);
                   piValue = item.GetType().GetProperty(valueField);
               }
&amp;nbsp;
               ListItem li = &lt;span class="kwrd"&gt;new&lt;/span&gt; ListItem()
               {
                   DisplayText = piText.GetValue(item, &lt;span class="kwrd"&gt;null&lt;/span&gt;) &lt;span class="kwrd"&gt;as&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt;,
                   Value = piValue.GetValue(item, &lt;span class="kwrd"&gt;null&lt;/span&gt;)
               };
               listBox.Items.Add(li);
           }
&amp;nbsp;
           &lt;span class="kwrd"&gt;if&lt;/span&gt; (listBox.Items.Count &amp;gt; 0)
               listBox.SelectedIndex = 0;
       }
   }
&amp;nbsp;
   &lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;
   &lt;span class="rem"&gt;/// Use this for actual binding&lt;/span&gt;
   &lt;span class="rem"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;
   &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; ListItem
   {
       &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; DisplayText { get; set; }
       &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;object&lt;/span&gt; Value { get; set; }
       &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;object&lt;/span&gt; Tag { get; set; }
   }
&amp;nbsp;
   &lt;span class="rem"&gt;// sample usage&lt;/span&gt;
   ProductList = &lt;span class="kwrd"&gt;new&lt;/span&gt; List&amp;lt;Product&amp;gt;()
   {
     &lt;span class="kwrd"&gt;new&lt;/span&gt; Product() { Sku = &lt;span class="str"&gt;"WCONNECT"&lt;/span&gt;, Descript=&lt;span class="str"&gt;"Web Connection"&lt;/span&gt;, Id=1 },
     &lt;span class="kwrd"&gt;new&lt;/span&gt; Product() { Sku = &lt;span class="str"&gt;"WWHELP"&lt;/span&gt;, Descript=&lt;span class="str"&gt;"Help Builder"&lt;/span&gt;, Id=2 },
     &lt;span class="kwrd"&gt;new&lt;/span&gt; Product() { Sku = &lt;span class="str"&gt;"WEBTOOLKIT"&lt;/span&gt;, Descript=&lt;span class="str"&gt;"Web Toolkit"&lt;/span&gt;, Id=3 }, 
   };
&amp;nbsp;
   ListUtils.BindWithFirstItem(ProductList, &lt;span class="kwrd"&gt;this&lt;/span&gt;.lstProducts,  &lt;span class="rem"&gt;// combobox&lt;/span&gt;
                            &lt;span class="str"&gt;"Descript"&lt;/span&gt;, &lt;span class="str"&gt;"Id"&lt;/span&gt;, 
                            &lt;span class="str"&gt;"Please choose one..."&lt;/span&gt;, -1);
&amp;nbsp;
&lt;/pre&gt;&lt;/pre&gt;</description><pubDate>Tue, 27 Oct 2009 15:46:25 -0700</pubDate></item><item><guid isPermaLink="false">qy4z1p</guid><link>http://codepaste.net/qy4z1p</link><a10:author><a10:name>Rick Strahl</a10:name></a10:author><title>CodeRush template to paste</title><description>&lt;pre&gt;&lt;pre class="csharpcode"&gt;
&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt; &lt;span class="attr"&gt;class&lt;/span&gt;&lt;span class="kwrd"&gt;="toolbarcontainer"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;a&lt;/span&gt; &lt;span class="attr"&gt;href&lt;/span&gt;&lt;span class="kwrd"&gt;="./"&lt;/span&gt; &lt;span class="attr"&gt;class&lt;/span&gt;&lt;span class="kwrd"&gt;="hoverbutton"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;img&lt;/span&gt; &lt;span class="attr"&gt;src&lt;/span&gt;&lt;span class="kwrd"&gt;="css/images/home.gif"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt; Home&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;a&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; | 
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;a&lt;/span&gt; &lt;span class="attr"&gt;href&lt;/span&gt;&lt;span class="kwrd"&gt;="«Link(Page Name)».aspx"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;img&lt;/span&gt; &lt;span class="attr"&gt;src&lt;/span&gt;&lt;span class="kwrd"&gt;="css/images/refresh.gif"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt; Refresh Page&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;a&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
&amp;nbsp;
&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ww:ErrorDisplay&lt;/span&gt; &lt;span class="attr"&gt;runat&lt;/span&gt;&lt;span class="kwrd"&gt;="server"&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;="ErrorDisplay"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
&amp;nbsp;
&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt; &lt;span class="attr"&gt;class&lt;/span&gt;&lt;span class="kwrd"&gt;="containercontent"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
«Marker»
&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/pre&gt;</description><pubDate>Fri, 09 Oct 2009 03:12:23 -0700</pubDate></item><item><guid isPermaLink="false">4prtcb</guid><link>http://codepaste.net/4prtcb</link><a10:author><a10:name>Rick Strahl</a10:name></a10:author><title>.Where Clause parameter Expression&lt;Func&lt;T&gt;&gt; or Func&lt;T&gt;</title><description>&lt;pre&gt;&lt;pre class="csharpcode"&gt;
&lt;span class="rem"&gt;// works as expected&lt;/span&gt;
&lt;span class="kwrd"&gt;public&lt;/span&gt; wws_Item LoadBySku(&lt;span class="kwrd"&gt;string&lt;/span&gt; sku)
{
    Expression&amp;lt; Func&amp;lt;wws_Item, &lt;span class="kwrd"&gt;bool&lt;/span&gt;&amp;gt; &amp;gt; func = itm =&amp;gt; itm.Sku == sku;
&amp;nbsp;
    Entity = Context.wws_Items.Where(func).SingleOrDefault();
    &lt;span class="kwrd"&gt;if&lt;/span&gt; (Entity != &lt;span class="kwrd"&gt;null&lt;/span&gt;)
        OnLoaded(Entity);
&amp;nbsp;
    &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;this&lt;/span&gt;.Entity;
    &lt;span class="rem"&gt;// return LoadBase(func);  // works&lt;/span&gt;
}
&amp;nbsp;
&lt;span class="rem"&gt;// doesn't work (Entity is null) but compiles&lt;/span&gt;
&lt;span class="kwrd"&gt;public&lt;/span&gt; wws_Item LoadBySku(&lt;span class="kwrd"&gt;string&lt;/span&gt; sku)
{
    Func&amp;lt;wws_Item, &lt;span class="kwrd"&gt;bool&lt;/span&gt;&amp;gt; func = itm =&amp;gt; itm.Sku == sku;
&amp;nbsp;
    Entity = Context.wws_Items.Where(func).SingleOrDefault();
    &lt;span class="kwrd"&gt;if&lt;/span&gt; (Entity != &lt;span class="kwrd"&gt;null&lt;/span&gt;)
        OnLoaded(Entity);
&amp;nbsp;
    &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;this&lt;/span&gt;.Entity;
    &lt;span class="rem"&gt;// return LoadBase(func);  // doesn't work&lt;/span&gt;
}
&lt;/pre&gt;&lt;/pre&gt;</description><pubDate>Sun, 04 Oct 2009 17:02:06 -0700</pubDate></item><item><guid isPermaLink="false">vr1yoq</guid><link>http://codepaste.net/vr1yoq</link><a10:author><a10:name>Rick Strahl</a10:name></a10:author><title>Yellow Screen of Death in Medium Trust Besides Try/Catch</title><description>&lt;pre&gt;&lt;pre class="csharpcode"&gt;
&lt;span class="asp"&gt;&amp;lt;%@Page language="C#" %&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&amp;lt;!&lt;/span&gt;&lt;span class="html"&gt;DOCTYPE&lt;/span&gt; &lt;span class="attr"&gt;html&lt;/span&gt; &lt;span class="attr"&gt;PUBLIC&lt;/span&gt; &lt;span class="kwrd"&gt;"-//W3C//DTD XHTML 1.0 Transitional//EN"&lt;/span&gt; &lt;span class="kwrd"&gt;"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;html&lt;/span&gt; &lt;span class="attr"&gt;xmlns&lt;/span&gt;&lt;span class="kwrd"&gt;="http://www.w3.org/1999/xhtml"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;head&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;link&lt;/span&gt; &lt;span class="attr"&gt;rel&lt;/span&gt;&lt;span class="kwrd"&gt;="stylesheet"&lt;/span&gt; &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;="text/css"&lt;/span&gt; &lt;span class="attr"&gt;href&lt;/span&gt;&lt;span class="kwrd"&gt;="../westwind.css"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;title&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Web Connection Adminstration&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;title&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;style&lt;/span&gt; &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;="text/css"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    .containercontent
    {
        padding: 10px;
    }
    li
    {
        padding: 4px;
    }
    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;style&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;head&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
&amp;nbsp;
&lt;span class="asp"&gt;&amp;lt;%&lt;/span&gt;
&amp;nbsp;
     Response.Write("Starting");
     try
     {
         System.Diagnostics.Process[] process = null;
         process = System.Diagnostics.Process.GetProcesses();
     }
     catch
     {
         Response.Write("T/C fired");
         return;
     }
     Response.Write("Made it");
&lt;span class="asp"&gt;%&amp;gt;&lt;/span&gt;  
&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;body&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;html&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/pre&gt;</description><pubDate>Mon, 28 Sep 2009 13:32:27 -0700</pubDate></item><item><guid isPermaLink="false">xhzyvs</guid><link>http://codepaste.net/xhzyvs</link><a10:author><a10:name>Rick Strahl</a10:name></a10:author><title>Linq to SQL Implicit Entity Sharing across DataContexts</title><description>&lt;pre&gt;&lt;pre class="csharpcode"&gt;
 StockContext context = &lt;span class="kwrd"&gt;new&lt;/span&gt; StockContext();
 User user = context.Users.Where( uss =&amp;gt; uss.Pk == 1).SingleOrDefault();
 Response.Write(user.FullName + &lt;span class="str"&gt;"&amp;lt;br&amp;gt;"&lt;/span&gt;); 
 user.FullName = user.FullName + &lt;span class="str"&gt;"!"&lt;/span&gt;;
&amp;nbsp;
&amp;nbsp;
 StockContext context2 = &lt;span class="kwrd"&gt;new&lt;/span&gt; StockContext();
 User user2 = context.Users.Where(uss =&amp;gt; uss.Pk == 1).SingleOrDefault();
 Response.Write(user2.FullName + &lt;span class="str"&gt;"&amp;lt;br&amp;gt;"&lt;/span&gt;);
 user2.FullName = user2.FullName + &lt;span class="str"&gt;"!"&lt;/span&gt;;
&amp;nbsp;
&amp;nbsp;
 context.SubmitChanges();
 context2.SubmitChanges();
&amp;nbsp;
  user2 = context.Users.Where(uss =&amp;gt; uss.Pk == 1).SingleOrDefault();
  Response.Write(user2.FullName);
&lt;/pre&gt;&lt;/pre&gt;</description><pubDate>Sun, 27 Sep 2009 14:34:57 -0700</pubDate></item><item><guid isPermaLink="false">gfpewp</guid><link>http://codepaste.net/gfpewp</link><a10:author><a10:name>Rick Strahl</a10:name></a10:author><title>Func&lt;t&gt; Async delegates - Nice 'n easy</title><description>&lt;pre&gt;&lt;pre class="csharpcode"&gt;
&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; LogSnippetViewAsync(&lt;span class="kwrd"&gt;string&lt;/span&gt; snippetId, &lt;span class="kwrd"&gt;string&lt;/span&gt; ipAddress, &lt;span class="kwrd"&gt;string&lt;/span&gt; userAgent)
{
    Func&amp;lt;&lt;span class="kwrd"&gt;string&lt;/span&gt;, &lt;span class="kwrd"&gt;string&lt;/span&gt;, &lt;span class="kwrd"&gt;string&lt;/span&gt;, &lt;span class="kwrd"&gt;bool&lt;/span&gt;&amp;gt; del = &lt;span class="kwrd"&gt;this&lt;/span&gt;.LogSnippetView; 
    del.BeginInvoke(snippetId, ipAddress,userAgent,&lt;span class="kwrd"&gt;null&lt;/span&gt;,&lt;span class="kwrd"&gt;null&lt;/span&gt;);            
}
&amp;nbsp;
&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;bool&lt;/span&gt; LogSnippetView(&lt;span class="kwrd"&gt;string&lt;/span&gt; snippetId, &lt;span class="kwrd"&gt;string&lt;/span&gt; ipAddress, &lt;span class="kwrd"&gt;string&lt;/span&gt; userAgent)
{
    &lt;span class="kwrd"&gt;if&lt;/span&gt; (&lt;span class="kwrd"&gt;string&lt;/span&gt;.IsNullOrEmpty(userAgent))
        &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;false&lt;/span&gt;;
&amp;nbsp;
    userAgent = userAgent.ToLower();
&amp;nbsp;
    &lt;span class="kwrd"&gt;if&lt;/span&gt; (!(userAgent.Contains(&lt;span class="str"&gt;"mozilla"&lt;/span&gt;) || userAgent.StartsWith(&lt;span class="str"&gt;"safari"&lt;/span&gt;) ||
        userAgent.StartsWith(&lt;span class="str"&gt;"blackberry"&lt;/span&gt;) || userAgent.StartsWith(&lt;span class="str"&gt;"t-mobile"&lt;/span&gt;) ||
        userAgent.StartsWith(&lt;span class="str"&gt;"htc"&lt;/span&gt;) || userAgent.StartsWith(&lt;span class="str"&gt;"opera"&lt;/span&gt;)))
        &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;false&lt;/span&gt;;
&amp;nbsp;
    &lt;span class="kwrd"&gt;this&lt;/span&gt;.Context.LogSnippetClick(snippetId, ipAddress); &lt;span class="rem"&gt;// stored proc&lt;/span&gt;
&amp;nbsp;
    &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;true&lt;/span&gt;;
}
&amp;nbsp;
&amp;nbsp;
&amp;nbsp;
&lt;/pre&gt;&lt;/pre&gt;</description><pubDate>Thu, 24 Sep 2009 15:31:16 -0700</pubDate></item><item><guid isPermaLink="false">f5crr1</guid><link>http://codepaste.net/f5crr1</link><a10:author><a10:name>Rick Strahl</a10:name></a10:author><title>Programmatic Impersonation Utilities</title><description>&lt;pre&gt;&lt;pre class="csharpcode"&gt;
&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; SecurityUtils
{
&amp;nbsp;
    &lt;span class="kwrd"&gt;const&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt; LOGON32_LOGON_INTERACTIVE = 2;
    &lt;span class="kwrd"&gt;const&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt; LOGON32_LOGON_NETWORK = 3;
    &lt;span class="kwrd"&gt;const&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt; LOGON32_LOGON_BATCH = 4;
    &lt;span class="kwrd"&gt;const&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt; LOGON32_LOGON_SERVICE = 5;
    &lt;span class="kwrd"&gt;const&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt; LOGON32_LOGON_UNLOCK = 7;
    &lt;span class="kwrd"&gt;const&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt; LOGON32_LOGON_NETWORK_CLEARTEXT = 8;
    &lt;span class="kwrd"&gt;const&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt; LOGON32_LOGON_NEW_CREDENTIALS = 9;
    &lt;span class="kwrd"&gt;const&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt; LOGON32_PROVIDER_DEFAULT = 0;
&amp;nbsp;
    [DllImport(&lt;span class="str"&gt;"advapi32.dll"&lt;/span&gt;, SetLastError = &lt;span class="kwrd"&gt;true&lt;/span&gt;)]
    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;extern&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt; LogonUser(
        &lt;span class="kwrd"&gt;string&lt;/span&gt; lpszUsername,
        &lt;span class="kwrd"&gt;string&lt;/span&gt; lpszDomain,
        &lt;span class="kwrd"&gt;string&lt;/span&gt; lpszPassword,
        &lt;span class="kwrd"&gt;int&lt;/span&gt; dwLogonType,
        &lt;span class="kwrd"&gt;int&lt;/span&gt; dwLogonProvider,
        &lt;span class="kwrd"&gt;out&lt;/span&gt; IntPtr phToken
        );
&amp;nbsp;
    [DllImport(&lt;span class="str"&gt;"kernel32.dll"&lt;/span&gt;, SetLastError = &lt;span class="kwrd"&gt;true&lt;/span&gt;)]
    &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;extern&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt; CloseHandle(IntPtr hObject);
&amp;nbsp;
    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; WindowsImpersonationContext ImpersonateUser(&lt;span class="kwrd"&gt;string&lt;/span&gt; username, &lt;span class="kwrd"&gt;string&lt;/span&gt; password, &lt;span class="kwrd"&gt;string&lt;/span&gt; domain)
    {
        IntPtr token = IntPtr.Zero;
        &lt;span class="kwrd"&gt;try&lt;/span&gt;
        {                
            &lt;span class="kwrd"&gt;int&lt;/span&gt; TResult = LogonUser(username, domain, password,
                                    LOGON32_LOGON_NETWORK, LOGON32_PROVIDER_DEFAULT,
                                    &lt;span class="kwrd"&gt;out&lt;/span&gt; token);
&amp;nbsp;
            WindowsImpersonationContext context = &lt;span class="kwrd"&gt;null&lt;/span&gt;;
            context = WindowsIdentity.Impersonate(token);
            CloseHandle(token);
&amp;nbsp;
            &lt;span class="kwrd"&gt;return&lt;/span&gt; context;
        }
        &lt;span class="kwrd"&gt;catch&lt;/span&gt;
        {
            &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;null&lt;/span&gt;;
        }
        &lt;span class="kwrd"&gt;finally&lt;/span&gt;
        {
            &lt;span class="kwrd"&gt;if&lt;/span&gt; (token != IntPtr.Zero)
                CloseHandle(token);
        }
    }
&amp;nbsp;
    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; RevertImpersonation(WindowsImpersonationContext context)
    {
        context.Undo();
        context.Dispose();
    }
}
&lt;/pre&gt;&lt;/pre&gt;</description><pubDate>Wed, 23 Sep 2009 17:34:18 -0700</pubDate></item><item><guid isPermaLink="false">95othj</guid><link>http://codepaste.net/95othj</link><a10:author><a10:name>Rick Strahl</a10:name></a10:author><title>ASP.NET Listbox rebinding that fails due to SelectedValue set</title><description>&lt;pre&gt;&lt;pre class="csharpcode"&gt;
&lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; GetResourceSet()
{
    &lt;span class="kwrd"&gt;this&lt;/span&gt;.ResourceSet = Request.Form[&lt;span class="kwrd"&gt;this&lt;/span&gt;.lstResourceSet.UniqueID];
    &lt;span class="kwrd"&gt;if&lt;/span&gt; (ResourceSet == &lt;span class="kwrd"&gt;null&lt;/span&gt;)
        &lt;span class="kwrd"&gt;this&lt;/span&gt;.ResourceSet = Request.QueryString[&lt;span class="str"&gt;"ResourceSet"&lt;/span&gt;];
    &lt;span class="kwrd"&gt;if&lt;/span&gt; (&lt;span class="kwrd"&gt;this&lt;/span&gt;.ResourceSet == &lt;span class="kwrd"&gt;null&lt;/span&gt;)
        &lt;span class="kwrd"&gt;this&lt;/span&gt;.ResourceSet = ViewState[&lt;span class="str"&gt;"ResourceSet"&lt;/span&gt;] &lt;span class="kwrd"&gt;as&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt;;
&amp;nbsp;
    &lt;span class="kwrd"&gt;if&lt;/span&gt; (&lt;span class="kwrd"&gt;this&lt;/span&gt;.ResourceSet == &lt;span class="kwrd"&gt;null&lt;/span&gt;)
        &lt;span class="kwrd"&gt;this&lt;/span&gt;.ResourceSet = &lt;span class="str"&gt;""&lt;/span&gt;;
&amp;nbsp;
    &lt;span class="kwrd"&gt;this&lt;/span&gt;.ResourceSet = &lt;span class="kwrd"&gt;this&lt;/span&gt;.ResourceSet.ToLower();
&amp;nbsp;
    &lt;span class="kwrd"&gt;if&lt;/span&gt; (!&lt;span class="kwrd"&gt;string&lt;/span&gt;.IsNullOrEmpty(&lt;span class="kwrd"&gt;this&lt;/span&gt;.ResourceSet))
        ViewState[&lt;span class="str"&gt;"ResourceSet"&lt;/span&gt;] = &lt;span class="kwrd"&gt;this&lt;/span&gt;.ResourceSet;
&amp;nbsp;
    &lt;span class="rem"&gt;// *** Clear selections&lt;/span&gt;
    &lt;span class="rem"&gt;//lstResourceIds.Items.Clear();&lt;/span&gt;
    lstResourceIds.ClearSelection();
&amp;nbsp;
    lstResourceSet.Items.Clear();
    lstResourceSet.ClearSelection();   
&amp;nbsp;
    DataTable dt = Manager.GetAllResourceSets(ResourceListingTypes.AllResources);
    &lt;span class="kwrd"&gt;this&lt;/span&gt;.lstResourceSet.DataSource = dt;
    &lt;span class="kwrd"&gt;this&lt;/span&gt;.lstResourceSet.DataValueField = &lt;span class="str"&gt;"ResourceSet"&lt;/span&gt;;
&amp;nbsp;
    &lt;span class="kwrd"&gt;try&lt;/span&gt;
    {
        &lt;span class="kwrd"&gt;this&lt;/span&gt;.lstResourceSet.DataBind();
    }
    &lt;span class="kwrd"&gt;catch&lt;/span&gt; 
    { 
        &lt;span class="rem"&gt;// *** Works with this hack. Without exception block it&lt;/span&gt;
        &lt;span class="rem"&gt;//     fails with SelectedValue could not be assigned. With it&lt;/span&gt;
        &lt;span class="rem"&gt;//     re-binding works.&lt;/span&gt;
        &lt;span class="rem"&gt;//&lt;/span&gt;
        &lt;span class="rem"&gt;// this fails for some unknown reason on rebinds (off a btn submission)&lt;/span&gt;
        &lt;span class="rem"&gt;// which in effect rebinds an already bound list.&lt;/span&gt;
        &lt;span class="rem"&gt;//&lt;/span&gt;
        &lt;span class="rem"&gt;// First pass through always works fine - only rebind fails.&lt;/span&gt;
        &lt;span class="rem"&gt;//&lt;/span&gt;
        &lt;span class="rem"&gt;// complains about SelectedValue being set to a value&lt;/span&gt;
        &lt;span class="rem"&gt;// that doesn't exist even though selection is already&lt;/span&gt;
        &lt;span class="rem"&gt;// cleared AND the value that it actually is set after&lt;/span&gt;
        &lt;span class="rem"&gt;// DataBind() DOES exist in the data.&lt;/span&gt;
    }
&amp;nbsp;
    &lt;span class="kwrd"&gt;if&lt;/span&gt; ( !&lt;span class="kwrd"&gt;string&lt;/span&gt;.IsNullOrEmpty(&lt;span class="kwrd"&gt;this&lt;/span&gt;.ResourceSet) )
        &lt;span class="kwrd"&gt;this&lt;/span&gt;.lstResourceSet.SelectedValue = &lt;span class="kwrd"&gt;this&lt;/span&gt;.ResourceSet;
    &lt;span class="kwrd"&gt;else&lt;/span&gt;
    {
        &lt;span class="kwrd"&gt;if&lt;/span&gt; (&lt;span class="kwrd"&gt;this&lt;/span&gt;.lstResourceSet.Items.Count &amp;gt; 0)
        {
            &lt;span class="kwrd"&gt;this&lt;/span&gt;.ResourceSet = &lt;span class="kwrd"&gt;this&lt;/span&gt;.lstResourceSet.Items[0].Value;
            &lt;span class="kwrd"&gt;this&lt;/span&gt;.lstResourceSet.SelectedValue = &lt;span class="kwrd"&gt;this&lt;/span&gt;.ResourceSet;                    
        }
    }
}
&lt;/pre&gt;&lt;/pre&gt;</description><pubDate>Tue, 22 Sep 2009 13:17:48 -0700</pubDate></item><item><guid isPermaLink="false">hjwiet</guid><link>http://codepaste.net/hjwiet</link><a10:author><a10:name>Rick Strahl</a10:name></a10:author><title>JSON.js extensions to allow date parsing/encoding</title><description>&lt;pre&gt;&lt;pre class="csharpcode"&gt;
&lt;span class="kwrd"&gt;if&lt;/span&gt; (JSON &amp;amp;&amp;amp; !JSON.parseWithDate) {
    &lt;span class="kwrd"&gt;var&lt;/span&gt; reISO = /^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}(?:\.\d*)?)Z$/;
    &lt;span class="kwrd"&gt;var&lt;/span&gt; reMsAjax = /^\/Date\((d|-|.*)\)[\/|\\]$/;
&amp;nbsp;
    JSON.parseWithDate = &lt;span class="kwrd"&gt;function&lt;/span&gt;(json) {
        &lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;
        &lt;span class="rem"&gt;/// parses a JSON string and turns ISO or MSAJAX date strings&lt;/span&gt;
        &lt;span class="rem"&gt;/// into native JS date objects&lt;/span&gt;
        &lt;span class="rem"&gt;/// &amp;lt;/summary&amp;gt;    &lt;/span&gt;
        &lt;span class="rem"&gt;/// &amp;lt;param name="json" type="var"&amp;gt;json with dates to parse&amp;lt;/param&amp;gt;        &lt;/span&gt;
        &lt;span class="rem"&gt;/// &amp;lt;/param&amp;gt;&lt;/span&gt;
        &lt;span class="rem"&gt;/// &amp;lt;returns type="value, array or object" /&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;try&lt;/span&gt; {
            &lt;span class="kwrd"&gt;var&lt;/span&gt; res = JSON.parse(json,
            &lt;span class="kwrd"&gt;function&lt;/span&gt;(key, value) {
&amp;nbsp;
                &lt;span class="kwrd"&gt;if&lt;/span&gt; (&lt;span class="kwrd"&gt;typeof&lt;/span&gt; value === &lt;span class="str"&gt;'string'&lt;/span&gt;) {
                    &lt;span class="kwrd"&gt;var&lt;/span&gt; a = reISO.exec(value);
                    &lt;span class="kwrd"&gt;if&lt;/span&gt; (a)
                        &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;new&lt;/span&gt; Date(Date.UTC(+a[1], +a[2] - 1, +a[3], +a[4], +a[5], +a[6]));
                    a = reMsAjax.exec(value);
                    &lt;span class="kwrd"&gt;if&lt;/span&gt; (a) {
                        &lt;span class="kwrd"&gt;var&lt;/span&gt; b = a[1].split(/[-+,.]/);
                        &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;new&lt;/span&gt; Date(b[0] ? +b[0] : 0 - +b[1]);
                    }
                }
                &lt;span class="kwrd"&gt;return&lt;/span&gt; value;
            });
            &lt;span class="kwrd"&gt;return&lt;/span&gt; res;
        } &lt;span class="kwrd"&gt;catch&lt;/span&gt; (e) {
            &lt;span class="rem"&gt;// orignal error thrown has no error message so rethrow with message&lt;/span&gt;
            &lt;span class="kwrd"&gt;throw&lt;/span&gt; &lt;span class="kwrd"&gt;new&lt;/span&gt; Error(&lt;span class="str"&gt;"JSON content could not be parsed"&lt;/span&gt;);
            &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;null&lt;/span&gt;;
        }
    };    
    JSON.stringifyWcf = &lt;span class="kwrd"&gt;function&lt;/span&gt;(json) {
        &lt;span class="kwrd"&gt;return&lt;/span&gt; JSON.stringify(json, &lt;span class="kwrd"&gt;function&lt;/span&gt;(key, value) {
            &lt;span class="kwrd"&gt;if&lt;/span&gt; (&lt;span class="kwrd"&gt;typeof&lt;/span&gt; value == &lt;span class="str"&gt;"string"&lt;/span&gt;) {
                &lt;span class="kwrd"&gt;var&lt;/span&gt; a = reISO.exec(value);
                &lt;span class="kwrd"&gt;if&lt;/span&gt; (a) {
                    &lt;span class="kwrd"&gt;var&lt;/span&gt; val = &lt;span class="str"&gt;'/Date('&lt;/span&gt; + &lt;span class="kwrd"&gt;new&lt;/span&gt; Date(Date.UTC(+a[1], +a[2] - 1, +a[3], +a[4], +a[5], +a[6])).getTime() + &lt;span class="str"&gt;')/'&lt;/span&gt;;
                    &lt;span class="kwrd"&gt;this&lt;/span&gt;[key] = val;
                    &lt;span class="kwrd"&gt;return&lt;/span&gt; val; 
                }
            }
            &lt;span class="kwrd"&gt;return&lt;/span&gt; value;
        })
    };
    JSON.dateStringToDate = &lt;span class="kwrd"&gt;function&lt;/span&gt;(dtString) {
        &lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;
        &lt;span class="rem"&gt;/// Converts a JSON ISO or MSAJAX string into a date object&lt;/span&gt;
        &lt;span class="rem"&gt;/// &amp;lt;/summary&amp;gt;    &lt;/span&gt;
        &lt;span class="rem"&gt;/// &amp;lt;param name="" type="var"&amp;gt;Date String&amp;lt;/param&amp;gt;&lt;/span&gt;
        &lt;span class="rem"&gt;/// &amp;lt;returns type="date or null if invalid" /&amp;gt; &lt;/span&gt;
        &lt;span class="kwrd"&gt;var&lt;/span&gt; a = reISO.exec(dtString);
        &lt;span class="kwrd"&gt;if&lt;/span&gt; (a)
            &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;new&lt;/span&gt; Date(Date.UTC(+a[1], +a[2] - 1, +a[3], +a[4], +a[5], +a[6]));
        a = reMsAjax.exec(dtString);
        &lt;span class="kwrd"&gt;if&lt;/span&gt; (a) {
            &lt;span class="kwrd"&gt;var&lt;/span&gt; b = a[1].split(/[-,.]/);
            &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;new&lt;/span&gt; Date(+b[0]);
        }
        &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;null&lt;/span&gt;;
    };
}
&lt;/pre&gt;&lt;/pre&gt;</description><pubDate>Tue, 15 Sep 2009 15:31:37 -0700</pubDate></item><item><guid isPermaLink="false">nqgvj3</guid><link>http://codepaste.net/nqgvj3</link><a10:author><a10:name>Rick Strahl</a10:name></a10:author><title>DataContract Serializer and ISO dates not working - feature request</title><description>&lt;pre&gt;&lt;pre class="csharpcode"&gt;
[TestClass]
&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; DateConversionTests
{
    &lt;span class="kwrd"&gt;public&lt;/span&gt; DateConversionTests()
    {
    }        
&amp;nbsp;
&amp;nbsp;
    [TestMethod]
    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; AjaxDate_IsoDate_DataContract_DeserializationTest()
    {
        &lt;span class="kwrd"&gt;string&lt;/span&gt; isodate = &lt;span class="str"&gt;"\"2009-09-14T08:22:11Z\""&lt;/span&gt;;
&amp;nbsp;
        &lt;span class="rem"&gt;// fails  - IDEALLY this should work to work with native JSON parsers&lt;/span&gt;
        DateTime date = (DateTime)FromJsonString(isodate, &lt;span class="kwrd"&gt;typeof&lt;/span&gt;(DateTime));
        Console.WriteLine(date);
    }
&amp;nbsp;
    [TestMethod]
    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; AjaxDate_IsoDate_JavaScriptSerializer_DeserializationTest()
    {
        &lt;span class="kwrd"&gt;string&lt;/span&gt; isodate = &lt;span class="str"&gt;"\"2009-09-14T08:22:11Z\""&lt;/span&gt;;
        JavaScriptSerializer ser = &lt;span class="kwrd"&gt;new&lt;/span&gt; JavaScriptSerializer();
&amp;nbsp;
        &lt;span class="rem"&gt;// works fine&lt;/span&gt;
        DateTime date = ser.Deserialize&amp;lt;DateTime&amp;gt;(isodate);
        Console.WriteLine(date);
    }
&amp;nbsp;
&amp;nbsp;
    [TestMethod]
    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; AjaxDate_MsDate_DataContract_DeserializationTest()
    {
        &lt;span class="kwrd"&gt;string&lt;/span&gt; msajaxdate = &lt;span class="str"&gt;"\"\\/Date(1252969200000-0700)\\/\""&lt;/span&gt;;
&amp;nbsp;
        &lt;span class="rem"&gt;// works - full MS Ajax Date&lt;/span&gt;
        DateTime date = (DateTime) FromJsonString(msajaxdate, &lt;span class="kwrd"&gt;typeof&lt;/span&gt;(DateTime));            
        Console.WriteLine(date);
    }
&amp;nbsp;
    [TestMethod]
    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; AjaxDate_MsDate_Simplified_DataContract_DeserializationTest()
    {
        &lt;span class="kwrd"&gt;string&lt;/span&gt; msajaxdate = &lt;span class="str"&gt;"\"/Date(1252969200000-0700)/\""&lt;/span&gt;;
&amp;nbsp;
        &lt;span class="rem"&gt;// Also works - surprisingly as it's effectively a complete different format&lt;/span&gt;
        DateTime date = (DateTime)FromJsonString(msajaxdate, &lt;span class="kwrd"&gt;typeof&lt;/span&gt;(DateTime));
        Console.WriteLine(date);
    }
&amp;nbsp;
    [TestMethod]
    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; AjaxDate_MsDate_Simplified_JavaScriptSerializer_DeserializationTest()
    {
        &lt;span class="kwrd"&gt;string&lt;/span&gt; msajaxdate = &lt;span class="str"&gt;"\"/Date(1252969200000-0700)/\""&lt;/span&gt;;
&amp;nbsp;
        JavaScriptSerializer ser = &lt;span class="kwrd"&gt;new&lt;/span&gt; JavaScriptSerializer();
&amp;nbsp;
        &lt;span class="rem"&gt;// doesn't work &lt;/span&gt;
        DateTime date = ser.Deserialize&amp;lt;DateTime&amp;gt;(msajaxdate);
        Console.WriteLine(date);
    }
&amp;nbsp;
&amp;nbsp;
   
&amp;nbsp;
    &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;object&lt;/span&gt; FromJsonString(&lt;span class="kwrd"&gt;string&lt;/span&gt; json, Type type)
    {
        MemoryStream ms = &lt;span class="kwrd"&gt;new&lt;/span&gt; MemoryStream(Encoding.Unicode.GetBytes(json));
        DataContractJsonSerializer ser = &lt;span class="kwrd"&gt;new&lt;/span&gt; DataContractJsonSerializer(type);
        &lt;span class="kwrd"&gt;object&lt;/span&gt; &lt;span class="kwrd"&gt;value&lt;/span&gt; = ser.ReadObject(ms);
        ms.Close();
&amp;nbsp;
        &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;value&lt;/span&gt;;
    }
&amp;nbsp;
    &lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;
    &lt;span class="rem"&gt;///Gets or sets the test context which provides&lt;/span&gt;
    &lt;span class="rem"&gt;///information about and functionality for the current test run.&lt;/span&gt;
    &lt;span class="rem"&gt;///&amp;lt;/summary&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;public&lt;/span&gt; TestContext TestContext
    {
        get
        {
            &lt;span class="kwrd"&gt;return&lt;/span&gt; testContextInstance;
        }
        set
        {
            testContextInstance = &lt;span class="kwrd"&gt;value&lt;/span&gt;;
        }
    }
}
&lt;/pre&gt;&lt;/pre&gt;</description><pubDate>Tue, 15 Sep 2009 12:46:38 -0700</pubDate></item><item><guid isPermaLink="false">dmf18r</guid><link>http://codepaste.net/dmf18r</link><a10:author><a10:name>Rick Strahl</a10:name></a10:author><title>CSS for image - should be inline but with width</title><description>&lt;pre&gt;&lt;pre class="csharpcode"&gt;
&lt;span class="html"&gt;.smallprogress,.smallprogressright
{&lt;/span&gt;
&lt;span class="html"&gt;    width: 16px;
    height: 16px;
    background-image: url(images/loading_small.gif);
    background-repeat: no-repeat;        
    display: inline-block;    
    xdisplay: none;    
}
.smallprogressright {&lt;/span&gt; &lt;span class="attr"&gt;float:&lt;/span&gt; right &lt;span class="html"&gt;}&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&lt;span class="rem"&gt;/*
Usage:
Some text. &amp;lt;span class="smallprogress"&amp;gt;&amp;lt;/span&amp;gt; 
*/&lt;/span&gt;
&lt;/pre&gt;&lt;/pre&gt;</description><pubDate>Mon, 14 Sep 2009 14:21:33 -0700</pubDate></item></channel></rss>