Monday, February 2, 2009

Microsoft enterprise data application blocks

Microsoft enterprise data application blocks is an excellent data access layer component which can be used to reduce the coding effort for database applications significantly. Its a free download from MSDN

The goals of Enterprise Library are the following:
  1. Consistency. All Enterprise Library application blocks feature consistent design patterns and implementation approaches.
  2. Extensibility. All application blocks include defined extensibility points that allow developers to customize the behavior of the application blocks by adding their own code.
  3. Ease of use. Enterprise Library offers numerous usability improvements, including a graphical configuration tool, a simpler installation procedure, and clearer and more complete documentation and samples.
  4. Integration. Enterprise Library application blocks are designed to work well together or individually.
Links to download various versions of Microsoft enterprise library
  1. For .Net framework 3.5 -
  2. For .Net framework 2.0 -
  3. For .Net framework 1.1 -
More details are available in

  1. How to set up and use Enterprise library data application block data access layer
  2. Download and Install the MSI file
  3. Reference the following DLLs from the bin folder of your installed path (for me it was in C:\Program Files\Microsoft Enterprise Library 3.1 - May 2007\Bin) to your .Net application
    • Microsoft.Practices.EnterpriseLibrary.Common.dll
    • Microsoft.Practices.EnterpriseLibrary.Data.dll
    • Microsoft.Practices.ObjectBuilder.dll
  4. Thats it you are now ready to use the classes and functions available in the Enterprise library data application block DAL
Below are some code samples on how to use data application blocks to perform data access operations

1. General structure

//Add the following Using statements at the top of the Class file
using Microsoft.Practices.EnterpriseLibrary.Common;
using Microsoft.Practices.EnterpriseLibrary.Data;
//initalize the Database object using the ConnectionString name
Database db = DatabaseFactory.CreateDatabase(Connection string name from web.config);
//Execute an SQL Query using the Execute methods available
db.ExecuteFunctionName(Stored Procedure Name, comma seperated parameters);
//This is the common structure I use in my projects.
//You can find lot of other ways to execute db queries like
//passing the row Command instead of SPROC name.

2. Insert, Update and Delete

//For insert, update and delete use ExecuteNonQuery
Database db = DatabaseFactory.CreateDatabase("ConString");
db.ExecuteNonQuery("usp_user_insert", username, emailID, password);

3. Returning Single values

//If your SPROC return single value, use ExecuteScalar
object pollID = db.ExecuteScalar("usp_poll_insert", question);

4. Selecting data

//use ExecuteDataSet to select data
DataSet ds = db.ExecuteDataSet("usp_users_select");

Just imagine how many lines of code it can easily reduce to execute a query which have a number of parameters.

From now on I will use this Enterprise library data application block data access layer for all the code samples in this blog.

NOTE: The Microsoft Enterprise Library coryntains lot of other really useful Application blocks such as Caching Application block and Cryptography Application Block.

Thursday, November 20, 2008

Download Free E Book on CSS designs

If you are looking for some books to learn CSS, here’s an excellent book for FREE download.

You can download The Art and Science of CSS directly from here or follow sitepointdotcom on Twitter.

The Art and Science of CSS is a good Cascading Style Sheets book with lot of practical examples on different style sheet techniques such as designing navigation tabs, styling web pages, creating rounded corners etc.



Thursday, October 23, 2008


I am using a great Asp.Net CAPTCHA by BrainJar in a number of web sites with and without Asp.Net AJAX. It’s a simple and really easy to use Asp.Net CAPTCHA. The actual source code is in C#, but you can use it with both C# and VB.Net by simply wrapping the functionality in a class library.

In Asp.Net forums and in many other user communities I have seen lot of people asking for VB.Net CAPTCHA. So I thought to write a blog post and create some sample implementations. The zip file contains C# CAPTCHA and VB.Net CAPTCHA. I have included the samples for Asp.Net AJAX CAPTCHA also.

You can download the samples and implementation from here

Implementing Asp.Net AJAX CAPTCHA is really simple. Just wrap the main Asp.Net CAPTCHA with Asp.Net AJAX update panel and put a random query string at the end of CAPTCHA image src. The random query string will avoid showing the old CAPTCHA from browser cache.

  1. Refer the assembly CaptchaDLL.dll in your project
  2. Copy JpegImage_CS.aspx or JpegImage_VB.aspx (according to the language of choice) to your website.
  3. Open the above file and make changes in Colors and Font if needed. (read the inline comments to know more)
  4. Now user the sample codes from Default.aspx or Ajax.aspx pages. The code is straight forward. You make a session and generate an image with the string in the Session. Now when you submit you have to check the session value and textbox value to see whether the entered CAPTCHA is correct.

If you have any questions please put as a comment.

Asp.Net CAPTCHA, CAPTCHA, VB.Net CAPTCHA, C# CAPTCHA, ASP CAPTCHA, C sharp captcha, vb captcha, simple captcha, AJAX CAPTCHA, ajax captcha, captcha without refresh, captcha using ajax, numeric captcha

Wednesday, October 22, 2008

Numeric Datalist/Repeater paging - User control version

I have wrapped the functionality of numeric datalist pagination (read the full details here) into a user control, so that you don’t need to copy and paste the code in all the pages.
The usercontrol and sample implementation with some good pagination style can be downloaded from here.


Visit this blog if you want to know the details about implementing numeric paging with datalist or repeater.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
If you are looking for Sql Express DTS/Data transfer wizard click here
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

datalist pagination,paginating datalist,pagination datalist, datalist pagination,datalist and pagination,c# datalist pagination,pages datalist,paging datalist,datalist paging,repeater pagination,paginating repeater,pagination repeater, repeater pagination,repeater and pagination,c# repeater pagination,pages repeater,paging repeater,repeater paging

Friday, October 10, 2008

Simple Numeric Pagination for DataList and Repeater

There are a big number of tutorials available on how to implement pagination in DataList and Repeater. But all of them are explaining only about the Next/Prev mode of pagination only. Recently I have implemented a quick and dirty numeric pagination on DataList for one of my project.

The idea is simply use a PagedDataSource to get the current page of data and bind it to DataList or Repeater. Now create dynamic Linkbuttons using the PageSize and the Total rows count. See the code below.


<head runat="server">
<title>Untitled Page</title>
<style type="text/css">
.pagination a{padding:5px;}
.pagination span{padding:5px;}
<form id="form1" runat="server">
<asp:DataList ID="dlPaginationSample" runat="server">
<%# Eval("Column1")%> | <%# Eval("Column2")%>
<br />

<br />
<asp:Panel runat="server" id="pnlPager" CssClass="pagination">


C# Code
//you can pass either DatList or Repeater to this function
private void bindDataWithPaging(Control bindControl, DataSet data)
if (data.Tables.Count > 0) // if the datset contains data
DataView dv = data.Tables[0].DefaultView;

PagedDataSource dsP = new PagedDataSource();
dsP.AllowPaging = true;
dsP.DataSource = dv;
dsP.CurrentPageIndex = CurrentPageIndex;
dsP.PageSize = PageSize;

//Binding data to the controls
if (bindControl is DataList)
((DataList)bindControl).DataSource= dsP;
else if (bindControl is Repeater)
((Repeater)bindControl).DataSource = dsP;

//saving the total page count in Viewstate for later use
PageCount = dsP.PageCount;

//create the linkbuttons for pagination

The above function is straight forward and self explanatory. What it will do is simply create a PagedDataSource from the full dataset and bind it to the custom pagination repeater or datalist.

//create the linkbuttons for pagination
protected void BuildPagination()
pnlPager.Controls.Clear(); //

if (PageCount <= 1) return; // at least two pages should be there to show the pagination

//finding the first linkbutton to be shown in the current display
int start = CurrentPageIndex - (CurrentPageIndex % ButtonsCount);

//finding the last linkbutton to be shown in the current display
int end = CurrentPageIndex + (ButtonsCount - (CurrentPageIndex % ButtonsCount));

//if the start button is more than the number of buttons. If the start button is 11 we have to show the <<First link
if (start > ButtonsCount - 1)
pnlPager.Controls.Add(createButton(FirstPageText, 0));
pnlPager.Controls.Add(createButton("..", start - 1));

int i = 0, j = 0;

for (i = start; i < end; i++)
LinkButton lnk;
if (i < PageCount)
if (i == CurrentPageIndex) //if its the current page
Label lbl = new Label();
lbl.Text = (i + 1).ToString();
pnlPager.Controls.Add(createButton((i + 1).ToString(), i));

//If the total number of pages are greaer than the end page we have to show Last>> link
if (PageCount > end)
pnlPager.Controls.Add(createButton("..", i));
pnlPager.Controls.Add(createButton(">>", PageCount - 1));

This is the whole logic for a simple implementation. I am using this custom pagination in a number of projects and they are working great.

DOWNLOAD THE SOURCE AND SAMPLES FROM HERE for numeric datalist pagination

Implement custom numeric pagination with datalist and repeater, Datalist pagination, repeater pagination, paginating datalist, paginating repeater, numeric custom pagination, custom datalist pagination, custom repeater pagination, repeater numeric pagination, datalist numeric pagination, pagination with datalist and repeater, implement pagination datalist, datalist pagination

Wednesday, October 8, 2008

Move to anchor after ASP.Net AJAX postback

Here is the code to move to anchor after postback

<script language="javascript" type="text/javascript">
var prm = Sys.WebForms.PageRequestManager.getInstance();
function OnEndRequest(sender,args)
window.location.hash = '#MOVEHERE'; //MOVEHERE is the anchor name

If you want to show top of the page instead of move to anchor use window.scrollTo(0,0); instead of window.location.hash = '#MOVEHERE';

Tuesday, August 19, 2008

Move to anchor after postback

You can add anchor tags in the URL to move the scroll bar to a specific section of the web page.
Example :

But how we can do the same after a postback. I am not talking about MaintainScrollPositionOnPostback. It will just move the scroll bar position to the previous state after the postback.

Our aim is to move the scroll bar to a custom position using anchor tags.

1. Set MaintainScrollPositionOnPostback="false" in the @Page directive.
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default1.aspx.cs" Inherits="view_Default1" Title="Untitled Page" MaintainScrollPositionOnPostback="false" %>

2. Create a named anchor in the HTML.
<a name="MOVEHERE"></a>

3. Write the follwoing code in the page load.
if (IsPostBack)
ClientScript.RegisterStartupScript(this.GetType(), "hash", "location.hash = '#MOVEHERE';", true);
Please note I wrote the code inside IsPostback.

Thats all. Now test the page and you can see the page automatically move to the #MOVEHERE anchor when the page loads after a postback.

The javascript code location.hash = '#MOVEHERE'; did the trick.

I have tested it in IE 6, FF 2.x, Apple Safari for Windows and Opera.