Pages

Subscribe:

Ads 468x60px

Wednesday, 7 September 2011

Check the Username for Availability Using ASP.Net AJAX


I designed a registration page in which a user enters user details like username, password etc. When the username is entered into the textbox I need to validate the username for availability. Availability depends on whether the username has been taken by another user; for that I am checking the username in the database. Here I have the problem that after the username is entered into the textbox I am getting the data from the database and showing the result on the page of whether that username is available or not but at that time the page gets a postback and loses the entered values from the textboxes; for that reason I used ajax to check username availability.

Now we can see how to check username availability in our application without postback; first add a reference for the AjaxControlToolkit to your application and also add:
<%@ Register Namespace="AjaxControlToolkit" Assembly="AjaxControlToolkit" tagPrefix="ajax" %>

To your aspx page and design your page likes this:
<html xmlns="http://www.w3.org/1999/xhtml"><head runat="server"><title>Check Username availability Using Ajax</title><style type="text/css">.waitingdiv {background-color#F5F8FA;border1px solid #5A768E;color#333333;font-size93%;margin-bottom1em;margin-top0.2em;padding8px 12px;width8.4em;
}
</style>
</
head>
<
body>
<
form id="form1" runat="server"><asp:ScriptManager ID="scriptmanager1" runat="server"></asp:ScriptManager>
<
script type="text/javascript">Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(BeginRequestHandler);function BeginRequestHandler(sender, args) {var state = document.getElementById('loadingdiv').style.display;if (state == 'block') {
document.getElementById('loadingdiv').style.display = 'none';
else {
document.getElementById('loadingdiv').style.display = 'block';
}
args.get_postBackElement().disabled = true;
}
</script>
<
div>
<
asp:UpdatePanel ID="PnlUsrDetails" runat="server"><ContentTemplate>
<
table>
<
tr>
<
td>UserName:</td>
<
td>
<
asp:TextBox ID="txtUsername" runat="server" AutoPostBack="true" ontextchanged="txtUsername_TextChanged"/></td>
<
td>
<
div id="checkusername" runat="server" Visible="false"><asp:Image ID="imgstatus" runat="server" Width="17px" Height="17px"/><asp:Label ID="lblStatus" runat="server"></asp:Label></div>
</
td>
</
tr>
</
table>
<
div class="waitingdiv" id="loadingdiv" style="display:nonemargin-left:5.3em"><img src="LoadingImage.gif" alt="Loading" />Please wait...</div>
</
ContentTemplate>
</
asp:UpdatePanel>
</
div>
</
form>
</
body></html>
If you observe in the above code I placed a textbox in an update panel to allow only partial postback; based on that we can avoid the complete postaback of the page when getting the data from the database and I set the propertyAutoPostBack="true" and used the ontextchanged="txtUsername_TextChanged" event to display the result after entering the text in the textbox.

Now add a 
using System.Data.SqlClient; reference in the codebehind and use the attached code to get the username from the database. 
Download Files:
Attachment.rar

0 comments:

Post a Comment