Ajax AutoCompleteExtender with MSSQL datasource

I’m building a form and wanted to use the autocompleteextender control of the Ajax Toolkit. Having limited skills with ASP.net and C#, I began by looking for examples online. However, nothing I found and tried seemed to be working. I finally found a simple example here that helped me get on my way.

I’ve reproduced my code below as a self-reference, and to hopefully help someone else avoid troubles with this control.



<!-- Need to have the toolkitscript manager in your page -->
<asp:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server" EnablePageMethods="true" >
<!-- Textbox that the autocomplete will target -->
<asp:TextBox ID="CEMPNAMETextBox" runat="server" Text='<%# Bind("CEMPNAME") %>' />
<!-- AutocompleteControl -->
<asp:AutoCompleteExtender ID="AutoCompleteExtender1" runat="server"
                            UseContextKey="True" />

TargetControlID – the ID of the textbox that we’ve chosen to use
ServiceMethod – name of the method as defined in your codebehind file

Default.aspx.cs (C#)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
namespace ITIventory
    public partial class _Default : System.Web.UI.Page
            [System.Web.Services.WebMethodAttribute(), System.Web.Script.Services.ScriptMethodAttribute()]
            public static string[] GetCompletionList(string prefixText, int count, string contextKey)
                List ListCempName = new List(); // List Object
                    // Open the connection (can re-use connection string as defined in web.config)
                    SqlConnection SqlCon = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["ITInventoryConnectionString"].ConnectionString);
                    // Create a Command
                    SqlCommand SqlComm = new SqlCommand();
                    SqlComm.Connection = SqlCon;
                    // Add a employee name SQl Parameter
                    SqlComm.Parameters.Add("@cempname", SqlDbType.VarChar).Value = prefixText; // retrievable throught prefixText parameter
                    // Query for get country name from database
                    SqlComm.CommandType = CommandType.Text;
                    SqlComm.CommandText = "SELECT cempname FROM BMEMP WHERE (BMEMP.LISTERM = 'false') AND (BMEMP.cempname LIKE ''+@cempname+'%') ";
                    // Read the data and add in List object.
                    SqlDataReader SqlDr = SqlComm.ExecuteReader();
                    if (SqlDr != null)
                        while (SqlDr.Read())
                catch (Exception ex)
                    throw new Exception(ex.Message);
                return ListCempName.ToArray();

SSRS – “Jump to Report” in a different project

While working with a report for SSRS 2005, using the Business Intelligence Development Studio, I’ve used the option to “Jump to Report” very often. You can find this by going to the properties of an object (textbox, cell, etc) and the Navigation tab.

Navigation tab to jump to report


The problem I encountered today is that the drop down shown above only displays reports that existing within the current project loaded in Visual Studio. This means if you have a common report used as a drill through, a copy would need to be made inside this project which is obviously a bad idea since multiple copies would need to be updated.


However after a bit of searching I’ve found that you can specify the folder (as it appears on the Report Server) that your sub report exists in, and it will function correctly.

Specify subfolder for jump to report

By doing this, you can maintain one copy of your common reports, and just reference them from the folder name.

Note: this won’t work while previewing the master report in Visual Studio unless you have deployed the drill through report to the report server.


As a related aside, I have started organizing my reports all within one Solution in Visual Studio, each under separate projects. Prior to this I had one Solution and one Project for each set of reports, which didn’t scale very well and doesn’t allow for easy referencing. Now, I can get at them all at once:

Projects within a solution

Inject 3rd party drivers into WDS image

I use Windows Deployment Services (WDS) under Server 2008 to deploy images of Windows 7 x64 over PXE to my desktops and laptops.

I’ve standardized on Dell Latitude and Optiplex computers, so I want these drivers to remain in place after the sysprep, so they don’t need to be added later.

Apparently Server 2008 R2 WDS has the ability to add drivers through the GUI, but I don’t have that luxury yet. Here’s how I’ve gotten these drivers into my image.


The major prerequisite is that you’ll need the Windows AIK tools installed on your server. They can be found here:


Note: you’ll need to have extracted folders of each driver you wish to inject, with the .INF file available. For each model, put all your drivers in it’s own folder under the master one. For example:

  • E5420
    • Video
    • LAN
    • Audio
    • Chipset

First, open the WDS console, and export the image you want to modify. Right click on the image, and choose Export. Export it to D:\ExportedImages

WDS Export image right click context menu

Then, from an elevated command prompt window, run the following (two separate lines):

"C:\program files\windows aik\tools\petools\copype.cmd" amd64 d:\windowspe-amd64
Imagex /mountrw D:\ExportedImages\Windows7-x64-Field.wim 1 mount

Then copy d:\windowspe-amd64\mount\windows\system32\dism.exe to d:\windowspe-amd64\mount\windows\system32\dism\

Use the following command template to inject the drivers for each system:

dism.exe  /image:d:\windowspe-amd64\mount /add-driver /driver:d:\drivers\E6420\ /recurse

When completed, run this command:

imagex /unmount /commit mount

Now re-import the image, either by adding, or replacing the existing one from the right click menu.

Replace WDS image

SSRS – Get date parameter as end of day

I’ve built a report within SQL Services Reporting Services 2005 (SSRS) that pulls its data based on a date range, chosen through start and end date parameters.

The problem is, if on those parameters I choose April 21st, it’s actually choosing April 21: 00:00. This means if there’s any data that is relevant during the day on April 21st, it wouldn’t be selected.

I needed a way to have my user select April 21st, but have it return values for end of day April 21st. The solution actually proved easier than I originally thought, as I was making it too complicated.

Full credit to Samson Loo who posted about this (outside of SSRS) here: http://justsamson.com/2010/09/19/date-parameters-and-things-to-consider/


My dataset and linked functions all reference the parameter @EndDate, so I didn’t want to go through and change all of that.

Instead, I created a new report parameter called @EndDateEOD, and set its properties to what @EndDate originally was.

Parameter for EndDateEOD

I made sure to place this new parameter above my existing @EndDate.

Then I modified @EndDate to make it hidden, and set this as the default value:



This is adding one day to what the user selects. At first glance this seems like it would produce incorrect information, however in reality, if a user selects April 21st (in reality April 21 00:00:00), then this will use the date April 22 00:00:00 in the dataset, which is what we want.