Wednesday, July 15, 2015

Enable OLE Automation in SQL Server

In order to enable OLE Automation, run the following SQL Commands.

sp_configure 'show advanced options', 1;
sp_configure 'Ole Automation Procedures', 1;

Thursday, December 4, 2014

Browsable / DesignerSerializationVisibility / EditorBrowsable

There are a lot of Attributes that come to help us all along when we develop custom controls for ASP.NET.

Here are a few important ones that would perform some basic operations for us during development.

These are more useful at design time then actual render time.

//This attribute when true shows up the property in the Properties Grid for a control[Browsable(true)] 
//This attribute sets whether the property would be available to VisualStudio Code Editor Intellisense.[EditorBrowsable(EditorBrowsableState.Never)] 
//This attribute sets whether the property would be serialized in the Designer HTML View or not.[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]

Explore the options available with these enums and their effects to know more on those attriutes.

IMP - There could be times when changing these attributes would not have any effect. 

Keep Calm :) .

This could be because of Visual Studio caching the intellisense schema and displaying the cached schema for you.

Simply clear the cache by deleting all the files in 
"C:\Documents and Settings\[YOUR_USER_NAME]\Application Data\Microsoft\VisualStudio\10.0\ ReflectedSchemas"

or whereever your schema files are located.

Further, another important aspect is that even when you do all this, the added custom property would be available to you at design time as well as code behind. However this property would not be rendered with the page and as a result, it would not be available at the client side for any operation.

Usually this is not required but in case you need that property to be available to you client side as an attribute, all you need to do is overwrite the AddAttributesToRender method.

// Overriding the AddAttributesToRender Method because we need to add the custom       
// properties and there values to its control html so we can use access them on        
// Client Side using JavaScript        
protected override void AddAttributesToRender(HtmlTextWriter writer)        
             writer.AddAttribute("PropertyName", this.PropertyName);
            // Calling Base Class AddAttributesToRender Method                 

Saturday, October 4, 2014

ImageButton PostbackUrl not working (DoPostBackWithOptions)

This is a common problem.

I copied over a working code from my old project into this new project and it stopped working.

No postbacks occuring. When I did view source, the source for the old page (working) and the new page (not working) were exactly the same for these controls.

The image button uses DoPostBackWithOptions

So I started looking for help related to DoPostBackWithOptions.

Finally figured out. The issue being multiple instances of "FORM" being created.

If you have more than one forms on the page, ASP.NET does not know which one to post to and stays on the safer side by not posting to any ( :) )

Remove all but one form tags from your page and it will start working.

Sunday, November 10, 2013

Instance Failure

This rather "Strange and UnCommon" error comes up mostly while connecting do database via your C# application.

Reason: - In your connection string, when there is a escape sequence (\), C# converts it to "\\" so that it could be treated the way it needs to.

Therefore if you provide a connection string as "DataSource=ServerName\SQL", c# automatically converts it to  "DataSource=ServerName\\SQL" and reads it the way it needs to.

However, if we actually provide the string something like  "DataSource=ServerName\\SQL" (With Double Back Slashes), then it raises this error causing "Instance Failure".

Solution: Use a SINGLE ( \ ) instead of Double ( \\ ).

Tuesday, July 2, 2013

Get a List of all Countries

This is a very common requirement that comes up to me in every alternate application that I make. I know there would be a lot of people like me who have the same issue.

At first I thought of consuming a ready made webservice that would give me the list of all countries.

Then upon further research, I found a very simple yet effective solution to my problem:

Here is a function that returns a List of Country Names.

public static List GetCountryList()
            List _CultureList = new List();
            CultureInfo[] _CultureInfo = CultureInfo.GetCultures(CultureTypes.SpecificCultures);
            foreach (CultureInfo _Culture in _CultureInfo)
                RegionInfo _RegionInfo = new RegionInfo(_Culture.LCID);
                if (!(_CultureList.Contains(_RegionInfo.EnglishName)))
            return _CultureList;

Tuesday, March 5, 2013

Only parameterless constructors and initializers are supported in LINQ to Entities

This is the error that usually come up when you try to run a LINQ Query and return an object out of this QUERY.

Something like the below example:
var query = (from c in ctx.Clients
                         where l.UserID == userid
                         select new ClientList(c.ClientFirstName, c.ClientLastName,  c.ClientEmail)
Well the Error is Pretty much self explanatory. No Parameterized constructors are allowed for LINQ to Entities...

Workaround ?
Change your Query to something like this..
var query = (from c in ctx.Clients            
                         where l.UserID == userid
                         select new ClientList{ClientFirstName= c.ClientFirstName, ClientLastName= c.ClientLastName, ClientEmail= c.ClientEmail}

Thursday, December 20, 2012

JQuery Autocomplete "Internal Server Error"


This is something that is very common for all of us to encounter. I encountered this N no. of times during my work and most of the times for all new reasons then before.

Here are a few things that you could look out for:

This error clearly mentions that it is a "Server Error" which means we could not get a proper response back from the server. So chk for these....

1. Make sure you are calling to the correct WebService and correct Method of the webservice.

2. The make sure you pass the correct name of the parameter as requested by the WebMethod.

3. The method should be marked as WebMethod in the WebService.

4. Debug through your Webmethod to see if it fails somewhere.

5. If you are not at all getting the Webmethod to hit (Which was precisely my case), then look for the
tag above your asmx.

To allow this Web Service to be called from script, using ASP.NET AJAX, you need to have the  following line on top of your WebService declaration


Hope this helps... 

Sunday, October 28, 2012

Could not find any resources appropriate for the specified culture or the neutral culture. Make sure "AjaxControlToolkit.Properties.Resources.NET4.resources" was correctly embedded or linked into assembly "AjaxControlToolkit" at compile time, or that all the satellite assemblies required are loadable and fully signed.

Thats the Error: 

Reason:  AjaxControlToolkit’s control load reference refers to the base System.Web.UI.Control method which is present as a part of the ASP.NET AJAX Libraries and those libraries are referenced only when the ScriptManager is referenced in the page.

Solution: - Add a ScriptManager control to your page.

<asp:ScriptManager ID="ScriptManager1" runat="server">

Friday, August 10, 2012

The Controls collection cannot be modified because the control contains code blocks

The above error is very common when we try to access server side values on client side using Javascript.

The solution to this problem is simple.

1. The Server Tag to get values of any variable or property is as below
var propVal = '<%= ServerSideProperty %>';
This is also particulartly helpful when accessing Web.Config values in Javascript as:
var configVal = '<%= ConfigurationManager.AppSettings["ConfigPropName"] %>';

This would raise the above error. And the solution to it, "Replace the "=" with a "#""
So now your properties would be something like
var propVal = '<%= ServerSideProperty %>';
var configVal = '<%= ConfigurationManager.AppSettings["ConfigPropName"] %>';

Now, if you are accessing any Data bound values, such as in a grid view etc, then this would work good for you but for accessing properties or other variables, here is another small piece of code required.

On Page Load, we need to Bind these together using
Unless you do this, you would not be able to access these values and they would return a BLANK.