﻿<?xml version="1.0" encoding="utf-8"?><rss version="2.0"><channel><title>JoshuaFolkerts.com Web Log Syndication</title><link>http://www.JoshuaFolkerts.com</link><description>The lasted Weblogs for Joshua Folkerts</description><copyright>Copyright 2005 - 2006 JoshuaFolkerts.com. All rights reserved.</copyright><item><title>You Didn't Know This About Me Did You</title><description>I bet you didn't know that i was so in depth into politics now did you...  Please watch.  I know, it is hard to believe.&lt;br /&gt;
&lt;br /&gt;
&lt;object codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" height="304" width="384" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"&gt;
&lt;param NAME=movie VALUE="http://www.paltalk.com/marketing/media/vanksen/main.swf"&gt;
&lt;param NAME=quality VALUE=high&gt;
&lt;param NAME=flashvars VALUE="firstname=Joshua&amp;lastname=Folkerts&amp;urlfin=http%3A%2F%2Fwww.news3online.com%2Fspread.php"&gt;
&lt;param NAME="BGCOLOR" VALUE="#000000" &gt;
&lt;param NAME="allowScriptAccess" VALUE="always" &gt;&lt;EMBED src="http://www.paltalk.com/marketing/media/vanksen/main.swf" quality=high WIDTH="384" HEIGHT="304" ALIGN="" TYPE="application/x-shockwave-flash" FLASHVARS="firstname=Joshua&amp;lastname=Folkerts&amp;urlfin=http%3A%2F%2Fwww.news3online.com%2Fspread.php" PLUGINSPAGE="http://www.macromedia.com/go/getflashplayer" BGCOLOR="#000000" ALLOWSCRIPTACCESS="ALWAYS"&gt;&lt;/EMBED&gt;&lt;/object&gt;
</description><link>http://www.joshuafolkerts.com/Blog/Blogs.aspx?BlogID=28</link></item><item><title>Changing Themes Dynamically In Asp.net 2.0</title><description>Time after time i respond on the &lt;a href="http://forums.asp.net/" title="Visit Asp.net Forum" target="_blank"&gt;asp.net&lt;/a&gt; with questions in regards to changing a site's theme dynamically.  It is really quite simple to do but there are some steps that need to be taken in order to make it function properly.&lt;br /&gt;
&lt;br /&gt;
What some don't realize is that a page theme can only be set in the Page_PreInit.  Meaning that the page will only grab the theme before all controls and page items are rendered.  If you do it in the page load, as most of you might have known, will cause errors.  So in the following example, i will code up some site that demonstrates how to change a pages theme dynmaically in use with the profile provider.  You may set the pages theme in a session variable or a cookie depending on your preference.  So lets take a look at how we proceed in doing his simple task.&lt;br /&gt;
&lt;br /&gt;
First we are going to create a new website and add the themes folder to the site by: &lt;br /&gt;
&lt;ol&gt;
    &lt;li&gt;Right Click on Website Folder &lt;/li&gt;
    &lt;li&gt;Add ASP.Net Folder &lt;/li&gt;
    &lt;li&gt;SELECT -&gt;Theme &lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Do this twice and add how ever many themes you wish to have.&lt;br /&gt;
Once we have 2 or how ever many, what we are going to do is add a new &lt;strong&gt;Class File&lt;/strong&gt; to Our Application. Let go ahead and name it BASEPAGE.  Our BASEPAGE is going to handle the Pre-Init for our Theme settings for each page.  Once we have created our Base Page, we need to modify where this page derives from.  We are going to set this to Page.  Page is part of the System.Web.UI Namespace.  One thing to remember is that when you derive a page from lets say our Base Page, this will be handled first, then our normal page will then render.  So for our Base Page, the code should look as follows.&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-size: 12px"&gt;&lt;strong&gt;Ref 1&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
BasePage.cs (Located In App_Code Folder by Default)&lt;br /&gt;
-----------------------&lt;br /&gt;
using System; &lt;br /&gt;
using System.Data; &lt;br /&gt;
using System.Configuration; &lt;br /&gt;
using System.Web; &lt;br /&gt;
using System.Web.Security; &lt;br /&gt;
using System.Web.UI; &lt;br /&gt;
using System.Web.UI.HtmlControls; &lt;br /&gt;
using System.Web.UI.WebControls; &lt;br /&gt;
using System.Web.UI.WebControls.WebParts; &lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: #ffcc00"&gt;&lt;span style="color: #3333ff"&gt;public class BasePage : Page  // Note that BasePage Derives from System.Web.UI.Page&lt;/span&gt;&lt;br /&gt;
&lt;/span&gt;{ &lt;br /&gt;
    protected void Page_PreInit(object sender, EventArgs e) &lt;br /&gt;
    { &lt;br /&gt;
        ProfileCommon pc = HttpContext.Current.Profile as ProfileCommon; &lt;br /&gt;
        Page.Theme = pc.Themes; &lt;br /&gt;
&lt;br /&gt;
        &lt;span style="color: #ff0000"&gt;Page.Theme = Session["UserTheme"];  // Use this if you choose not to use profiles&lt;br /&gt;
&lt;/span&gt;    } &lt;br /&gt;
} &lt;br /&gt;
&lt;br /&gt;
Once we have our BASEPAGE Set up we can move to our Page that will handle the themes.  I chose to use the Master page to use for the user to select which theme they want to use.&lt;br /&gt;
&lt;br /&gt;
So lets add a masterpage.  Remember that we need to derive Default.aspx and all subsequent pages from the Masterpage.  This is pretty self explanitory so I won't go into how to do that.&lt;br /&gt;
&lt;br /&gt;
Okay, Now that we have that, lets go into to masterpage.master and drop a dropdown list onto the form.  This dropdownlist will be used to let the user select which theme they chose to use.  We are going to create a simple DataTable to bind the Dropdownlist too that way, you will not have to manually add a new theme when one is created.  So.  once we dropped the dropdownlist on the page, lets go into the code behind and add some code.&lt;br /&gt;
&lt;br /&gt;
Before the Page_Load Event we are going to want to import the Systems.IO namespace so we can hook up with the themes directory and grab all the themes that are available to us.  &lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;&lt;span style="font-size: 12px"&gt;Ref 2&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;
using System.IO;&lt;br /&gt;
&lt;br /&gt;
So now that we have that imported lets Create a DataTable to store our Themes in.&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-size: 12px"&gt;&lt;strong&gt;Ref 3&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
private DataTable dtThemes() &lt;br /&gt;
{ &lt;br /&gt;
    DataTable dt = new DataTable(); &lt;br /&gt;
    try &lt;br /&gt;
    { &lt;br /&gt;
        dt.Clear(); &lt;br /&gt;
        dt.Columns.Add("Theme", typeof(String)); &lt;br /&gt;
        DirectoryInfo dInfo = new DirectoryInfo(Server.MapPath("App_Themes")); &lt;br /&gt;
        DirectoryInfo[] dArrInfo = dInfo.GetDirectories(); &lt;br /&gt;
        &lt;br /&gt;
        foreach (DirectoryInfo sDirectory in dArrInfo) &lt;br /&gt;
        { &lt;br /&gt;
            DataRow row = dt.NewRow(); &lt;br /&gt;
            row["Theme"] = sDirectory.Name; &lt;br /&gt;
            dt.Rows.Add(row); &lt;br /&gt;
        } &lt;br /&gt;
    } &lt;br /&gt;
    catch (Exception ex) &lt;br /&gt;
    { &lt;br /&gt;
    } &lt;br /&gt;
    return dt; &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
So what we just accomplished was we created a Datatable to and mapped our Themes folder to the DIRECTORYINFO class so it will allow us to iterate through the folders.  For each file in the directory, it will add the foldername to the datatable.  At this point, if we run our application, it will not display anything since we haven't tied our datatable to the dropdown.  So, let just go ahead and do that.&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;&lt;span style="font-size: 12px"&gt;Ref 4&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;
protected void Page_Load(object sender, EventArgs e) &lt;br /&gt;
{ &lt;br /&gt;
    if (!IsPostBack) &lt;br /&gt;
    { &lt;br /&gt;
        ddlTheme.DataSource = dtThemes(); &lt;br /&gt;
        ddlTheme.DataBind(); &lt;br /&gt;
        ddlTheme.SelectedValue = Profile.Themes;&lt;br /&gt;
        &lt;span style="color: #ff0000"&gt;ddlTheme.SelectedValue = Session["UserTheme"].ToString();  // If using Session For Themes&lt;/span&gt;&lt;br /&gt;
    } &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
Okay, lets take a look at this.  On the page_load.  If the page is not posting back, it is going to reference the dtThemes() function and fills the datatable.  We set the dropdownlist's datasource to the datatable and binds the data to fill the dropdownlist.  Once we have the dropdown list filled, we set the selected value to the session or profile or cookie, whichever you choose.&lt;br /&gt;
&lt;br /&gt;
We will Now need to add a New File To the application Called Global.asax.  Once we have that added, Add the following Line of Code in the Session_Start Section.  Use the default theme that you are going to choose.  Which reminds me that in the web.config file, you must set a default page theme. &lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;&lt;span style="font-size: 12px"&gt;Ref 5&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;
Global.asax&lt;br /&gt;
---------------------&lt;br /&gt;
&lt;span style="color: #ff0000"&gt;void Session_Start(object sender, EventArgs e) &lt;br /&gt;
{ &lt;br /&gt;
    Session["UserTheme"] = "Blue";  // Only neededif using session&lt;br /&gt;
}&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
web.config&lt;br /&gt;
---------------&lt;br /&gt;
&lt;pages theme="Blue"&gt;&lt;br /&gt;
&lt;br /&gt;
Now that we have the sections added to the web.config file and the global.asax file, we need to program the dropdownlist's selected index changed event argument.  What we need to do is add the following code to the dropdownlist control in the master page and then handle the event of the dropdownlist.  so in its entirety, here is the code for the dropdown list on the master page and the event code for the selectedindexchange of the dropdownlist&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;&lt;span style="font-size: 12px"&gt;Ref 6&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;
Masterpage File&lt;br /&gt;
-------------------------&lt;br /&gt;
&lt;asp:DropDownList runat="server" ID="ddlTheme" DataTextField="Theme" OnSelectedIndexChanged="ddlTheme_OnSelectedIndexChanged" AutoPostBack="true"/&gt;&lt;br /&gt;
&lt;br /&gt;
Code Behind of Master Page&lt;br /&gt;
----------------------------------&lt;br /&gt;
protected void ddlTheme_OnSelectedIndexChanged(object sender, EventArgs e) &lt;br /&gt;
{ &lt;br /&gt;
    Profile.Themes = ddlTheme.SelectedValue; &lt;br /&gt;
    &lt;span style="color: #ff0000"&gt;Session["UserTheme"] = ddlTheme.SelectedValue;  //for session based&lt;/span&gt;&lt;br /&gt;
    Server.Transfer(Request.FilePath); &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
So, now we are almost done.  The last step is to derive the default.aspx page from the BasePage.  The Following line of code is all that we need to wrap this project up.&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;&lt;span style="font-size: 12px"&gt;Ref 7&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;
Complete Default.aspx.cs Code&lt;br /&gt;
----------------------------------&lt;br /&gt;
public partial class _Default : &lt;span style="color: #33cc00"&gt;BasePage   &lt;- Default now derives from Base Page&lt;br /&gt;
&lt;/span&gt;{ &lt;br /&gt;
    protected void Page_Load(object sender, EventArgs e) &lt;br /&gt;
    { &lt;br /&gt;
        Label1.Text = Session["UserTheme"].ToString(); //Just a check to see if it is working&lt;br /&gt;
    } &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
If  you found this article difficult to understand, please download the sample app in which I used to create this tutorial.&lt;br /&gt;
&lt;br /&gt;
You can &lt;a href="/App_Themes/JF/UploadedDocs/DynamicSiteTheme/DynamicSiteTheme.zip" title="Create Dynamic Site Themes In Asp.net 2.0"&gt;download it HERE&lt;/a&gt;&lt;/p&gt;
</description><link>http://www.joshuafolkerts.com/Blog/Blogs.aspx?BlogID=27</link></item><item><title>Create Thumbnails With GDI+ And FileUpload Control</title><description>I have read alot of articles that discuss creating thumbnails and it seems like alot of these articles are using third party components to create thumbnails while uploading files.  To think that this is a difficult chore is not as hard as you think it might be.  The following article will set you through setting up your web form to create a thumbnail of your size choice.  For those who are unfamiliar with GDI, GDI is responsible for tasks such as drawing lines and curves, rendering fonts and handling palettes.  We are going to put this subsystem together with ASP.NET 2.0 and render graphics(thumbnails) for use on your site.  You can bypass the tutorial by &lt;a href="http://www.joshuafolkerts.com/App_Themes/JF/UploadedDocs/ThumbNailWithGDI/CreateThumbWithGDI.zip" title="Download Code For Creating Thumbnail With GDI"&gt;&lt;strong&gt;&lt;span style="font-size: 10px; color: #11a6b5"&gt;Downloading the Code HERE&lt;/span&gt;&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
To start, we are going to create a new webform and drag a FileUpload Control from the visual studio toolbox to the webform and place a button control to the right of the upload control. &lt;br /&gt;
&lt;strong&gt;&lt;span style="font-size: 12px"&gt;Ref 1&lt;br /&gt;
&lt;/span&gt;&lt;/strong&gt;&lt;img alt="" style="border-left-color: #333399; border-bottom-color: #333399; width: 332px; border-top-color: #333399; height: 48px; border-right-color: #333399" src="http://www.joshuafolkerts.com/App_Themes/JF/UploadedFiles/FileUploadGDIImages/FileUploadAndButton.gif" border="1" /&gt;&lt;br /&gt;
&lt;br /&gt;
As you noticed, I changed the text of the button to "Upload" in which you can choose your choice and preference of words.&lt;br /&gt;
&lt;br /&gt;
Now that we have the form setup, why don't we just add a label under the form to show the status of our upload.  This will generate a generic message such as "File uploaded successfull..."&lt;br /&gt;
&lt;br /&gt;
Double click on the upload button to create an onclick event for the upload button or code it in manually.  Totally up to you.  This will create the onclick event for the button in which we are going to first check to see if the file exist, then upload the file, and last, use the uploaded file to generate the thumbnail and dispose of the uploaded file or keep it as an original. &lt;br /&gt;
&lt;br /&gt;
Before we start programming our uploading function, we need to import some namespaces to utilize the GDI system.  Namespaces needed for our uploading are as follows:&lt;br /&gt;
&lt;strong&gt;&lt;span style="font-size: 13px"&gt;&lt;br /&gt;
Ref 2&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;
&lt;ol&gt;
    &lt;li&gt;&lt;span style="color: #000000"&gt;using System.IO;&lt;/span&gt; &lt;/li&gt;
    &lt;li&gt;&lt;span style="color: #000000"&gt;using System.Drawing;&lt;/span&gt; &lt;/li&gt;
    &lt;li&gt;&lt;span style="color: #000000"&gt;using System.Drawing.Imaging;&lt;/span&gt; &lt;/li&gt;
    &lt;li&gt;&lt;span style="color: #000000"&gt;using System.Drawing.Drawing2D&lt;/span&gt; &lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Now that we have our namespaces imported for our app, lets get into the bread and butter of our app.&lt;br /&gt;
Under our click event of our button " &lt;span style="font-size: 10px"&gt;&lt;span style="font-size: 10px; color: #0000ff"&gt;&lt;span style="font-size: 10px; color: #0000ff"&gt;protected&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 10px"&gt; &lt;/span&gt;&lt;span style="font-size: 10px; color: #0000ff"&gt;&lt;span style="font-size: 10px; color: #0000ff"&gt;void&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 10px"&gt; btnUploadButton_Click(&lt;/span&gt;&lt;span style="font-size: 10px; color: #0000ff"&gt;&lt;span style="font-size: 10px; color: #0000ff"&gt;object&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 10px"&gt; sender, &lt;/span&gt;&lt;span style="font-size: 10px; color: #2b91af"&gt;&lt;span style="font-size: 10px; color: #2b91af"&gt;EventArgs&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 13px"&gt;&lt;span style="font-size: 10px"&gt; e) "&lt;br /&gt;
&lt;span style="color: #ff0000"&gt;NOTE: btnUploadButton is the id of my upload button for those who might be confused by the naming convention.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
first we are going to start byt checking to see if the upload control has a file to be uploaded.  This is very simple and is as follows:&lt;br /&gt;
&lt;span style="font-size: 13px"&gt;&lt;span style="font-size: 10px"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 13px"&gt;&lt;span style="font-size: 10px"&gt;&lt;br /&gt;
&lt;span style="color: #000000"&gt;if(FileUpload1.HasFile)&lt;br /&gt;
{&lt;br /&gt;
      Code here.....&lt;br /&gt;
}&lt;br /&gt;
else&lt;br /&gt;
{&lt;br /&gt;
      lblStatus.Text = "Please Specify A File To Be Uploaded!";&lt;br /&gt;
}&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Once we check to see if it has a file and is true, then we can proceed to continue with our code or display message in our label stating that no file exists or has been selected.  Once we have that, we are going to do some checking to verify that the file being uploaded is an Image file.  What the following code does is grabs the file name of the file being uploaded and searches the last index of ".".  After the . it checks to see if it matches the files that we stated to be allowed to be uploaded.&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;&lt;span style="font-size: 12px"&gt;Ref 3&lt;br /&gt;
&lt;/span&gt;&lt;/strong&gt;&lt;span style="color: #000000"&gt;protected void btnUploadButton_Click(object sender, EventArgs e) &lt;br /&gt;
{ &lt;br /&gt;
    if (FileUpload1.HasFile) &lt;br /&gt;
    {&lt;br /&gt;
        &lt;span style="color: #ff6600"&gt;String savePath = Server.MapPath("Images/");&lt;/span&gt; &lt;br /&gt;
        string fileExt = FileUpload1.FileName; &lt;br /&gt;
        int extIndex = fileExt.LastIndexOf("."); &lt;br /&gt;
        &lt;br /&gt;
        if (extIndex != -1) &lt;br /&gt;
        { &lt;br /&gt;
            fileExt = (fileExt.Substring(extIndex + 1)).ToLower(); &lt;br /&gt;
            &lt;br /&gt;
            if (fileExt == "jpg" || fileExt == "gif" || fileExt == "png" || fileExt == "tiff") &lt;br /&gt;
            { &lt;br /&gt;
                &lt;span style="color: #009900"&gt;FileUpload1.SaveAs(savePath + FileUpload1.FileName);&lt;br /&gt;
&lt;/span&gt;            } &lt;br /&gt;
            else &lt;br /&gt;
            { &lt;br /&gt;
                lblStatus.Text = "Files of .jpg, .gif, .png, .tiff Are Only Accepted"; &lt;br /&gt;
            } &lt;br /&gt;
        } &lt;br /&gt;
        else &lt;br /&gt;
        { &lt;br /&gt;
            lblStatus.Text = "Incorrect File Format"; &lt;br /&gt;
        } &lt;br /&gt;
    } &lt;br /&gt;
}&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #ff0000"&gt;NOTE : Notice the code in orange.  This is where i specified the save path of the file.  The text in green is the actual code used for saving the image to the directory.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Now that we have the file uploaded successfully, we are going to create a sub-function to do our GDI Thumbnailing.  This will give us complete control over how we want our image to be Thumbnailed. So we create a function called "GenerateThumb" that accepts three arguments.  Those arguments are (String FilePath, String fileName, int Width) so it will look something like this&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;&lt;span style="font-size: 12px"&gt;Ref 4&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;
&lt;span style="color: #000000"&gt;private bool GenerateThumb(String FilePath, String fileName, int Width)&lt;br /&gt;
{&lt;br /&gt;
    Code will be here...&lt;br /&gt;
}&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
So now we are going to call this function right after we save the original file.  So it will look something along the lines of this.&lt;br /&gt;
&lt;span style="font-size: 10px; color: #000000"&gt;    FileUpload1.SaveAs(savePath + FileUpload1.FileName);&lt;br /&gt;
    &lt;span style="color: #006600"&gt;GenerateThumb(savePath+FileUpload1.FileName, &lt;span style="font-size: 10px; color: #006600"&gt;FileUpload1.FileName,&lt;/span&gt; 100);&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
So what we are doing is passing the filepath to the function to create a &lt;span style="text-decoration: underline"&gt;Bitmap&lt;/span&gt; object so we can manipulate it at will.  This is essential to pass in the correct path so it can use the original image that we just uploaded so it has a BASE to work from.&lt;br /&gt;
&lt;br /&gt;
So lets get to the more complex portion of this.&lt;br /&gt;
We are going to create a Bitmap object from the file that we uploaded and set the width and height variables of the bitmap so we can do some calculation so our image does not become distorted and or goal is to create a prefectly resized thumbnail 100 pixels width or 100 pixels high depending on which size is larger.  We do this so the image remains in correct proportion.  This can get tricky so please view this code to understand what we are accomplishing.&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;&lt;span style="font-size: 12px"&gt;Ref 5&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;
&lt;span style="color: #000000"&gt;int ThumbWidth = 0; &lt;br /&gt;
int ThumbHeight = 0; &lt;br /&gt;
&lt;br /&gt;
Bitmap origImg = new Bitmap(FilePath); &lt;br /&gt;
&lt;br /&gt;
if (origImg.Height &gt; origImg.Width) &lt;br /&gt;
{ &lt;br /&gt;
    ThumbWidth = (int)(origImg.Width * ((float)thumbSize / (float)origImg.Height)); &lt;br /&gt;
    ThumbHeight = thumbSize; &lt;br /&gt;
} &lt;br /&gt;
else &lt;br /&gt;
{ &lt;br /&gt;
    ThumbWidth = thumbSize; &lt;br /&gt;
    ThumbHeight = (int)(origImg.Height * ((float)thumbSize / (float)origImg.Width)); &lt;br /&gt;
}&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
So depending on which on is bigger, it uses that to set the sizes of the canvas in which we will show you in just a bit.  So now we have the iszes, we are going to create a new filename and the path in which to save the New thumbnail.  There are a million ways to set the filename but for my example, I created a new function to replace the extension and just return the filename without the extension.  I also through a little checker for blank(whitespaces) in the file name and replaces the whitespace with an UNDERSCORE.&lt;br /&gt;
Function is as follows.:&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;&lt;span style="font-size: 12px"&gt;Ref 6&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;
&lt;span style="color: #000000"&gt;private static String replaceFileExtension(string CheckExtention) &lt;br /&gt;
{ &lt;br /&gt;
    CheckExtention = CheckExtention.Replace(".jpg", ""); &lt;br /&gt;
    CheckExtention = CheckExtention.Replace(".gif", ""); &lt;br /&gt;
    CheckExtention = CheckExtention.Replace(".png", ""); &lt;br /&gt;
    CheckExtention = CheckExtention.Replace(".tiff", ""); &lt;br /&gt;
    CheckExtention = CheckExtention.Replace(".tif", ""); &lt;br /&gt;
    CheckExtention = CheckExtention.Replace(".jpeg", ""); &lt;br /&gt;
    CheckExtention = CheckExtention.Replace(".pdf", ""); &lt;br /&gt;
    CheckExtention = CheckExtention.Replace(".eps", ""); &lt;br /&gt;
    CheckExtention = CheckExtention.Replace(".xls", ""); &lt;br /&gt;
    CheckExtention = CheckExtention.Replace(".doc", ""); &lt;br /&gt;
    CheckExtention = CheckExtention.Replace(".mdf", ""); &lt;br /&gt;
    CheckExtention = CheckExtention.Replace(".wps", ""); &lt;br /&gt;
    CheckExtention = CheckExtention.Replace(".JPG", ""); &lt;br /&gt;
    CheckExtention = CheckExtention.Replace(".GIF", ""); &lt;br /&gt;
    CheckExtention = CheckExtention.Replace(".pPNG", ""); &lt;br /&gt;
    CheckExtention = CheckExtention.Replace(".TIFF", ""); &lt;br /&gt;
    CheckExtention = CheckExtention.Replace(".TIF", ""); &lt;br /&gt;
    CheckExtention = CheckExtention.Replace(".JPEG", ""); &lt;br /&gt;
    CheckExtention = CheckExtention.Replace(".PDF", ""); &lt;br /&gt;
    CheckExtention = CheckExtention.Replace(".EPS", ""); &lt;br /&gt;
    CheckExtention = CheckExtention.Replace(".XLS", ""); &lt;br /&gt;
    CheckExtention = CheckExtention.Replace(".DOC", ""); &lt;br /&gt;
    CheckExtention = CheckExtention.Replace(".MDF", ""); &lt;br /&gt;
    CheckExtention = CheckExtention.Replace(".WPS", ""); &lt;br /&gt;
    //Not an extension but removes whitespaces in the &lt;br /&gt;
    //file name and replaces it with and _! &lt;br /&gt;
    CheckExtention = CheckExtention.Replace(" ", "_"); &lt;br /&gt;
    return CheckExtention; &lt;br /&gt;
}&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
So to put this all in play, (Ref 5) sets the new size of the Thumbnail and now we are going to create the new filename and path to save the thumbnail too.&lt;br /&gt;
so after the IF statement we type&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: #000000"&gt;String newSavePath = Server.MapPath("Images/" + replaceFileExtension(FileUpload1.FileName) + "_thumb.jpg");&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
To continue, we are going to create a new Bitmap object that will be our destination bitmap image.  This will be used to set our resolution and size of the new image from the formula we stated in Ref 5.  &lt;br /&gt;
&lt;br /&gt;
Code is as follows:&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;&lt;span style="font-size: 12px"&gt;Ref 7&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;
&lt;span style="color: #000000"&gt;Bitmap dstImg = new Bitmap(ThumbWidth, ThumbHeight); &lt;br /&gt;
dstImg.SetResolution(72, 72);&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Now we need to create a graphics object so we can make the Image look "Pretty".  Meaning we set the quality, interpolation, smoothing ect.  Without this, your image will take the pixelated effect and that is not what we are striving for.  So the following piece of code will create a graphics object from the bitmap we created in Ref 7 and set the appropriate modes.  We will also draw the image From the original uploaded image to the canvas with coordinates of 0,0, thumbwidth,thumbheight.  Remember, those come from the formula up above.  once we draw the image, we dispose the image to remove it from memory.&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;&lt;span style="font-size: 12px"&gt;Ref 8&lt;/span&gt;&lt;/strong&gt; &lt;br /&gt;
&lt;span style="color: #000000"&gt;Graphics g = Graphics.FromImage(dstImg); &lt;br /&gt;
g.InterpolationMode = InterpolationMode.HighQualityBicubic; &lt;br /&gt;
g.SmoothingMode = SmoothingMode.HighQuality; &lt;br /&gt;
g.PixelOffsetMode = PixelOffsetMode.HighQuality; &lt;br /&gt;
g.CompositingQuality = CompositingQuality.HighQuality; &lt;br /&gt;
&lt;br /&gt;
// Resize the original to the thumb width and height &lt;br /&gt;
g.DrawImage(origImg, 0, 0, ThumbWidth, ThumbHeight); &lt;br /&gt;
g.Dispose();&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Last but not least, we set the encoding to tell it what kind of image we want to save it as and the compression of the image.  By compression, i mean, what quality is the thumb going to be.  We will use 100% compression for this example.  &lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;&lt;span style="font-size: 12px"&gt;Ref 9&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;
&lt;span style="color: #000000"&gt;EncoderParameters encoderParameters = new EncoderParameters(1); &lt;br /&gt;
encoderParameters.Param[0] = new EncoderParameter(System.Drawing.Imaging.Encoder.Compression, 100); // 80% Compression &lt;br /&gt;
dstImg.Save(newSavePath, ImageCodecInfo.GetImageEncoders()[1], encoderParameters); // jpg format &lt;br /&gt;
dstImg.Dispose(); &lt;br /&gt;
origImg.Dispose();&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
As seen above.  We save the new image, dispose the original image and the destination image.&lt;br /&gt;
&lt;br /&gt;
That concludes the tutorial on how to create Thumbnail images with GDI.  Pretty simple.....&lt;br /&gt;
&lt;br /&gt;
ENJOY&lt;br /&gt;
&lt;br /&gt;
Joshua Folkerts&lt;br /&gt;
&lt;br /&gt;
&lt;a href="/App_Themes/JF/UploadedDocs/ThumbNailWithGDI/CreateThumbWithGDI.zip" title="Download Code For Creating Thumbnail With GDI"&gt;&lt;strong&gt;Download Code HERE&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
</description><link>http://www.joshuafolkerts.com/Blog/Blogs.aspx?BlogID=25</link></item><item><title>Updates For JoshuaFolkerts.com</title><description>As some of you frequent visiters already know, JoshuaFolkerts.com has taken on a new look with some added functionality.  Not that it matters to you but for some of you that might ponder the reason for the change, I thought it would be good to update the site to use some of the technologies that I work with on a daily basis.  &lt;br /&gt;
&lt;br /&gt;
Some of the features that I have added is an ajax &lt;a href="/PhotoAlbum/Albums.aspx" title="View My Online Ajax Photo Gallery"&gt;Photo Gallery&lt;/a&gt; that is built on top of the Ajax platform.  I have converted my blog over to the n-tier technology which you I have noticed has sped up the access time to the individual items.  I also have taken all the demos for the applications under the demos / downloads section for the time being until i get some fo the bugs worked out in them.  I apologize to most of you for this because right now, I don't have time to incorperate all the needs some have wished in the application and fix some of the bugs.  So to save the headaches, i have decided to take them down for the time being.&lt;br /&gt;
&lt;br /&gt;
So, on the other hand, I will continue to use this site like i always do, to explore new and innovated ways to make things work alittle more effeciently and to add alittle more visual asthetics to it.  &lt;br /&gt;
&lt;br /&gt;
NOTE : You still have the ability to download th applications, just not demo them first.  The current demos are fully functional but there might be some bugs that i haven't fixed.  The bugs are mostly due to situations and setups in other viewers enviroments.&lt;br /&gt;
&lt;br /&gt;
Joshua Folkerts. 
</description><link>http://www.joshuafolkerts.com/Blog/Blogs.aspx?BlogID=24</link></item><item><title>A New Version of JFCalendar</title><description>

&lt;div&gt;I am proud to annouce a new version of the JFCalendar.  Built entirely in C# and uses N-Tier.  Complete Strongly Typed Data Access for easy modifications.  Currently, The new release is under the Demos / Downloads section of site but I would definately love to hear your input on it.&lt;/div&gt;

&lt;div&gt; &lt;/div&gt;

&lt;div&gt;If you find any bugs or problems with the Calendar, please feel free to let me know.  Thanks.&lt;/div&gt;

&lt;div&gt; &lt;/div&gt;

&lt;div&gt;Joshua&lt;/div&gt;</description><link>http://www.joshuafolkerts.com/Blog/Blogs.aspx?BlogID=23</link></item><item><title>How Not To Get Punched</title><description>

&lt;div&gt;I ran across this Article By Rob Walling.  Very Interesting.  Read Below 
&lt;hr /&gt;
	&lt;/div&gt;

&lt;div&gt; &lt;/div&gt;

&lt;div&gt;There comes a point in every person’s career when we have to offer criticism of someone else’s work. For software developers and managers this can be especially difficult since most programmers view the software they write as an extension of themselves, and take criticism of that software very personally.&lt;/div&gt;

&lt;p&gt;We all know how to criticize, but the question is how to criticize &lt;em&gt;well&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Be Specific&lt;/strong&gt;&lt;br /&gt;
	The #1 rule of good criticism is &lt;em&gt;be specific.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;In &lt;a title="Freaknomics" href="http://www.amazon.com/gp/redirect.html?ie=UTF8&amp;location=http%3A%2F%2Fwww.amazon.com%2FFreakonomics-Economist-Explores-Hidden-Everything%2Fdp%2F006073132X%2Fsr%3D8-1%2Fqid%3D1159406044%2Fref%3Dpd%5Fbbs%5F1%3Fie%3DUTF8%26s%3Dbooks&amp;tag=softwarbyrob-20&amp;linkCode=ur2&amp;camp=1789&amp;creative=9325" target="blank_" modo="false"&gt;Freaknomics&lt;/a&gt;, Steven D. Levitt examined phrases in real estate listings that had a positive correlation on sale price (meaning a higher sale price), and ones that had a negative correlation (lower sale price). The results were as follows:&lt;/p&gt;

&lt;p&gt;&lt;span style="TEXT-DECORATION: underline"&gt;Higher Sale Price&lt;/span&gt;&lt;br /&gt;
	granite&lt;br /&gt;
	state of the art&lt;br /&gt;
	corian&lt;br /&gt;
	maple&lt;br /&gt;
	gourmet&lt;br /&gt;
	new&lt;br /&gt;
	move in condition&lt;/p&gt;

&lt;p&gt;&lt;span style="TEXT-DECORATION: underline"&gt;Lower Sale Price&lt;/span&gt;&lt;br /&gt;
	well maintained&lt;br /&gt;
	fantastic&lt;br /&gt;
	spacious&lt;br /&gt;
	charming&lt;br /&gt;
	!&lt;br /&gt;
	great neighborhood&lt;br /&gt;
	wonderful&lt;br /&gt;
	immaculate&lt;/p&gt;

&lt;p&gt;What you’ll notice is that higher sale prices resulted from being more specific. Tangible, real things like granite, corian, maple, new, outweigh ambiguous, possibly made-up things like fantastic, charming and wonderful.&lt;/p&gt;

&lt;p&gt;And so it is with criticism. Telling someone their code is “total crap” is not helpful. Telling them they misspelled two variable names, have several place where they’ve repeated code, and they need error handling in all of their methods is much more helpful. It not only allows them to improve their current code, but perhaps it will help them out in the future, as well. They still may get mad, but that’s up to them.&lt;/p&gt;

&lt;p&gt;It certainly takes more time to itemize mistakes, but it’s worth it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Criticize the Code, Not the Person&lt;/strong&gt;&lt;br /&gt;
	If someone writes crappy code, talk about the code, not about the person’s &lt;em&gt;ability&lt;/em&gt; to code. If someone doesn’t meet a deadline, talk about how that affected you and what needs to happen in the future, don’t talk about how the person is a complete slacker (at least not the first time you discuss it). Doing so will help keep the conversation less personal.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Be Constructive&lt;/strong&gt;&lt;br /&gt;
	Without much effort at all I can give you a list of negative things about Los Angeles: traffic, smog, too many people, and a distinct lack of trees.&lt;/p&gt;

&lt;p&gt;I could also give you a list of bad things about the internet: spam, viruses, poorly-designed websites, and pornography. Just because I can point out a ton of negative things doesn’t mean that the internet is not worth your time, and doesn’t mean you shouldn’t live in L.A. For all the negatives there are &lt;em&gt;tons&lt;/em&gt; of positives to outweigh them, at least for the 10 million people who live in L.A. County, or the 1 billion people on the internet.&lt;/p&gt;

&lt;p&gt;It’s easy to be negative. It’s easy to come into a situation and complain. It’s easy to point out the flaws in everything (have you ever read the comments on Digg or Slashdot?). If you don’t have a suggested solution in mind it’s going to be difficult for people to respect your opinion. Someone who complains often will be ignored rather quickly.&lt;/p&gt;

&lt;p&gt;Constructive critisism is helpful; venting just pisses people off. Before you criticize something stop to think if it really matters to you and needs to be improved, and make sure you’re talking to the person who can do something about it.&lt;/p&gt;</description><link>http://www.joshuafolkerts.com/Blog/Blogs.aspx?BlogID=22</link></item><item><title>New JF Calendar</title><description>

&lt;div&gt;Well, I just wanted to drop a line and let you all know that the new JF Calendar is out on the site and ready to download.  This new version is written in c# and soon I will post a VB version as well.  &lt;/div&gt;

&lt;div&gt; &lt;/div&gt;

&lt;div&gt;So far there has been a total of 6,156 downloads of the calendar and hope that it continues to climb.  I do want to hear the feed back of the calendar and any other options that you want to be available with the calendar.  &lt;/div&gt;

&lt;div&gt; &lt;/div&gt;

&lt;div&gt;Please visit the &lt;a title="Joshua Folkerts.com Demos" href="Demos/Demos.aspx"&gt;Demos / Downloads&lt;/a&gt; section to view the online demo and you will also be able to download it for FREE.........&lt;/div&gt;

&lt;div&gt; &lt;/div&gt;

&lt;div&gt;Joshua Folkerts&lt;/div&gt;</description><link>http://www.joshuafolkerts.com/Blog/Blogs.aspx?BlogID=20</link></item><item><title>A Long Absence</title><description>

&lt;div&gt;Over the past few months I have been away endevoring on new things happening in my current career.  Not alot really has change but I have taken a new position with a company located here in South Dakota.  I really haven't had the time to work on any new / or current projects for joshuafolkerts.com but as things are slowing down around here I will be tending to developing new small software packages for all of you to use.  &lt;/div&gt;

&lt;div&gt; &lt;/div&gt;

&lt;div&gt;As most of you are aware of, with the current software demos on this site, the database is giving me fits.  I intend to correct those in the next couple of days and get things back to normal.  You may have also noticed that the site has change drastically.  I currently restructured my site to help integrate new technologies and the current links have change url wise.  I do apologize for this. &lt;/div&gt;

&lt;div&gt; &lt;/div&gt;

&lt;div&gt;I have been working on a pretty sweet 3.0 silverlight media player and silverlight photo album.  Currently it is under development and intend to lauch those demos and downloads in the latter part of October.  &lt;/div&gt;

&lt;div&gt; &lt;/div&gt;

&lt;div&gt;Well, if you have any questions, please don't hesitate to &lt;a title="Contact Joshua Folkerts" href="Contact.aspx"&gt;contact me&lt;/a&gt;.&lt;/div&gt;

&lt;div&gt; &lt;/div&gt;

&lt;div&gt;Best Regards&lt;/div&gt;</description><link>http://www.joshuafolkerts.com/Blog/Blogs.aspx?BlogID=19</link></item><item><title>So you want a Dynamic AJAX POP-UP MODAL</title><description>

&lt;div&gt;Modals are a slick easy way to display data, error messages, user input messages, or html, depending on what you need, modals are a nice, clean way to do all the above WITHOUT have the user being able to click any where on the screen other than the modal. Below is a simple, easy way to display data from a gridview and drill down into the data based on the records ID which is taken from the Northwinds Database to display more detailed information.&lt;/div&gt;

&lt;div&gt; &lt;/div&gt;

&lt;div&gt;First we are going to start out by putting a gridview onto the workspace of visual studio or any programming enviroment of your choice. Please note that AJAX extentions must be installed on your workstation.&lt;/div&gt;

&lt;div&gt;once we have the gridview on your workspace, we are going to add a sqldatasource or objectdatasource or whichever means of data store you choose to populate the grid. should look something like this....&lt;/div&gt;

&lt;div&gt;(* Note that I only am showing certain fields and not all the table fields for reasons that when we click on the modal popup, it will display the details of the customer. Also note that you need need to have a scriptmanager on the page to handle the ajax extender.)&lt;/div&gt;

&lt;div&gt; &lt;/div&gt;

&lt;div&gt;&lt;strong&gt;&lt;em&gt;Diagram 1&lt;/em&gt;&lt;/strong&gt;&lt;/div&gt;

&lt;div&gt;&lt;br /&gt;
	
	&lt;img height="390" alt="Modal Workspace" src="/App_Themes/JF/UploadedFiles/ModalWorkspace.gif" width="408" border="0" /&gt;&lt;br /&gt;
	&lt;/div&gt;

&lt;div&gt;The next step we are going to do is convert the CUSTOMERID into a link button. Why we are going to do this is so we have a control to popup the model and send the curent id to the modal for grabbing the detailed data. After that is done, what we need to do is set the commandname and command argument of the link button. For this example, we are going to sent the CommandName to GETDETAILS and the CommandArgument ='&lt;%#Eval("CustomerID")%&gt;'. The following digram depicts what it should look like.&lt;/div&gt;

&lt;div&gt; &lt;/div&gt;

&lt;div&gt;&lt;strong&gt;&lt;em&gt;Diagram 2&lt;/em&gt;&lt;/strong&gt;&lt;/div&gt;

&lt;div&gt; &lt;/div&gt;

&lt;div&gt;
	&lt;img height="390" alt="Show Details Grid" src="/App_Themes/JF/UploadedFiles/ShowDetailsWorkspace.gif" width="408" border="0" /&gt;&lt;/div&gt;

&lt;div&gt;&lt;span style="COLOR: #0000ff"&gt;**Code will be available in application download**&lt;/span&gt;&lt;/div&gt;

&lt;div&gt; &lt;/div&gt;

&lt;div&gt;Now that we have everything that we need for the gridview, we need to encapsolate the gridview into an ajax update panel. You ask why, Let me explain. An AJAX MODAL is a client side function. There is no way to get the data into the model unless you use a modal for every record and that would get tedious. So what we are going to do is put the grid in the update panel which will make the call to the server and update the modals content and display it. Due to the modal requirements, some trickery must be involved which I will get to in the latter part of this tutorial.&lt;/div&gt;

&lt;div&gt;So lets add an update panel to the workspace and drag the grid into the panel.&lt;/div&gt;

&lt;div&gt; &lt;/div&gt;

&lt;div&gt;Right after the &lt;/asp:gridview&gt; tag, we are going to add an &lt;asp:panel&gt; which is going to be used for the modal extender. This is where your going to define the look and feel of the modal.&lt;/div&gt;

&lt;div&gt; &lt;/div&gt;

&lt;div&gt;For this demonstration, I am going to add a table inside the asp panel that I named pnlModal. inside the table I am creating labels that will display info like fax, address, country, city, region, etc. &lt;/div&gt;

&lt;div&gt; &lt;/div&gt;

&lt;div&gt;Now that we have our look and feel of the modal that we want and the appropriate information that we want to display in the modal, we are going to add a MODALPOPUPEXTENDAR to the workspace inside the grid right below the asp panel we named pnlModal. For this demo the following attributes are set to the extender: &lt;/div&gt;&lt;span style="COLOR: #0000ff"&gt;
	
&lt;div&gt;&lt;&lt;span style="COLOR: #a31515"&gt;AJAX&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;:&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;ModalPopupExtender&lt;/span&gt;&lt;br /&gt;
		&lt;span style="COLOR: #ff0000"&gt;DropShadow&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;="false"&lt;/span&gt;&lt;br /&gt;
		&lt;span style="COLOR: #ff0000"&gt;BackgroundCssClass&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;="modalBackground"&lt;/span&gt;&lt;br /&gt;
		&lt;span style="COLOR: #ff0000"&gt;TargetControlID&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;="btnHidden"&lt;/span&gt;&lt;br /&gt;
		&lt;span style="COLOR: #ff0000"&gt;runat&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;="server"&lt;/span&gt;&lt;br /&gt;
		&lt;span style="COLOR: #ff0000"&gt;PopupDragHandleControlID&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;="pnlDragHeader"&lt;/span&gt;&lt;br /&gt;
		&lt;span style="COLOR: #ff0000"&gt;Drag&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;="true"&lt;/span&gt;&lt;br /&gt;
		&lt;span style="COLOR: #ff0000"&gt;CancelControlID&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;="ModalClose"&lt;/span&gt;&lt;br /&gt;
		&lt;span style="COLOR: #ff0000"&gt;PopupControlID&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;="pnlModal"&lt;/span&gt;&lt;br /&gt;
		&lt;span style="COLOR: #ff0000"&gt;ID&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;="AJAXModal"&gt;&lt;br /&gt;
			&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;&lt;/&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;AJAX&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;:&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;ModalPopupExtender&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;&gt; 
			
&lt;div&gt; &lt;/div&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;

&lt;div&gt; &lt;/div&gt;

&lt;div&gt;lets go through these attributes. I currently set the dropshadow to false to prohibit the modal from showing a dropshadow. Background cssclass is a refrence to the stylesheet for the look and feel of the background. target controlId is a little tricky if you are using it for dynamic display for the modal. IT HAS TO BE THERE. We need to create a button or some control to trigger the modal. In our case we are going to do this in code behind. The reason for having it, is because it will error out if you do not have a target control specified. I have set the button to visible="False" so it doesn't show on the page. the cancelcontrolId is an imagebutton that will close the modal. The POPUPCONTROLID is the panel that we want to display as the modal.&lt;/div&gt;

&lt;div&gt; &lt;/div&gt;

&lt;div&gt;Now that the workspace is set up, we are going to dive into the code behind. Since the button is located in the grid, we are going to put our code into the gridview rowcommand class. &lt;/div&gt;

&lt;div&gt; &lt;/div&gt;

&lt;div&gt;So the code behind is as follows to connect to the database and display the information based on the CustomerID. (* Note that we have to find the control and put the information inside of a new lable since it is located in the update panel.&lt;/div&gt;

&lt;div&gt; &lt;/div&gt;

&lt;div&gt;The code is as follows.&lt;/div&gt;&lt;span style="COLOR: #0000ff"&gt;
	
&lt;p&gt;Protected &lt;span style="COLOR: #0000ff"&gt;Sub &lt;/span&gt;GridView1_RowCommand(&lt;span style="COLOR: #0000ff"&gt;ByVal&lt;/span&gt;sender &lt;span style="COLOR: #0000ff"&gt;As&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Object&lt;/span&gt;, &lt;span style="COLOR: #0000ff"&gt;ByVal&lt;/span&gt;e &lt;span style="COLOR: #0000ff"&gt;As &lt;/span&gt;System.Web.UI.WebControls.GridViewCommandEventArgs) &lt;span style="COLOR: #0000ff"&gt;Handles &lt;/span&gt;GridView1.RowCommand &lt;/p&gt;
	
&lt;div&gt;&lt;span style="COLOR: #0000ff"&gt;If &lt;/span&gt;e.CommandName = &lt;span style="COLOR: #a31515"&gt;"ShowInfo"&lt;/span&gt;= &lt;span style="COLOR: #0000ff"&gt;True&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Then&lt;br /&gt;
			&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Dim &lt;/span&gt;con &lt;span style="COLOR: #0000ff"&gt;As&lt;/span&gt;SqlConnection = &lt;span style="COLOR: #0000ff"&gt;New&lt;/span&gt;SqlConnection (ConfigurationManager.ConnectionStrings (&lt;span style="COLOR: #a31515"&gt;"NORTHWNDConnectionString1"&lt;/span&gt;).ConnectionString)&lt;br /&gt;
		&lt;span style="COLOR: #0000ff"&gt;Dim &lt;/span&gt;sql &lt;span style="COLOR: #0000ff"&gt;As&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;String&lt;br /&gt;
			&lt;/span&gt;sql = &lt;span style="COLOR: #a31515"&gt;"Select * from Customers where CustomerID='"&lt;/span&gt;&amp; e.CommandArgument &amp; &lt;span style="COLOR: #a31515"&gt;"'"&lt;br /&gt;
			&lt;/span&gt;con.Open() &lt;br /&gt;
		&lt;span style="COLOR: #0000ff"&gt;Dim &lt;/span&gt;com &lt;span style="COLOR: #0000ff"&gt;As&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;New&lt;/span&gt;SqlCommand(sql, con)&lt;br /&gt;
		&lt;span style="COLOR: #0000ff"&gt;&lt;/span&gt;&lt;/div&gt;
	
&lt;div&gt;&lt;span style="COLOR: #0000ff"&gt;Dim &lt;/span&gt;reader &lt;span style="COLOR: #0000ff"&gt;As&lt;/span&gt;SqlDataReader = com.ExecuteReader()&lt;br /&gt;
		&lt;span style="COLOR: #0000ff"&gt;If &lt;/span&gt;reader.Read &lt;span style="COLOR: #0000ff"&gt;Then&lt;br /&gt;
			&lt;/span&gt;&lt;/div&gt;&lt;span style="COLOR: #0000ff"&gt;&lt;/span&gt;
	
&lt;div&gt;&lt;span style="COLOR: #0000ff"&gt;Dim &lt;/span&gt;NewCN &lt;span style="COLOR: #0000ff"&gt;As &lt;/span&gt;Label = &lt;span style="COLOR: #0000ff"&gt;CType&lt;/span&gt;(&lt;span style="COLOR: #0000ff"&gt;Me&lt;/span&gt;.gvUpdatePanel.FindControl(&lt;span style="COLOR: #a31515"&gt;"lblCN"&lt;/span&gt;), Label) &lt;br /&gt;
		NewCN.Text = reader(&lt;span style="COLOR: #a31515"&gt;"CompanyName"&lt;/span&gt;).ToString&lt;/div&gt;
	
&lt;div&gt; &lt;/div&gt;
	
&lt;div&gt;&lt;span style="COLOR: #0000ff"&gt;Dim &lt;/span&gt;NewAddress &lt;span style="COLOR: #0000ff"&gt;As&lt;/span&gt;Label = &lt;span style="COLOR: #0000ff"&gt;CType&lt;/span&gt;(&lt;span style="COLOR: #0000ff"&gt;Me&lt;/span&gt;.gvUpdatePanel.FindControl(&lt;span style="COLOR: #a31515"&gt;"lblAddress"&lt;/span&gt;), Label) NewAddress.Text = reader(&lt;span style="COLOR: #a31515"&gt;"Address"&lt;/span&gt;).ToString&lt;/div&gt;
	
&lt;div&gt; &lt;/div&gt;
	
&lt;div&gt;&lt;span style="COLOR: #0000ff"&gt;Dim &lt;/span&gt;NewRegion &lt;span style="COLOR: #0000ff"&gt;As &lt;/span&gt;Label = &lt;span style="COLOR: #0000ff"&gt;CType&lt;/span&gt;(&lt;span style="COLOR: #0000ff"&gt;Me&lt;/span&gt;.gvUpdatePanel.FindControl(&lt;span style="COLOR: #a31515"&gt;"lblRegion"&lt;/span&gt;), Label) NewRegion.Text = reader(&lt;span style="COLOR: #a31515"&gt;"Region"&lt;/span&gt;).ToString&lt;/div&gt;
	
&lt;div&gt; &lt;/div&gt;
	
&lt;div&gt;&lt;span style="COLOR: #0000ff"&gt;Dim &lt;/span&gt;NewCity &lt;span style="COLOR: #0000ff"&gt;As &lt;/span&gt;Label = &lt;span style="COLOR: #0000ff"&gt;CType&lt;/span&gt;(&lt;span style="COLOR: #0000ff"&gt;Me&lt;/span&gt;.gvUpdatePanel.FindControl(&lt;span style="COLOR: #a31515"&gt;"lblCity"&lt;/span&gt;), Label) &lt;br /&gt;
		NewCity.Text = reader(&lt;span style="COLOR: #a31515"&gt;"city"&lt;/span&gt;).ToString&lt;/div&gt;
	
&lt;div&gt; &lt;/div&gt;
	
&lt;div&gt;&lt;span style="COLOR: #0000ff"&gt;Dim &lt;/span&gt;NewPC &lt;span style="COLOR: #0000ff"&gt;As &lt;/span&gt;Label = &lt;span style="COLOR: #0000ff"&gt;CType&lt;/span&gt;(&lt;span style="COLOR: #0000ff"&gt;Me&lt;/span&gt;.gvUpdatePanel.FindControl(&lt;span style="COLOR: #a31515"&gt;"lblPC"&lt;/span&gt;), Label) &lt;br /&gt;
		NewPC.Text = reader(&lt;span style="COLOR: #a31515"&gt;"PostalCode"&lt;/span&gt;).ToString&lt;/div&gt;
	
&lt;div&gt; &lt;/div&gt;
	
&lt;div&gt;&lt;span style="COLOR: #0000ff"&gt;Dim &lt;/span&gt;NewCountry &lt;span style="COLOR: #0000ff"&gt;As &lt;/span&gt;Label = &lt;span style="COLOR: #0000ff"&gt;CType&lt;/span&gt;(&lt;span style="COLOR: #0000ff"&gt;Me&lt;/span&gt;.gvUpdatePanel.FindControl(&lt;span style="COLOR: #a31515"&gt;"lblCountry"&lt;/span&gt;), Label) NewCountry.Text = reader(&lt;span style="COLOR: #a31515"&gt;"Country"&lt;/span&gt;).ToString&lt;/div&gt;
	
&lt;div&gt; &lt;/div&gt;
	
&lt;div&gt;&lt;span style="COLOR: #0000ff"&gt;Dim &lt;/span&gt;NewPhone &lt;span style="COLOR: #0000ff"&gt;As &lt;/span&gt;Label = &lt;span style="COLOR: #0000ff"&gt;CType&lt;/span&gt;(&lt;span style="COLOR: #0000ff"&gt;Me&lt;/span&gt;.gvUpdatePanel.FindControl(&lt;span style="COLOR: #a31515"&gt;"lblPhone"&lt;/span&gt;), Label) &lt;br /&gt;
		NewPhone.Text = reader(&lt;span style="COLOR: #a31515"&gt;"Phone"&lt;/span&gt;).ToString&lt;/div&gt;
	
&lt;div&gt; &lt;/div&gt;
	
&lt;div&gt;&lt;span style="COLOR: #0000ff"&gt;Dim &lt;/span&gt;NewFax &lt;span style="COLOR: #0000ff"&gt;As &lt;/span&gt;Label = &lt;span style="COLOR: #0000ff"&gt;CType&lt;/span&gt;(&lt;span style="COLOR: #0000ff"&gt;Me&lt;/span&gt;.gvUpdatePanel.FindControl(&lt;span style="COLOR: #a31515"&gt;"lblFax"&lt;/span&gt;), Label) &lt;br /&gt;
		NewFax.Text = reader(&lt;span style="COLOR: #a31515"&gt;"Fax"&lt;/span&gt;).ToString&lt;br /&gt;
		&lt;span style="COLOR: #0000ff"&gt;End &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;If &lt;/span&gt;&lt;/div&gt;
	
&lt;div&gt;&lt;span style="COLOR: #0000ff"&gt; &lt;/span&gt;&lt;/div&gt;
	
&lt;div&gt;&lt;span style="COLOR: #0000ff"&gt;r&lt;/span&gt;eader.Close()&lt;br /&gt;
		reader.close()&lt;/div&gt;
	
&lt;div&gt; &lt;/div&gt;
	
&lt;div&gt;&lt;span style="COLOR: #0000ff"&gt;Me&lt;/span&gt;.gvUpdatePanel.Update()&lt;br /&gt;
		&lt;span style="COLOR: #0000ff"&gt;Me&lt;/span&gt;.AJAXModal.Show()&lt;/div&gt;&lt;/span&gt;

&lt;div&gt;&lt;br /&gt;
	&lt;span style="COLOR: #0000ff"&gt;End &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;If&lt;br /&gt;
		&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;End &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Sub&lt;/span&gt;&lt;/div&gt;

&lt;div&gt; &lt;/div&gt;

&lt;div&gt;(*One other note to take in, the update panel in which the grid is located must have its update mode set to "&lt;strong&gt;CONDITIONAL&lt;/strong&gt;")&lt;/div&gt;

&lt;div&gt; &lt;/div&gt;

&lt;div&gt;Now that we have this, your modal should be ready for testing. Here is the final result.&lt;/div&gt;

&lt;div&gt; &lt;/div&gt;

&lt;div&gt;
	&lt;img height="390" alt="" src="/App_Themes/JF/UploadedFiles/TheModal.gif" width="408" border="0" /&gt;&lt;/div&gt;

&lt;div&gt; &lt;/div&gt;

&lt;div&gt;Download Code:&lt;/div&gt;

&lt;div&gt;
	
&lt;table border="0"&gt;
		
&lt;tbody&gt;
			
&lt;tr&gt;
				
&lt;td&gt;&lt;a title="Dynamic AJAX Modal Pop-Up" href="/Downloads/ModalPopupExtender.zip" target="_blank"&gt;
						&lt;img height="46" alt="" src="/App_Themes/JF/UploadedFiles/Downloaded.png" width="38" border="0" /&gt;&lt;/a&gt;&lt;/td&gt;
				
&lt;td&gt;
					
&lt;div&gt;&lt;a title="Dynamic AJAX Modal PopUp" href="/Downloads/ModalPopupExtender.zip" target="_blank"&gt;Dynamic AJAX Modal Pop-Up&lt;/a&gt;&lt;/div&gt;
					
&lt;div&gt;Size: (1.42 Mb)&lt;/div&gt;&lt;/td&gt;
			&lt;/tr&gt;
		&lt;/tbody&gt;
	&lt;/table&gt;&lt;/div&gt;

&lt;div&gt; &lt;/div&gt;

&lt;div&gt;Thanks, &lt;/div&gt;

&lt;div&gt;Joshua folkerts&lt;/div&gt;</description><link>http://www.joshuafolkerts.com/Blog/Blogs.aspx?BlogID=18</link></item><item><title>LightBox Version 2.0</title><description>&lt;div&gt;Today I was reading on the asp.net forums and came across some questions in regards to the lightbox javascipt image gallery.  As most of you know, I like packing alot of cool features into website so I decided to test the lightbox asp.net version on my site.  You can view the gallery &lt;a href="PhotoAlbum/Albums.aspx"&gt;here&lt;/a&gt;.  There was some things that I found didn't work out of the box like the next and previous images coming up when you click on a photo.  It was pretty easy to solve by going into the the .css file located in the lightboxNET Folder and changing the path.  Depending on where you gallery is located, you path should resolve to he absolute path of the mouseover images.  I figured I would share the information with you in regards to the mouseover images becuase I visited jeremy wadsworths site and noticed his was not working either so I figured I would dive into trying to figure out why this was happening.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;Another item i came across was the path to the loading and closing images.  These were not showing so if you want to correct that item, you need to go into the lightbox.js file and find these two lines of code.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&lt;code&gt;var fileLoadingImage = "../lightboxNet/images/loading.gif";&lt;br /&gt;
var fileBottomNavCloseImage = "../lightboxNet/images/closelabel.gif";&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;&lt;/code&gt; &lt;/div&gt;
&lt;div&gt;&lt;code&gt;I really love this lightbox product and it is free to the community.  If you to download it, you can download it at &lt;a href="http://www.codeplex.com"&gt;www.codeplex.com&lt;/a&gt;.  &lt;/code&gt;&lt;/div&gt;
</description><link>http://www.joshuafolkerts.com/Blog/Blogs.aspx?BlogID=17</link></item><item><title>Need Your Input</title><description>&lt;DIV&gt;As I continue to work on my calendar application, It has became clear that I need more input from people on what they would like to see in the calendar or changed,  that would make it more beneficial to their needs.  It is an ongoing project and I want to make it the best that it can be.  If there are any other options or ideas that you have in mind, please leave them in the comments area and I will work on incorporating them into the site.  I appreciate all the feed back that I have received already but I want this to work for everyone.  So once again, I appreciate all your comments and ideas and if there is anything you need help with like setup, configurations, incorporations, etc, please don't hesitate to contact me.  Thanks again...&lt;/DIV&gt;
&lt;DIV&gt; &lt;/DIV&gt;
&lt;DIV&gt;Joshua&lt;/DIV&gt;</description><link>http://www.joshuafolkerts.com/Blog/Blogs.aspx?BlogID=16</link></item><item><title>JF Event Calendar Again</title><description>&lt;DIV&gt;Seems like every day I am doing something to this application.  Yesterday, I received and email from a gentleman who requested that I implement memberships and roles into the calendar.  I told him I would see what I could do.  Well after spending half the night working on this application, i have released a version of JF Event Calendar that implements the &lt;STRONG&gt;ASP.Net security of Membership and Roles.  &lt;/STRONG&gt;We will see what happens.  I always like to hear back from people who are using it and what changes and advancements I can make to it to suit everyones needs.&lt;/DIV&gt;
&lt;DIV&gt; &lt;/DIV&gt;
&lt;DIV&gt;I have made the download available under the link download located in the DEMOS area of the navigation pane.  Once again.  Thanks&lt;/DIV&gt;
&lt;DIV&gt; &lt;/DIV&gt;
&lt;DIV&gt;Joshua&lt;/DIV&gt;</description><link>http://www.joshuafolkerts.com/Blog/Blogs.aspx?BlogID=15</link></item><item><title>JF Calendar Updated</title><description>&lt;DIV&gt;I have updated the Jf Calendar!  I have decided to do away with the Ajax version of the program but I haven't decided if I am going to bring it back or not.  I ahve made alot of change to the new Version (2.09).  &lt;/DIV&gt;
&lt;DIV&gt; &lt;/DIV&gt;
&lt;DIV&gt;I do want to hear all of your feed back on the application and will continue to work with it until I feel that it is at its full potential.  If  you have any comments or want something incorperated into the app, please feel free to leave it under the comments area of this post.  &lt;/DIV&gt;
&lt;DIV&gt; &lt;/DIV&gt;
&lt;DIV&gt;I will continue to post when new version or up and running so check back often to get the new updated version.  &lt;/DIV&gt;
&lt;DIV&gt; &lt;/DIV&gt;
&lt;DIV&gt;Thanks again.&lt;/DIV&gt;
&lt;DIV&gt;Joshua Folkerts&lt;/DIV&gt;</description><link>http://www.joshuafolkerts.com/Blog/Blogs.aspx?BlogID=14</link></item><item><title>Joshua Folkerts AJAX Events Calendar</title><description>

&lt;div&gt;Back in the classic ASP days, I had developed an events calendar for a company to allow there customer to view what was happening with them through out the months.  Since then, asp.net 1.1 and 2.0 came out allowing developing an asp.net events calendar a lot easier then back in the classic days.  &lt;/div&gt;

&lt;div&gt; &lt;/div&gt;

&lt;div&gt;So a while back, I decided to develop one in asp.net 2.0 and AJAX to use for my personal and professional use.&lt;/div&gt;

&lt;div&gt; &lt;/div&gt;

&lt;div&gt;I was browsing around the internet and came across a web scheduler by infragistics.  Wow, it is extremely powerful and pretty much similar to Microsoft office calendar.  I have changed my calendar to kind of represent an office 2007 Calendar but really dumbed down.  I used  asp.net 2.0 to develop this web events calendar to help other get a grasp on how to program there own or just use the one supplied in the download.  The code is pretty straight forward and I am by no means a professional programmer so I am sure there are easier ways of programming this but the code is small and the total application is 3.66 MB.  Due to the images, which you can do without and just use regular server side buttons, this application is small and gets the job done.  &lt;/div&gt;

&lt;div&gt; &lt;/div&gt;

&lt;div&gt;I will support my application as long as the code stays in tack.  If changes have been made,  I will try to help but with no guarantees.  I would appreciate you leaving comments on how well you like or dislike the JF Events Calendar so please feel free to post your comments.  Thanks&lt;/div&gt;

&lt;div&gt; &lt;/div&gt;

&lt;div&gt;&lt;strong&gt;Screen Shots:&lt;/strong&gt;&lt;/div&gt;

&lt;div&gt;Initial Screen:&lt;/div&gt;

&lt;div&gt;  
	&lt;img height="206" alt="Joshua Folkerts Events Calendar ASP.NET AJAX" src="/App_Themes/JF/UploadedFiles/BlankCalendarScreenShot.jpg" width="325" border="0" /&gt;&lt;/div&gt;

&lt;div&gt; &lt;/div&gt;

&lt;div&gt;Add Events Screen:&lt;/div&gt;

&lt;div&gt;
	&lt;img height="246" alt="Joshua Folkerts Events Calendar AJAX Add Item" src="/App_Themes/JF/UploadedFiles/AddItemScreenShot.jpg" width="327" border="0" /&gt;&lt;/div&gt;

&lt;div&gt; &lt;/div&gt;

&lt;div&gt;Calendar With Events:&lt;/div&gt;

&lt;div&gt;
	&lt;img height="141" alt="Joshua Folkerts Events Calendar AJAX AND ASP.NET" src="/App_Themes/JF/UploadedFiles/ItemScreenShot.jpg" width="334" border="0" /&gt;&lt;/div&gt;

&lt;h4&gt;DEMO:&lt;/h4&gt;

&lt;div&gt;&lt;a title="JF Event Calendar ASP.NET 2.0 Version" href="http://www.joshuafolkerts.com/software/JFCalendar" target="_blank"&gt;Click Here To Launch Demo Version of ASP.NET 2.0 Event Calendar&lt;/a&gt;&lt;/div&gt;

&lt;h4&gt;DOWNLOAD:&lt;/h4&gt;

&lt;div&gt;&lt;a title="Download JF Calender" href="Downloads.aspx"&gt;Click Here to Download JF Calendar&lt;/a&gt;&lt;/div&gt;

&lt;h4&gt;CHANGE LOG:&lt;/h4&gt;

&lt;div&gt;&lt;strong&gt;05.09.2007&lt;br /&gt;
		&lt;/strong&gt;Made allot of changes to the Version of ASP.Net today.  I decided to do away with the Ajax version but might bring it back in the future.  Some of the changes I mad were: &lt;/div&gt;

&lt;ol&gt;
	
&lt;li&gt;
		
&lt;div&gt;Added Day view to the calendar that pertains to the particular day you select on the calendar. &lt;/div&gt;&lt;/li&gt;
	
&lt;li&gt;
		
&lt;div&gt;Changed appearance of Calendar to now use splitter to hide left side navigation if you choose to.&lt;/div&gt;&lt;/li&gt;
	
&lt;li&gt;
		
&lt;div&gt;Added a Tasks list to the application.&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;div&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/div&gt;

&lt;div&gt;&lt;strong&gt;05.08.2007&lt;/strong&gt;&lt;/div&gt;

&lt;div&gt;Made change to the ASP Version .  You can now add links to the event depending on what you want.  Options include HTTP:// or MailTo:.  Both are located in drop down of the links field.&lt;/div&gt;

&lt;div&gt; &lt;/div&gt;

&lt;div&gt;&lt;strong&gt;05.07.2007&lt;/strong&gt;&lt;/div&gt;

&lt;div&gt;Updated Software to now validate Subject field and both time fields.  Ajax version has validate call-outs and .NET version uses asp.net validators.  &lt;/div&gt;

&lt;div&gt;On adding a new item. Date is automatically filled with todays date. on both versions.&lt;/div&gt;</description><link>http://www.joshuafolkerts.com/Blog/Blogs.aspx?BlogID=13</link></item><item><title>Under The Knife</title><description>

&lt;div&gt;Well, Wednesday the 2nd of May is the big day that I go and get my knee reconstructed.  Doesn't sound like too much fun that is for sure.  This has been 5 surgery's in 5 years now for me.  How can a computer geek have so many troubles with his body.  Just goes to show that IT professionals and people in the Technology industry don't just sit on their tails all day.&lt;/div&gt;

&lt;div&gt; &lt;/div&gt;

&lt;div&gt;So to let you all know, my time spend working on projects will be limited for the next couple to three weeks.  Sorry.1&lt;/div&gt;</description><link>http://www.joshuafolkerts.com/Blog/Blogs.aspx?BlogID=12</link></item><item><title>Ajax And Gridview Paging Control</title><description>&lt;DIV&gt;Well, to start off, This is my first application using ajax and the infamous gridview control built with ASP.NET 2.0.  It is available for download and you can use it at will.  The code may seem alittle mashed but It is fully functional and features css, ajax, gridview, and is written in vb.  I will post a c sharp version for those who want to use that as well.  If you have any questions, please post your comments.&lt;/DIV&gt;
&lt;P align=left&gt;&lt;A title="Gridview With Slider" href="SliderGrid.aspx"&gt;&lt;IMG style="BORDER-RIGHT: #808000 1px solid; BORDER-TOP: #808000 1px solid; BORDER-LEFT: #808000 1px solid; BORDER-BOTTOM: #808000 1px solid" height=227 alt="AJAX SLIDER Gridview" src="/App_Themes/JF/UploadedFiles/GridviewAjaxScreenshot.gif" width=324 align=middle&gt;&lt;/A&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A title="Gridview with Sliding Pager" href="Software/AJAXGridviewSlider/"&gt;View Online Sample&lt;/A&gt; 
&lt;LI&gt;
&lt;DIV&gt;&lt;A title="Gridview with slider in asp.net" href="http://www.joshuafolkerts.com/Downloads/SliderGridview.zip" target=_blank&gt;Download SliderGridview&lt;/A&gt;&lt;/DIV&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;DIV&gt;Know Issues:&lt;/DIV&gt;
&lt;OL&gt;
&lt;LI&gt;When sorting the gridview, The slider conrol does not return to pageindex of 1.&lt;/LI&gt;&lt;/OL&gt;</description><link>http://www.joshuafolkerts.com/Blog/Blogs.aspx?BlogID=10</link></item><item><title>A New Business is In Town</title><description>&lt;DIV&gt;&lt;STRONG&gt;Obout&lt;/STRONG&gt; is one of microsofts leading control developers.  Using the controls are very very easy and no I am not getting paid to say this.  I have been working with the controls for about 2 weeks now and I think they are amazing.  With Telerik being a leader in the control industry, I have found it hard to get away from them until obout came to town.&lt;/DIV&gt;
&lt;DIV&gt; &lt;/DIV&gt;
&lt;DIV&gt;There are so many control designers out there on the market today but I have came to the realization that obout is a leading competetor in the world of control development.  Handling controls couldn't be easier.  With much to say abou the others, Obout's customer service is top notch.  You couldn't go wrong with them.&lt;/DIV&gt;
&lt;DIV&gt; &lt;/DIV&gt;
&lt;DIV&gt;Some of the controls that Obout has to offer are as follows&lt;/DIV&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;DIV&gt;ASP Tree View&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV&gt;Gridview&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV&gt;HTML EDitor&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV&gt;Spell Checker&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV&gt;Calendar&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV&gt;Easy Menu&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV&gt;ComboBox&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV&gt;Slide Menu&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV&gt;AJAX Page&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV&gt;Two Colors Menu&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV&gt;Splitter&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV&gt;Flyout&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV&gt;Show&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV&gt;Super Button&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV&gt;DB Tree&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV&gt;Much Much More&lt;/DIV&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;DIV&gt;You can view the site at &lt;A href="http://www.obout.com/"&gt;http://www.obout.com/&lt;/A&gt;&lt;/DIV&gt;
&lt;DIV&gt; &lt;/DIV&gt;
&lt;DIV&gt;You won't be disappointed.&lt;/DIV&gt;
&lt;DIV&gt; &lt;/DIV&gt;
&lt;DIV&gt;Happy Development&lt;/DIV&gt;
&lt;SCRIPT language=JavaScript&gt;&lt;!--
ob_ft(document.getElementById("sm_home"));
//--&gt;&lt;/SCRIPT&gt;
&lt;!--   ASP TreeView component   http://www.obout.com   --&gt;</description><link>http://www.joshuafolkerts.com/Blog/Blogs.aspx?BlogID=9</link></item><item><title>Ryan And Jenny And The Tot</title><description>&lt;DIV&gt;Ryan and Jenny Engels welcomed Paige Ryan Engels into there life today.  She was born Wednesday Tuesday February 28 2007.&lt;/DIV&gt;
&lt;DIV&gt; &lt;/DIV&gt;
&lt;DIV&gt;We are all proud of Ryan And Jenny and know that they are going to be good parents.  Paige is going to be very lucky since she was born into a family know as the millionaires.  :)  I just playing.  &lt;/DIV&gt;
&lt;DIV&gt; &lt;/DIV&gt;
&lt;DIV&gt;Once again, We want to congratulate Ryan and Jeeny on their newborn.&lt;/DIV&gt;</description><link>http://www.joshuafolkerts.com/Blog/Blogs.aspx?BlogID=8</link></item><item><title>A Pretty Cool Tool</title><description>Tonight I was out stumbling around and happen to come across a pretty cool asp.net C# to VB code converter. I know there are alot of examples out there in c# in which vb programmers do not want to rewrite in vb. This tool really helps all programmers. I thought I would share this with you in hopes that you will fine some use for it. Thanks to KamalPatel.Net for this tool. You can see the tool here. &lt;A href="http://www.kamalpatel.net/ConvertCSharp2VB.aspx" target=_blank&gt;www.kamalpatel.net&lt;/A&gt;</description><link>http://www.joshuafolkerts.com/Blog/Blogs.aspx?BlogID=7</link></item><item><title>Return From Microsoft Launch Event</title><description>&lt;P&gt;Well, it was a long day and alot of information to take in but it was well worth it.  I just returned home from the microsoft launch 2007 tour in Minneapolis Minnesota.  Although there was alot of things going on that day, I have to say that the information that I was given really upset me.&lt;/P&gt;
&lt;P&gt;We did attend all the developer tracks and was quite disappointed with them.  Okay that is alittle harsh but I didn't really learn a whole lot there.  They flew through the tutorials like crazy.  Alot of cool products and all but they flew through the WPF (Windows Presentation Foundation) really fast.   For all the exposure that Microsoft has given wpf, they really didn't show the capabilities at all.  They showed more abut WF then they did about presentation.  So yeh, there was a little gripe there.  &lt;/P&gt;
&lt;P&gt;Alough I did recieve a free copy of Vista Ultimate and Office 2007 Pro, I did take some things in and had a great time hanging out with Ernie, Jason, and Nick.  &lt;/P&gt;
&lt;P&gt;Pretty good group of people and hope them the best in their endevours.  &lt;/P&gt;
&lt;P&gt;Joshua Folkerts&lt;/P&gt;</description><link>http://www.joshuafolkerts.com/Blog/Blogs.aspx?BlogID=6</link></item><item><title>A New Look</title><description>Well, as most of you are aware of, the site has taken a whole new look.  The dark colors were just not for me.  I have incorperated the new themes object model into the site as well as making the navigation alittle more readable.  I also changed the View blogs section and the subscribed syndicates into a user control becuase of the admin side.  No point in coding the same thing twice.  The site is going to be a definite work in progress but the archived blogs as you can see are not functioning at the present time but that can be worked on later.  As most of you are aware of, this is more of a testing site for my dotnet adventures.  Good learning and testing site that is for sure.</description><link>http://www.joshuafolkerts.com/Blog/Blogs.aspx?BlogID=4</link></item><item><title>Microsoft Launch Tour</title><description>As most of you might be aware of, Microsoft is kicking of there launch tour of Microsoft Office 2007, Windows Vista, and Microsoft Exchange Server 2007.  The Page Technology Crew is going to be attending the Launch Tour in Minneapolis, MN on Thursday, February 1, 2007.  I will provide more information as the even draws closer but anyone that is wanted to attend can contact me.  We normally have a pretty good time.&lt;BR&gt; &lt;BR&gt;Here are the Track Details for those interested.&lt;BR&gt; &lt;BR&gt;The release of Windows Vista and the 2007 Microsoft Office System ushers in a new age of application development. Come join us as we explore the new development capabilities that allow you to build applications that discover, organize, and present information to users in new ways. You will experience how the 2007 Microsoft Office system and Windows Vista work better together for you, how to build differentiated user experiences and connected applications in Windows Vista, how to connect and extend Office client applications, and how to build key business applications on the Microsoft Office server platform.&lt;BR&gt; &lt;BR&gt;Learn how Windows Vista and the 2007 Microsoft Office system provide a platform to help you build a wide array of groundbreaking solutions. We will showcase the key elements of each platform and what makes them compelling for solution development. We will also cover the broad toolset that is available across the two platforms to make the most efficient use of your development time.&lt;BR&gt; &lt;BR&gt;Windows Vista enables developers to create engaging, visually stunning, and highly differentiated user interfaces that make applications more usable and productive for end-users. See how you can use managed and native technologies including Windows Presentation Foundation, XAML, Direct X 10, Sidebar and, of course, the new Aero interface to create these new experiences.&lt;BR&gt; &lt;BR&gt;Windows Vista provides the most comprehensive platform for building applications that connect users to each other and to their data, allowing them to visualize, share, and act on information. See the scenarios enabled by Windows Communication Foundation, built in peer-to-peer support, and RSS. The session will also cover the new integrated search technologies and how they enable new ways of organizing and presenting information.&lt;BR&gt; &lt;BR&gt;The Microsoft Office client applications provide a rich foundation for building critical business applications. See how the new technologies in the 2007 release give you, the developer, a huge head start in solving the business problems of your organization. The session will show how the Microsoft Office client applications can be connected together and extended with a minimum of effort for maximum results.&lt;BR&gt; &lt;BR&gt;The Microsoft Office servers form an exceptional platform for building and extending business applications to make enterprise data more accessible and business processes more efficient. See how the server technologies work together to help you create enterprise-grade business solutions in a wide variety of forms, all from the same core platform.&lt;BR&gt;</description><link>http://www.joshuafolkerts.com/Blog/Blogs.aspx?BlogID=3</link></item><item><title>Site is coming along</title><description>&lt;DIV&gt;As most of you can see, the site is coming along.  There is still along road ahead on the features that I want to program for this baby.  To be honest, there are tons of sites out there that are similar to this one which doesn't bother me.  This site is more intended for a web presence more than an information site or help desk.  I have been programming for a number of years and my goal is to give back what others have helped me with.  I plan to put out alot of code that can help others in there endeavors as well as if anyone has any code they want public, don't hesitate to contact me.  &lt;/DIV&gt;</description><link>http://www.joshuafolkerts.com/Blog/Blogs.aspx?BlogID=2</link></item><item><title>Welcome to My Website</title><description>&lt;DIV&gt;It is now time to endeavor into a new project and your looking at it.  It might not be the most eye appealing but the functionality to it is supurb.  Not only is this site a blogging site, but it also contains downloads of code that I wrote along with a fully customizable photo gallery all done in ASP.Net.  &lt;/DIV&gt;</description><link>http://www.joshuafolkerts.com/Blog/Blogs.aspx?BlogID=1</link></item></channel></rss>