Pages

Aug 26, 2010

How to find Country's Name using IP Address in Asp.Net

Use the below free web-service to get the country name using IP Address.
 http://www.webservicex.net/geoipservice.asmx?wsdl


Add the service to your web or windows application and name the service
as say for eg. locationFinder
Now access it in your code as
// Create instance for the service

LocationFinder.GeoIPService service = new LocationFinder.GeoIPService();
// Gets the country name.
string country = service.GetGeoIP("216.241.xxx.xx").CountryName;


To get the ipAddress of the Client machine use
String ipAddress = Request.UserHostAddress.ToString();

Aug 11, 2010

Simple login page using Forms's Authentication + Asp.Net + C#

Login Page Implementation[Forms Authentication] :
Login page implementation is a basic need in most applications.
Now lets see a simple implementation of the Login Page in asp.net.
Create a page named Login.aspx  and add a table like

Login:

<table align="center">    
      <tr>
        <td>
          UserName :</td>
        <td>&nbsp;
          <asp:TextBox ID="txtUserName" runat="server" /></td>
        <td>
          <asp:RequiredFieldValidator ID="RequiredFieldValidator1" 
            ControlToValidate="txtUserName"
            Display="Dynamic" 
            ErrorMessage="Please Enter User Name" 
            runat="server" />
        </td>
      </tr>
      <tr>
        <td>
          Password  :</td>
        <td>
          <asp:TextBox ID="txtPassword" TextMode="Password" 
             runat="server" />
        </td>
        <td>
          <asp:RequiredFieldValidator ID="RequiredFieldValidator2" 
            ControlToValidate="txtPassword"
            ErrorMessage="Please Enter Password." 
            runat="server" />
        </td>
        </tr>   
          <tr>
          <td colspan="3" align="left">
            <asp:Button ID="Submit1" OnClick="Logon_Click" Text="Log On" 
                runat="server" />
            </td>
          </tr>  
          <tr>
            <td colspan="3">
                <p>
                  <asp:Label ID="Msg" ForeColor="red" runat="server" />
                </p>
            </td>
          </tr> 
    </table>

Now add the code-behind for login page like

     // if you have more users then store the username and
     // password in back-end database and perform the check

     if ((txtUserName.Text == "mukunda") && (txtPassword.Text == "easyone1"))
        {
            // This statement will redirect to start page automatically.
            FormsAuthentication.RedirectFromLoginPage
               (txtUserName.Text, false);
        }
        else
        {
            // to show error message for invalid login.
            Msg.Text = "Invalid credentials. Please try again.";
        }

To make the above code work we need to add the following to web config

        <authentication mode="Forms">
      <forms loginUrl="Login.aspx" name=".ASPXFORMSAUTH">
  </forms>
  </authentication>
  <authorization>
<deny users="?"/>
  </authorization>
      inside <system.web> tag.

And in the Main page you can access the logged user name and
show it in a label like
lblEmpID.Text = Context.User.Identity.Name;

LogOut :
To log out the current user you need to add a link button in main page
<asp:LinkButton ID="Submit1" runat="server" 
OnClick="Signout_Click">Sign Out</asp:LinkButton>    
    
Code-Behind:

    /// <summary>
    /// event for signingout the current page & redirect to Login page
    /// </summary>    
    protected void Signout_Click(object sender, EventArgs e)
    {
        FormsAuthentication.SignOut();
        Response.Redirect("Login.aspx");
    }
  
Now a simple login implementation using Forms Authentication is done!

Aug 10, 2010

Simple Add,Edit,Update and Delete operations in GridView + Asp.net 3.5

Lets first create a table in MSAccess like below named Customer

Customer Table















Aspx Page:

Drag a gridview and fields and event as given below


<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
                DataKeyNames="ID" onrowcommand="GridView1_RowCommand"
                onrowdeleting="GridView1_RowDeleting"
                onrowediting="GridView1_RowEditing"
                onrowdatabound="GridView1_RowDataBound"
                onrowupdating="GridView1_RowUpdating">
                <Columns>
                    <asp:BoundField DataField="ID" HeaderText="ID" ReadOnly="true"/>
                    <asp:TemplateField HeaderText="Name">
                        <EditItemTemplate>
                            <asp:TextBox ID="txtTName" runat="server"
                             Text='<%# Bind("Name") %>'></asp:TextBox>
                        </EditItemTemplate>
                        <ItemTemplate>
                            <asp:Label ID="Label1" runat="server" Text='<%# Bind("Name") %>'>
                            </asp:Label>
                        </ItemTemplate>
                    </asp:TemplateField>
                    <asp:TemplateField HeaderText="Age">
                        <EditItemTemplate>
                            <asp:TextBox ID="txtTAge" runat="server"
                            Text='<%# Bind("Age") %>'></asp:TextBox>
                        </EditItemTemplate>
                        <ItemTemplate>
                            <asp:Label ID="Label2" runat="server" Text='<%# Bind("Age") %>'>
                           </asp:Label>
                        </ItemTemplate>
                    </asp:TemplateField>
                    <asp:CommandField ShowDeleteButton="True" />
                    <asp:CommandField ShowEditButton="True" />
                </Columns>
            </asp:GridView>

.cs page:
// Create a connection to Access Database.
OleDbConnection aConnection = new OleDbConnection
 ("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\\CustomerInfo.mdb");

// Binds grid on page load.

protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            bindGrid();
        }
    }


// Method to bind grid

private void bindGrid()
    {
        string query = string.Empty;
        OleDbCommand cmd = null;
        OleDbDataAdapter adap = null;
        DataSet ds = new DataSet();
        try
        {
            aConnection.Open();
            query = "SELECT * FROM Customer";
            cmd = new OleDbCommand(query, aConnection);
            adap = new OleDbDataAdapter(cmd);
            adap.Fill(ds);
            GridView1.DataSource = ds;
            GridView1.DataBind();
        }
        catch (Exception)
        {
          
            throw;
        }
        finally
        {
            aConnection.Close();
        }

// To make the grid editable when edit button clicked

protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
    {
        GridView1.EditIndex = e.NewEditIndex;
        bindGrid();
    }

// Performs Delete and Update operations

protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
    {
        int cusID = 0;
        GridView gv = (GridView)sender;
       // to find the Current ID selected.
        cusID = Convert.ToInt32(
        gv.Rows[Convert.ToInt32(e.CommandArgument)].Cells[0].Text);
        if (e.CommandName == "Delete")
        {
            DeleteCustomer(cusID);
        }
        if (e.CommandName == "Update")
        {
           // to find the edit text box  value.
           TextBox txtname = GridView1.Rows[Convert.ToInt32(e.CommandArgument)]
            .FindControl("txtTName") as TextBox;
           TextBox txtage = GridView1.Rows[Convert.ToInt32(e.CommandArgument)].
            FindControl("txtTAge") as TextBox;
            updateCustomer(txtname.Text, txtage.Text, cusID);
        }
    }

//To create an Alert before deleting the row in gridview.

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        foreach (Control control in e.Row.Cells[3].Controls)
        {
            LinkButton DeleteButton = control as LinkButton;
            if (DeleteButton != null && DeleteButton.Text == "Delete")
            {
                DeleteButton.OnClientClick =
                 "return(confirm('Are you sure you want to delete this record?'))";
            }
        }
    }

// Method to Delete Customer Information

private void DeleteCustomer(int ID)
    {
        string query = string.Empty;
        OleDbCommand cmd = null;
        try
        {
            query = "DELETE FROM Customer WHERE ID=" + ID;
            cmd = new OleDbCommand(query, aConnection);
            aConnection.Open();
            cmd.ExecuteNonQuery();
            aConnection.Close();
            bindGrid();
          
        }
        catch (Exception)
        {

            throw;
        }
        finally
        {
          
        }
    }

// Method to update customer with edit values.

private void updateCustomer(string name, string age, int ID)
    {
        string query = string.Empty;
        OleDbCommand cmd = null;
        try
        {
            query = "UPDATE Customer SET Name='" + name + "',Age='" +
                         age + "' WHERE ID=" + ID;
            cmd = new OleDbCommand(query, aConnection);
            aConnection.Open();
            cmd.ExecuteNonQuery();
            aConnection.Close();
            GridView1.EditIndex = -1;
            bindGrid();
        }
        catch (Exception)
        {

            throw;
        }
    }

Above given is the code used to perform Edit,Update
and delete operations in a gridview.

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..