Wednesday, March 27, 2013

Property Does not initialise even though we assign value to it in VB.net

I have came around a strange situation in vb.net when i was assigning value to property it was not at all taking the value.When i debug it ,i was getting Nothing.Actually when i was creating property i got the intellisense.This intellisense created structure of the property.
Now the problem comes when we use this property for setting value.The structure we got for property was
        
Public Property runs As String
          Get

          End Get
          Set(value As String)

          End Set
        End Property
Now when we assign value to the property it will not even go to the property in debug mode.After investigating i found that there is a small change that we have to make while using intellisence.In Set we have to give ByVal the all wioll be fine. So the structure of property should be like Public Property runs As String Get End Get Set(ByVal value As String) End Set End Property

Monday, March 25, 2013

Cyrillic(Russian ) characters not displaying in asp.net using mysql 3.5.1

When we are using .net with mysql many a times we face a problem that cyrillic(russian)or any other language characters dont display on page or console as expexted .Instead we get ???.The solution to this problem is that we might be using mysql connector driver that does not support cyrillic characters.I was using mysql connector 3.5.1 and faced the same problem.After lot of googling i didn't get any result.So i changed my mysql connector driver from 3.5.1 to 5.1.12 and it worked . The reason for this is MySQL does not support the full UTF8 character set, 4-byte characters are not allowed.

 MYsql 3.5.1 connector does not support all UTF_8 Characters.

Also i changed my connection string as 

{Driver={MySQL ODBC 5.1 Driver};Server=localhost;Database=myDataBase;User=myUsername; Password=myPassword;Option=3;}

Friday, March 22, 2013

Format text returning from query having newline character.

Sometime we come across a situation that user enter the data with line breaks into database but when we display that data in page it shows data as a single line without formatting.To solve this situation before showing data we have to convert newline characters with "<br/>"
 

s.Replace(Environment.NewLine, "<br/>")

Linkify all URLs that appear in a paticular div

Many times we come accross situation that our webpage contains urls but we
forget to give links to it at the time of uploading.
Now here is a simple javascript code that we can give at body load and it will search all urls in page and give them links.

<script>function linkify(text){
    if (text) {
        text = text.replace(
   /((https?\:\/\/)|(www\.))(\S+)(\w{2,4})(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/gi,
            function(url){
                var full_url = url;
                if (!full_url.match('^https?:\/\/')) {
                    full_url = 'http://' + full_url;
                }
                return '<a href="' + full_url + '">' + url + '</a>';
            }
        );
    }
        document.getElementById("hi").innerHTML = text;
}</script>

<body onload="linkify(document.getElementById('hi').innerHTML)"> 

Note: here "hi" is the div that contains text to be converted into links.

Monday, March 18, 2013

My simple tool tip on mouse over and mouse click

Create a tooltip.js file.

function ToolTip(id,isAnimated,aniSpeed)
{ var isInit = -1;
  var frm,divWidth,divHeight;
  var xincr=10,yincr=10;
  var animateToolTip =false;
  var html;
  
  function Init(id)
  {
   frm = document.getElementById(id);
   if(frm==null) return;
   
   if((frm.style.width=="" || frm.style.height==""))
   {alert("Both width and height must be set");
   return;}
   
   divWidth = parseInt(frm.style.width);
   divHeight= parseInt(frm.style.height);
   if(frm.style.overflow!="hidden")frm.style.overflow="hidden";
   if(frm.style.display!="none")frm.style.display="none";
   if(frm.style.position!="absolute")frm.style.position="absolute";
   
   if(isAnimated && aniSpeed>0)
   {xincr = parseInt(divWidth/aniSpeed);
    yincr = parseInt(divHeight/aniSpeed);
    animateToolTip = true;
    }
        
   isInit++; 
   
  }
  
    
  this.Show =  function(e,srcpath)
  {
    if(isInit<0) return;
    
    var newPosx,newPosy,height,width;
    if(typeof( document.documentElement.clientWidth ) == 'number' ){
    width = document.body.clientWidth;
    height = document.body.clientHeight;}
    else
    {
    width = parseInt(window.innerWidth);
    height = parseInt(window.innerHeight);
    
    }
    var curPosx = (e.x)?parseInt(e.x):parseInt(e.clientX);
    var curPosy = (e.y)?parseInt(e.y):parseInt(e.clientY);
    
    frm.src=srcpath;
    
    if((curPosx+divWidth+10)< width)
    newPosx= curPosx+10;
    else
    newPosx = curPosx-divWidth;

    if((curPosy+divHeight)< height)
    newPosy= curPosy;
    else
    newPosy = curPosy-divHeight-10;

   if(window.pageYOffset)
   { newPosy= newPosy+ window.pageYOffset;
     newPosx = newPosx + window.pageXOffset;}
   else
   { newPosy= newPosy+ document.body.scrollTop;
     newPosx = newPosx + document.body.scrollLeft;}

    frm.style.display='block';
    //debugger;
    //alert(document.body.scrollTop);
    frm.style.top= newPosy + "px";
    frm.style.left= newPosx+ "px";

    frm.focus();
    if(animateToolTip){
    frm.style.height= "0px";
    frm.style.width= "0px";
    ToolTip.animate(frm.id,divHeight,divWidth);}
      
    
    }

    

   this.Hide= function(e)
    {frm.style.display='none';
    if(!animateToolTip)return;
    frm.style.height= "0px";
    frm.style.width= "0px";}
    
    
    ToolTip.animate = function(a,iHeight,iWidth)
  { a = document.getElementById(a);
         
   var i = parseInt(a.style.width)+xincr ;
   var j = parseInt(a.style.height)+yincr;  
   
   if(i <= iWidth)
   {a.style.width = i+"px";}
   else
   {a.style.width = iWidth+"px";}
   
   if(j <= iHeight)
   {a.style.height = j+"px";}
   else
   {a.style.height = iHeight+"px";}
   
   if(!((i > iWidth) && (j > iHeight)))      
   setTimeout( "ToolTip.animate('"+a.id+"',"+iHeight+","+iWidth+")",1);
    }
    
   Init(id);
}

Now add these functions to thee page where you want to call tooltip

<script language="javascript">
        var t1;
var timeout;
        function showDetails(e, empid) {
            if (t1) t1.Show(e, "<br><br>Loading...");
document.getElementById("a1").style.display = "none";

//these lines are used when we are having multiple tootlips in page.
            document.getElementById("a2").style.display = "none";
            var url = 'defectstooltip.aspx?def_id=' + empid;
            document.getElementById("a").src = url;
        }

        function hideTooltip(e) {
            if (t1) t1.Hide(e);
        }

</script>

add events to links onmouseover ="showDetails(e, empid);" and onmouseout="hideTooltip(e)"

Note we can also call this tooltip on click event just make small change in function

function showDetails1(e, empid) {
            setTimeout(function () {
               
                if (t2) t2.Show(e, "<br><br>Loading...");
                document.getElementById("a").style.display = "none";
                document.getElementById("a2").style.display = "none";
                var url = 'commentbox.aspx?def_id=' + empid;
                document.getElementById("a1").src = url;
            }, 1000);
        }



Calling javascript function when using update panel

Sometimes we come across situation that we want to call some javascript function from code inside update panel and javascript function didn't execute at all.In 
such situations we can use Script Manager class RegisterStartupScript Method
and it will easily call javascript function.

Eg:- 
ScriptManager
.RegisterStartupScript(Me.Page, Me.GetType(), "temp", 
"<script type='text/javascript'>
window.parent.document.getElementById('a2').style.display='none';
</script>", False)

Sunday, March 17, 2013

'If', 'ElseIf', 'Else', 'End If', or 'Const' expected error while using eval

Sometimes when we are binding any control using eval or bind we come across

an error "'If', 'ElseIf', 'Else', 'End If', or 'Const' expected " the most common is reason that there should be no space between # and directive.