Pages

Aug 6, 2010

How to open Visual Studio 2010 project in Visual Studio 2008

Steps to Open VS2010 project using VS2008:

· Open the .sln file corresponding to the Project to be converted with Notepad
· Locate the following line: Microsoft Visual Studio Solution File, Format Version 11.00
· Replace 11.00 with 10.00
· Locate the following line: # Visual Studio 10
· Replace 10 with 2008
· Save the File
· Delete the .cache files existing in the following paths:
o obj/debug
o obj/release
· Open the project with Visual Studio 2008
· Build the project with Visual Studio 2008

Reference: http://dougortiz.blogspot.com/2009/05/converting-visual-studio-2010-project.html

Aug 5, 2010

How to use dynamic column name in update query + SQL SERVER

This is a General Requirement that we may be in a need to update 
the table using a dynamic column name.
Say for Eg:
Here my case is ,
I need to update a table, when user reaches different stage of the Ordering Proces.
So i have columns as name, age, stage1,stage2,stage3 etc upto 8 stages.
When user enter each stage i will be calling this procedure with stage 
as parameter like 1,2,3 etc.. up to 8.

CREATE PROCEDURE [dbo].[UserTracking_usp]
(       
      @TrackID int
      @Stage varchar(10)
)
AS

BEGIN
            // to store dynamic column name
            DECLARE @CurrentStage varchar(50)
            DECLARE @UpdateSQL varchar(200)

            SET @CurrentStage =
            CASE 
                  WHEN @Stage='2'  THEN  'Stage2'
                  WHEN @Stage='3'  THEN  'Stage3'
                  WHEN @Stage='4'  THEN  'Stage4'
                  WHEN @Stage='5'  THEN  'Stage5'
                  WHEN @Stage='6'  THEN  'Stage6'
                  WHEN @Stage='7'  THEN  'Stage7'
                  WHEN @Stage='8'  THEN  'Stage8'
            END
       SET  @UpdateSQL = 
       'UPDATE User_Tracking SET ' + convert(varchar, @CurrentStage) + '= 1   
       WHERE
       User_Tracking_ID = ' + convert(varchar, @TrackID);
       EXEC (@UpdateSQL)
       END    


So this procedure will examine which column name should be updated
using a case statement and substitute as a dynamic column name for 
update query as shown above.


In the same way one can use for select,delete statements etc..

Jul 12, 2010

How to show date alone in GridView BoundField when using DateTime as DataType in DataBase.


DateTime Formatting in GridView:
Usually we create a field with DataType DateTime in Database 
say for eg. MSAccess database.
Now when you show this in the GridView it shows Date along with 
time like 7/6/2010 8:10:12 PM
But you may be in situation to show only the Date alone.
like 7/6/2010
To do so, simple specify the format in the GridView BoundField like

<Columns>
    <asp:BoundField 
              DataField="Date1" 
              HeaderText="Date" 
              DataFormatString="{0:d}" />
</Columns>

Refer the below link for different other formats
http://msdn.microsoft.com/en-us/library/
system.web.ui.webcontrols.boundfield.dataformatstring.aspx

Jul 10, 2010

How to show a alert message or confirmation when deleting row from GridView without postback + Asp.Net

This is a basic logic needed in Grid-view while deleting a data. By mistake people may click
on the delete button and if there is no alert or confirmation, some valuable data may be lost.
Let's go for implementation, below is the grid-view


<asp:GridView ID="GridView2" runat="server"  AutoGenerateSelectButton="true"
            DataKeyNames="ID"  AutoGenerateDeleteButton="true"
            onrowdatabound="GridView2_RowDataBound" >
      <Columns>
                <asp:BoundField DataField="ID" HeaderText="SL.No" Visible="false"/>
                <asp:BoundField DataField="Project" HeaderText="Project" Visible="false"/>
      </Columns>
</asp:GridView>

In the above grid the two properties namely AutoGenerateSelectButton,
and AutoGenerateDeleteButton let you show the Select and
Delete button on the GridView.
Now on onrowdatabound event of the GridView we implement the logic like


  protected void GridView2_RowDataBound(object sender,
                                                            GridViewRowEventArgs e)
    {
        // Gets the Delete command column, which is the first column
        foreach (Control control in e.Row.Cells[0].Controls)
        {
            // Gets the Delete link button
            LinkButton DeleteButton = control as LinkButton;
            if (DeleteButton != null && DeleteButton.Text == "Delete")
            {
               DeleteButton.OnClientClick =
               "return(confirm('Are you sure you want to delete this record?'))";
            }
        }
    }
The above code will show you an alert message before deleting a row.

How to access ServerSide method from GridView's ItemTemplate

Calling a CodeBehind Method From GridView's ItemTemplate:


While working with GridView, there may be a case where 
we actually need to do some operations in serverside for 
which we may be in a need to call a server side
method from ItemTemplate of a GridView.


Say for example, 
I had a situation where i need to call a server side 
method (which return a string value) from ItemTemplate.
So i used a label in the ItemTemplate like 



<asp:TemplateField HeaderText="Testing">
<ItemTemplate>
<asp:Label ID="lblCustomerAge" Text='<%# GetCategory() %>' runat="server">
</asp:Label>
</ItemTemplate>
</asp:TemplateField>


Here GetCategory is the server side method.Code-behind is given below

  protected string GetCategory()
    {
       // Do whatever you want here
        return "TestCategory"; // For eg. passing a string
    }

Jul 6, 2010

How to split a sentence into word using C# + Regular Expressions


using System;
using System.Text.RegularExpressions;

class Program
{
    static void Main()
    {
        string[] w = SplitWords("This is a Sample, Test");
        foreach (string s in w)
        {
            Console.WriteLine(s);
        }
        Console.ReadLine();
    }

    /// <summary>
    /// Get all the words in the input string and separate them.
    /// </summary>
    static string[] SplitWords(string s)
    {
        //
        // Split on all non-word characters.
        // ... Returns an array of all the words.
        //
        return Regex.Split(s, @"\W+");
        // @      special verbatim string syntax
        // \W+    one or more non-word characters together
    }
}
Output:
This
is
a
Sample
Test

Jul 3, 2010

How to find the System Name in C#

Lets make use of the Namespace 
using System.Security.Principal; to find the System name.


Below is the code:
lblSysNo.Text = WindowsIdentity.GetCurrent().Name.ToString();

Jul 1, 2010

How to pass double couted paramaters to Command line utilities programatically + c#

Invoking a Command Line Utility From C#:


For eg. let's consider FWTools which has a command line utility named 
ogr2ogr for converting tab to kml
Below is the code to invoke the command line utility ogr2ogr

Invoking Command Line without parameters:

// Create an instance for System.Diagnostic.Process
Process proc = new Process();
// Provide the utility name with location
proc.StartInfo.FileName = @"C:\FWTools2.4.7\bin\ogr2ogr.exe";
// Start the process
proc.Start();

Invoking Command Line with normal parameters:
Note: -f, KML, sourcepath, destpath are arguments separted by space
Process proc = new Process(); 
string driver = @"-f KML C:\FWTools2.4.7\bin\zeeee.kml 
C:\FWTools2.4.7\bin\Morocco.tab"
proc.StartInfo.FileName = @"C:\FWTools2.4.7\bin\ogr2ogr.exe";
proc.StartInfo.UseShellExecute = false;
proc.StartInfo.RedirectStandardOutput = true;
proc.StartInfo.RedirectStandardError = true;
proc.StartInfo.Arguments = driver; 
proc.Start();
proc.WaitForExit(); // use if you want your  program to wait for the process to complete.
proc.Close();

Invoking Command Line with Double couted parameters:

Usually space in the arguments list denote that each are separate
argument separated by space.

In the above code KML is the name of the driver used to convert 
Tab to KML.

And to convert ESRI's shape file to MapInfo's Tab file the driver 
used is "MapInfo File", which itself has a space. 

so by default command line arguments will consider it as a
two parameter one is "MapInfo" and other is "File". 
so the program goes wrong.

Below is the solution, how to pass the double couted paremeter

string driver = "-f " + @"""" + "MapInfo File" + @"""" +
 @" C:\FWTools2.4.7\bin\test.tab C:\FWTools2.4.7\bin\test.shp";

By using this methodology, we can pass "MapInfo File" as a 
single argument to a command line utility.

Jun 30, 2010

How to find the GridView RowID on SelectedIndexChanged Event of DropDownList inside ItemTemplate of GridView

Once there is a case where i need to bind a dropdownlist depending 
on the selection of other dropdownlist.
The above case is a usual one which we can do in a selectedIndexChanged Event. 
But here the twist is, 
I have both the dropdownlist inside a GridView as ItemTemplate.
So when i write a selectedIndexChanged how do i identify the actual row id of the GridView where the current DropDownList is present.
Here we go for the solution..
Write the below code to the selectedIndexChanged Event of the DropDownList



// First Identify the row in which the dropdown value has been changed
        GridViewRow gr = (GridViewRow)
            ((DataControlFieldCell)((DropDownList)sender).Parent).Parent;
 //find the control in the current row
        // selected dropdownlist
        DropDownList Projectddl = (DropDownList)gr.FindControl("ddlTest");
        // Dropdownlist to bind
        DropDownList Datumddl = 
               (DropDownList)(gr.FindControl("ddlSamp"));
        if (Projectddl.SelectedItem.Value == "SomeSelectedValue")
        {            
           // bind the second dropdownlist here
          Datumddl .DataSource = dTable;

          Datumddl .DataTextField  = member;
          Datumddl .DataValueField = member;
          Datumddl .DataBind();
        }

Jun 26, 2010

How to find expandedPaneId of Rad Sliding Pane and collapse + Client side

While using more sliding panes in my project , there was a need to expand and collapse panes manually and programatically. 


When doing so, i noticed a problem with Sliding Pane that when we try to expand a pane when already other pane is expanded , there was a mesh. 


Both the panes are expanded but the Close[x] button is not working in the panes.
i.e we are unable to close the pane using the Close[x] button on the pane.


so here we go how to solve this problem?
The solution is " Lets find the expanded pane id for the SlidingZone and collapse it first before opening a new pane. Below is the code.


// finds the Rad sliding zone first in which the pane resides
var slidingZone = $find("SlidingZone1");
(or)
 var slidingZone = $find("<%= SlidingZone1.ClientID %>"); // for Master Page Scenerio


// find the expanded pane id of the zone and collapse it
var expandedPaneId = slidingZone.get_expandedPaneId();


 // To collapse the pane 
      slidingZone.collapsePane(expandedPaneId );



After this, one can perform expand collapse pane operations as shown in my previous post without mesh.

May 17, 2010

How to Add a Water mark text to an image using C#.

 Below is the method which will add a text as a water marked text to an image.


 public Bitmap WaterMarkToImage(string ImagePath, string watermark)
            {
                Bitmap bmp;
                bmp = new Bitmap(ImagePath);
                Graphics graphicsObject;
                int x, y;
                try
                {
                    //create graphics object from bitmap
                    graphicsObject = Graphics.FromImage(bmp);
                }
                catch (Exception e)
                {
                    Bitmap bmpNew = new Bitmap(bmp.Width, bmp.Height);
                    graphicsObject = Graphics.FromImage(bmpNew);


                    graphicsObject.DrawImage(bmp, new Rectangle(0, 0, 
                    bmpNew.Width, bmpNew.Height), 0, 0, bmp.Width, 
                    bmp.Height, GraphicsUnit.Pixel);
                    bmp = bmpNew;
                }


                int startsize = (bmp.Width / watermark.Length);
               //get the font size with respect to length of the string


                //x and y cordinates to draw a string
                x = 0;
                y = bmp.Height / 2;                    


               System.Drawing.StringFormat drawFormat = 
               new System.Drawing.StringFormat(StringFormatFlags.NoWrap);
                //drawing string on Image
                graphicsObject.DrawString(watermark, new Font("Verdana", 
                startsize, FontStyle.Bold), 
                new SolidBrush(Color.FromArgb(100, 255, 255, 255)), x, y, drawFormat);


                //return a water marked image
                return (bmp);
            }


Method Call:

         System.Drawing.Bitmap bmp = 
         WaterMarkToImage(@"D:\images\IMG_2933.jpg", "Intraspatial Softech");
         bmp.Save(@"D:\images\c1.jpg");


May 14, 2010

Problem calling Java-script method from codebehind with master-page and update panel

we normally use
Page.ClientScript.RegisterStartupScript(this.GetType(), "key", "Sys.Application.add_load(method_Name);", true);
to call a javascript on runtime form code behind.
Placing the above code on page load or a button click makes the script to fire on the start up of subsequent postback.


But this make not work in the case where we give a
ajax post back intead of normal postback.


so to call a javascript method on ajax postback , here we go


ScriptManager.RegisterClientScriptBlock(Page, this.GetType(), "Key", "ServiceDownAlert();", true);


Javascript Method:

function ServiceDownAlert() {
        alert("Image Not Available ! Please Try Later !");
    }

Apr 19, 2010

How to set a Navigation tool as active tool on page load in MaxExtrem 6.8.0

Set Zoom-In Tool as Active Tool on Page Load:
Usually the sample applications that map extreme provide have no tools set as a default active tool.
We need to select the tool(say ZoomIn tool or Zoom out etc as per our requirements). But while developing applications for customer requirement we may need to set some tool as active tool so as to simply the customer process.


Below is the method used to set the Zoom-In tool as the Active tool on page load.
private void SetActiveTool(string toolName)
    {
        string activateCode = String.Format("{0}Tool.Activate();", "ctl00$ContentPlaceHolder1$" + toolName);
        string activateScript = String.Format("<script type='text/javascript'>AppendScriptToForm('{0}');</script>", activateCode);
        Page.RegisterStartupScript("Key1", activateScript);
    } 


The above code applies for the Master Pages. You can directly provide the tool name in normal page scenario.

How to Expand and Collapse a rad Sliding pane from client side while using Master Pages.

Below is the code used to Expand the Rad Sliding Pane:


       // finds the Rad sliding zone first in which the pane resides
        var slidingZone = $find("<%= SlidingZone1.ClientID %>");
       // finds the Rad sliding pane need to be expanded.
        var pane = $find("<%= SlidingPane1.ClientID %>");
       // Expands the pane
        slidingZone.expandPane(pane.get_id());


      // To collapse the pane 
      slidingZone.collapsePane(pane.get_id());

Apr 5, 2010

How to stretch the contents of the web page to its full extent without margin?

This is because the default margin has some values set when we create a web page. so set the margin to 0 to 
stretch your page content to the full extent of the web page using the CSS.


<style type="text/css">
body {
 margin-top: 0px;
 margin-right: 0px;
 margin-bottom: 0px;
 margin-left: 0px
}
</style>


Or even simplied as


<style type="text/css">
body {
 margin : 0px;
}

Mar 2, 2010

how to make the server side button click event firing depend on javascript return?

Using OnClick and OnClientClick:
Usually we have situations where we have to check for something in the client side and decide whether to fire the server side event or not.
Say for eg.
some client side validations. Lets see how to do this
Now in the sever side OnClick event i have certain operation to be performed, 
before that i need to make some client side validations. 
Say for eg. To check for GridView's count and decide whether to allow or stop the servide side event firing.

<asp:Button ID="btnSubmit" runat="server" 

OnClientClick="javascript:return CheckGridCount();" OnClick="btnSubmit_Click" />
Above is the way we call the javascript method CheckGridCount() to perform the check.



function CheckGridCount()
{
    var gv = document.getElementById('gridView1');
    var count = gv.rows.length;
    if(count >0)
  {
     return true;
  }
  else
  {
   alert("Please select Atleast one item");
    return false;
  }
}

If the above method return true then the server side event fires and postback occurs
else an alert is shown and nothing happens thus avoiding an unnecessary postback.