Tuesday, December 7, 2010

Design patterns

Design patterns are recurring solutions to software design problems you find again and again in real-world application development. Patterns are about design and interaction of objects, as well as providing a communication platform concerning elegant, reusable solutions to commonly encountered programming challenges.

Click Here for Design patterns
..

Wednesday, November 17, 2010

JQuery dropdownlist enable disable

It is used to set value of the dropdownlist to 0 and Enable/disable using Jquery::

$("#<%= ddlZone.ClientID %>").val("0");
$("#<%= ddlZone.ClientID %>").attr("disabled", false);

//%= ddlState.ClientID %> it will come after the #

$("#<%= ddlState.ClientID %>").val("0");
$("#<%= ddlState.ClientID %>").attr("disabled", true);

$("#<%= ddlDistrict.ClientID %>").val("0");
$("#<%= ddlDistrict.ClientID %>").attr("disabled", true);

$("#<%= ddlCity.ClientID %>").val("0");
$("#<%= ddlCity.ClientID %>").attr("disabled", true);

Using Javascript Enable disable Validator ::

var reqLocation = document.getElementById("<%=reqLocation.ClientID %>");
ValidatorEnable(reqLocation, false);

Sunday, November 14, 2010

Calling javascript from code behind when using update panel

Imagine you have a control which registers some trivial script, which has to be executed during loading of the page. To do that you will usually use following method:

page.ClientScript.RegisterStartupScript(…)


After some time, you decide to use the same control inside of UpdatePanel and find out that the script is not executed. To understand what the problem is please take a look on the following post. I investigated the problem with the release version of ATLAS and found out that the script is now even not rendered at all. The problem with UpdatePanel and registering of scripts is a little more trivial than expected.

The rendering of scripts by using of AJAX (ATLAS) works different way if UpdatePanel (or AJAX at all) is used. This is, because AJAX uses different rendering methods. For example, consider following code:



page.ClientScript.RegisterStartupScript(page.GetType(), Guid.NewGuid().ToString(), “alert(‘hello’)”, true);


This code ensures that word ‘hello’ is alerted when the request to page ends up. However, if this code is used inside of UpdatePanel, the message ‘hello’ will not be alerted. To work around the problem there are related static methods in the class ScriptManager which should be used, when the control is used inside of UpdatePanel.
Following example shows how to do that:



ScriptManager.RegisterStartupScript(page, page.GetType(), Guid.NewGuid().ToString(), “alert(‘hello’)”, true);


This solution seems to be very trivial. But, image what you have to do if the same control has to be used with and without of UpdatePanel even within the same application.


source :http://developers.de/blogs/damir_dobric/archive/2007/02/12/RegisterStartupScript-and-RegisterClientScriptBlock-can-work-with-UpdatePanel_3F002100_.aspx?CommentPosted=true#commentmessage

Date format validation - dd/mm/yyyy

//Date Validation just copy and paste this code


var dtCh= "/";
var minYear=1900;
var maxYear=2100;

function isInteger(s)
{
var i;
for (i = 0; i < s.length; i++)
{
// Check that current character is number.
var c = s.charAt(i);
if (((c < "0") || (c > "9"))) return false;
}
// All characters are numbers.
return true;
}

function stripCharsInBag(s, bag)
{
var i;
var returnString = "";
// Search through string's characters one by one.
// If character is not in bag, append to returnString.
for (i = 0; i < s.length; i++)
{
var c = s.charAt(i);
if (bag.indexOf(c) == -1) returnString += c;
}
return returnString;
}

function daysInFebruary (year)
{
// February has 29 days in any year evenly divisible by four,
// EXCEPT for centurial years which are not also divisible by 400.
return (((year % 4 == 0) && ( (!(year % 100 == 0)) || (year % 400 == 0))) ? 29 : 28 );
}
function DaysArray(n)
{
for (var i = 1; i <= n; i++)
{
this[i] = 31
if (i==4 || i==6 || i==9 || i==11) {this[i] = 30}
if (i==2) {this[i] = 29}
}
return this
}

function isDate(dtStr)
{
var daysInMonth = DaysArray(12)
var pos1=dtStr.indexOf(dtCh)
var pos2=dtStr.indexOf(dtCh,pos1+1)
var strDay=dtStr.substring(0,pos1)
var strMonth=dtStr.substring(pos1+1,pos2)
var strYear=dtStr.substring(pos2+1)
strYr=strYear
if (strDay.charAt(0)=="0" && strDay.length>1) strDay=strDay.substring(1)
if (strMonth.charAt(0)=="0" && strMonth.length>1) strMonth=strMonth.substring(1)
for (var i = 1; i <= 3; i++) {
if (strYr.charAt(0)=="0" && strYr.length>1) strYr=strYr.substring(1)
}
day=parseInt(strDay)
month=parseInt(strMonth)
year=parseInt(strYr)
if (pos1==-1 || pos2==-1)
{
alert("The date format should be : dd/mm/yyyy")
return false
}
if (strDay.length<1 || day<1 || day>31 || (month==2 && day>daysInFebruary(year)) || day > daysInMonth[month])
{
alert("Please enter a valid day")
return false
}
if (strMonth.length<1 || month<1 || month>12)
{
alert("Please enter a valid month")
return false
}
if (strYear.length != 4 || year==0 || yearmaxYear)
{
alert("Please enter a valid 4 digit year between "+minYear+" and "+maxYear)
return false
}
if (dtStr.indexOf(dtCh,pos2+1)!=-1 || isInteger(stripCharsInBag(dtStr, dtCh))==false)
{
alert("Please enter a valid date")
return false
}
return true
}