Tuesday, 30 April 2013

State Management

Web and HTTP protocol are stateless. Hence server cant identify whether or not two requests came from same user and server will treat every request as the request from a new user. Because of the stateless nature of the web it is not possible to develop applications like shopping cart and implementing security in the websites. To overcome this problem, Asp.Net provides state management techniques. Client Side State Management techniques include Cookies, Viewstate and QueryString Parameters and Server side state management techniques include Session, Application and Caching.

 COOKIES

A cookie is a small amount of memory allocated on client system for storing personnel information about the client like remembering user id and password, making a count of failed login attempts, security and also session state management. To create a cookie use HttpCookie class and to assign a value to the cookie use its Value property and finally to store it in a client system call AppendCookie() method of Response object.

Sunday, 28 April 2013

Extensible Markup language (XML).

         XML Stands for Extensible Markup Language. Its a language much like HTML which was designed to carry data, not to display data and also self-descriptive. XML does not do anything. XML was created to structure,store and transport information. XML tags are not predefined, you must define your own tags. XML is not a replacement for HTML, HTML and XML were designed with different goals:
  • XML was designed to transport and store data, with focus on what data is.
  • HTML was designed to display data, with focus on how data looks.
  • HTML is about displaying information, while XML is about carrying information.
To create an XML document we need to satisfy a set of rules that are prescribed by W3C, as following
  • An XML doc has to be saved with .xml extention.
  • Data under XML doc should be present only under tags, where every tag should have a start and end element.       eg:   <Tag><Tag> Or <Tag id="1"/>
  • Tags can also be defined with attribute which are user-defined where value to attribute should be enclosed under double quotes.
  • While defining tags start and end tag should match in case.
  • An Xml doc can only have one root element.

Friday, 26 April 2013

Accessing MS Excel data from .Net Application

Ms Excel is a file system which stores data in the form of rows and columns same as a database table. An Excel document is referred as Work Book that contains Work Sheets in it, work books are considered as databases and work sheets are considered as tables.First row of work sheet can store column names.


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.Odbc;

namespace WinForms7
{
    public partial class Form6 : Form
    {
        public Form6()
        {
            InitializeComponent();
        }
        OdbcConnection con; OdbcCommand cmd; OdbcDataReader dr; string Sqlstr;
        private void Form6_Load(object sender, EventArgs e)
        {
            con = new OdbcConnection("Dsn=ExcelDsn; ReadOnly=0");
            cmd = new OdbcCommand();
            cmd.Connection = con;
            con.Open();
            LoadData();
            label1.Text = dr.GetName(0); label2.Text = dr.GetName(1);
            label3.Text = dr.GetName(2); label4.Text = dr.GetName(3);
               
        }
        private void LoadData()
        {
            cmd.CommandText = "Select * from[Student$]";
            cmd.ExecuteReader();
            ShowData();


        }
        private void ShowData()
        {
            if (dr.Read())
            {
                textBox1.Text = dr[0].ToString();
                textBox2.Text = dr[1].ToString();
                textBox3.Text = dr[2].ToString();
                textBox4.Text = dr[3].ToString();
            }
            else
                MessageBox.Show("No data exists");

               
        }

        private void button3_Click(object sender, EventArgs e)
        {
            ShowData();
        }

        private void button2_Click(object sender, EventArgs e)
        {
            textBox1.Text = textBox2.Text = textBox3.Text = textBox4.Text = " ";
            textBox1.Focus();
        }
        private void ExecuteDML()
        {
            dr.Close();
            cmd.CommandText = Sqlstr;
            if (cmd.ExecuteNonQuery() > 0)
                MessageBox.Show("Insert or Update operation was successful");
            else
                MessageBox.Show("Insert or Update operation failed");

                LoadData();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Sqlstr = String.Format("Insert into [Stident$] values({0},'{1}' {2},{3})", textBox1.Text, textBox2.Text, textBox3.Text, textBox4.Text);
            dr.Close();
            ExecuteDML();
        }

        private void button5_Click(object sender, EventArgs e)
        {
            Sqlstr = String.Format("Update [Stident$] Set Sname='{0},Class={1}, Fees= {2} where Sno={3}", textBox2.Text, textBox2.Text, textBox3.Text, textBox4.Text);
            dr.Close();
            ExecuteDML();
        }
    }
}

Thursday, 25 April 2013

DataList, Repeater and FormView and Details View Controls

Today, I practiced some examples using Data List Control, Repeater and FormView Controls in Asp.Net.
 
DataList Control: 

Datalist control is similar to gridview except that it has no predefined layout and hence it can be designed in any layput you want, which is not possible with gridview because it has predefined table layout. It doesn't support paging and sorting wheareas gridview supports paging and sorting.

Repeater:

Repeater control can display multiple rows to gridiew and datalist. But unlike gridview and datalist the data in repeater is readonly.Similar to datalist it has no predefined layout and you can design it with any layout. As repeater is readonly, it has very limited set of properties, methods and events and hence it is very light weight and provides fast access, it has the important properties DatasourceId and Datasource. It has only one important event ItemCommand that will be raised when user click on any button within the repeater.

Wednesday, 24 April 2013

GridVeiw

GridVeiw control is one of the data controls provided in ASP.net that can display Multiple rows at a time. GridVeiwhas a predefined table layout that displays the data in the table format. Gridveiw supports update, delete and sorting but it does not suppoort insert. Gridveiw also supports paging using which we can divide rows of the grid veiw into pages.

Properties
  • AllowPaging
  • PagerSettings
  • PageSize
  • PageIndex
  • AllowSorting
  • EnableSortingAndPagingCallbacks
  • AytoGenerateColumns
  • AutoGenerateDeleteButton
  • AutoGenerateEditButton
  • AutoGenerateSelectButton
  • Columns
  • DataKeyName
  • SelectedIndex
  • SelectedValue
  • DataSource
  • DataSourceID
  • EditIndex
  • EmptyDataText
  • HeaderRow
  • FooterRow
  • Rows
  • ShowHeader
  • ShoeFooter
Events
  • SelectedIndexChanging
  •  PageIndexChanging
  • RowEditing
  • RowUpdating
  • RowCancelingEdit
  • RowDeleting
  • Sorting

Tuesday, 23 April 2013

Image Map

Image Map is used to divide the image into different hotspots and allow the user to navigate to different pages by clicking on different hotspot or execute different code when user clicks on different hotspot or execute different code when user clicks on different hotspot based on the hotspot on which user clicked. It has thee property image URL to specify the image to display within the ImageMap and the property hotspots to specify different hotspots required within the image map.

Three different types of hotspots you can create within the Imagemap and they are circle hotspot, rectangle hotspot and polygon hotspot. The rectangle hotspot has the properties bottom,left, right and top to specify position and size of the rectangle hotspot and circle hotspot has the properties radius x and y to specify the radius and center point of the circle and polygon hotspot and circle hotspot has the property co ordinates to specify the points using which you want to draw the polygon.

All the types of hotspots have the following three properties :-
  • Hotspot Mode:-  Used to specify the mode of hotspot and it has the options like not set, inactive, navigate and postback.
  • Navigate Url:- Used to specify Url of the page to navigate when hotspot mode is set to navigate and user click on the hotspot.
  • Target :- When Hotspot Mode is set to navigate then this property is used to specify the target when to display the navigate URL.
 

Monday, 22 April 2013

Ad Rotator Control

Ad Rotator is used to display advertisements on the page and change the advertisement with every request. Ad rotator support displaying the advertisement from an XML file and also from the database.

Properties:
  • Advertisement File: When you want to display advertisements in the ad rotator from a XML file then this property is used to specify URL of the XML file from which to take the details of advertisements.
  • Alternate Text Field: Used to specify column name in table that contains alternate tex for the advertisements.
  • ImageUrlField: Used to specify column name in the table that contain Url of the image to display for the advertisements.
  • Navigate Url Field: Used to specify the column name in table that contains Url of the page to display when user clicks on the advertisements.
  • DataSource: Used to specify ID of a data source control to use as a data source for the ad rotator.
  • KeywordFilter:Used to specify a keyword based on which advertisements displayed in the ad rotator will be filtered.

Calender Control

Calender is used to display calender to the user on the page and allow the user to select a date or a range of  dates.

Properties:
  • DateNameFormat : Used to specify the format in which the week name is displayed within the calender.
  • FirstDayofWeek:Used to specify week name in which you want to start the calender.
  • SelectedDate: Used to specify the date selected within the calender.
  • Selection Mode: Used to specify whether user can select a single date or day and week or day, week and month.
Events:
  • SelectionChanged: This is the default event for the calender and it eill be raised whenever a new date is selected in the calender.
  • DayRender: This event will be raised once for every day rendered in the calender.

DataGridVeiw Control

This control is used to display the data in the form of a table i.e. rows and columns. To display data in the control first we need to bind the DataTable of DataSet to the GridVeiw control by using a DataSource property as following
                  dataGridVeiw1.DataSource=<datatable>

DataGridVeiw control has a specialty ie changes performed to data in it gets reflected directly to the data of DataTable to which it was bound, so that we can update dataset back to database directly.

To test this add a new form in the project and place a DataGridVeiw control on it setting the dock property as top. Now place 2 buttons on the form setting the text as save and close


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
using System.Configuration;

namespace WindowsFormsApp
{
    public partial class Form9 : Form
    {
        public Form9()
        {
            InitializeComponent();
        }
        SqlConnection con;
        SqlDataAdapter da;
        SqlCommandBuilder cb;
        DataSet ds;
        private void Form9_Load(object sender, EventArgs e)
        {
            string constr = ConfigurationManager.ConnectionStrings["SConstr"].ConnectionString;
            con = new SqlConnection(constr);
            ds = new DataSet();
            da = new SqlDataAdapter("Select Eno,Ename,Job,Salary From Employee Order By Eno", con);
            da.Fill(ds, "Employee");
            dataGridView1.DataSource = ds.Tables[0];

        }

        private void btnsave_Click(object sender, EventArgs e)
        {
            cb = new SqlCommandBuilder(da);
            da.Update(ds, "Employee");
            MessageBox.Show("Data saved to db sarver");
        }

        private void btnclose_Click(object sender, EventArgs e)
        {
            this.Close();
        }
    }
}

Thursday, 18 April 2013

Add a new form in the project and design it as following






using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
using Microsoft.VisualBasic;
namespace WindowsFormsApp
{
    public partial class Form7 : Form
    {
        SqlConnection con;
        SqlCommandBuilder cb;
        DataSet ds;
        int rno = 0;
        SqlDataAdapter da;

        public Form7()
        {
            InitializeComponent();
        }

        private void Form7_Load(object sender, EventArgs e)
        {
            con = new SqlConnection("server=localhost; database=db1;uid=cheryl;trusted_connection=true");
            da = new SqlDataAdapter("Select Eno,Ename,Job,Salary from Employee Order By Eno", con);
            ds = new DataSet();
            da.MissingSchemaAction = MissingSchemaAction.AddWithKey;
            da.Fill(ds, "Employee");
            ShowData();
        }
        public void ShowData()
        {
            txteno.Text = ds.Tables[0].Rows[rno][0].ToString();
            txtname.Text = ds.Tables[0].Rows[rno][1].ToString();
            txtjob.Text = ds.Tables[0].Rows[rno][2].ToString();
            txtsalary.Text = ds.Tables[0].Rows[rno][3].ToString();
        }

        private void btnfirst_Click(object sender, EventArgs e)
        {
            rno = 0;
            ShowData();
        }

        private void btnprev_Click(object sender, EventArgs e)
        {
            if (rno > 0)
            {
                rno -= 1; ;
                if (ds.Tables[0].Rows[rno].RowState == DataRowState.Deleted)
                {
                    MessageBox.Show("Deleted row cannot be accessed.");
                    return;
                }
                ShowData();
            }
            else MessageBox.Show("First record of table");
        }

        private void btnnext_Click(object sender, EventArgs e)
        {
            if (rno 0)
            {
                int Eno = int.Parse(value);
                DataRow dr = ds.Tables[0].Rows.Find(Eno);
                if (dr != null)
                {

                    txteno.Text = dr[0].ToString();
                    txtname.Text = dr[1].ToString();
                    txtjob.Text = dr[2].ToString();
                    txtsalary.Text = dr[3].ToString();
                }
                else
                {
                    MessageBox.Show("Employee doesnot exist for a given employee no.");
                }
            }

        }

        private void btnclose_Click(object sender, EventArgs e)
        {
            this.Close();

        }
    }
}

Wednesday, 17 April 2013

Configuration files

While developing applications if there are any values in application which requires changes in future, should not be hard coded i.e. should not be maintained as static values within the application, because if any changes are required to those values in future client will not be able to make those changes because they will not have the source code for modification. To overcome this problem we need to identify those values and put them under a special file known as configuration file, its an XML file which stores values in it in the form of key/value pairs. The values that are present under configuration files can be read from applications in runtime. When an application is installed on a client machines along with it its configuration file will also be installed there and because the configuration file is a text file clients can edit those files and make modifications to the values under them at any time and those values will be taken into the application for execution.

Tuesday, 16 April 2013

Connecting .net application with Sql Server


We can connect with Sql Server from .net applications either by using Oledb or SqlClient class.

Add a new form in the project and design it as follows :-


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;

namespace WindowsFormsApp
{
    public partial class Form6 : Form
    {
        SqlCommand cmd;
        SqlConnection con;
        SqlDataReader dr;
        string SqlStr;
        public Form6()
        {
            InitializeComponent();
        }

        private void Form6_Load(object sender, EventArgs e)
        {
            con = new SqlConnection("server=localhost; database=db1;uid=cheryl;trusted_connection=true");
            cmd = new SqlCommand();
            cmd.Connection = con;
            con.Open();
            LoadData();
        }
       public void LoadData()
       {
           cmd.CommandText="Select sid,sname,course from stud Order By sid ";
           dr = cmd.ExecuteReader();
           ShowData();
       }
        public void ShowData()
        {
            if (!dr.IsClosed && dr.Read())
            {
                txtid.Text = dr[0].ToString();
                txtname.Text =dr[1].ToString();
                txtcourse.Text = dr[2].ToString();
            }
            else
                MessageBox.Show("No data exists");
        }

        private void btnnext_Click(object sender, EventArgs e)
        {
            ShowData();
        }

        private void btnnew_Click(object sender, EventArgs e)
        {
            txtid.Text = txtname.Text = txtcourse.Text = "";
            dr.Close(); 
            cmd.CommandText = "Select IsNull(Max(sid),1000)+1 from stud";
            txtid.Text = cmd.ExecuteScalar().ToString();
            btninsert.Enabled = true;
            txtname.Focus();
        }
        private void ExecuteDML()
        {
            DialogResult d = MessageBox.Show("Are you sure of executing the above SQL statement?\n\n" + SqlStr, "Comfirmation", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
            if (d == DialogResult.Yes)
            {
                cmd.CommandText = SqlStr;
                int count = cmd.ExecuteNonQuery();
                if (count > 0)
                    MessageBox.Show("Statement executed successfully");
                else
                    MessageBox.Show("Statement failed execution");
            }
        }

        private void btninsert_Click(object sender, EventArgs e)
        {
            SqlStr = "Insert into Stud(sname,course) values ('" + txtname.Text + "','" + txtcourse.Text + "')";
            ExecuteDML();
            btninsert.Enabled = false;
        }

        private void btnupdate_Click(object sender, EventArgs e)
        {
            SqlStr = "Update Stud set sname ='"+ txtname.Text + "', course = '" + txtcourse.Text + "' Where sid="+txtid.Text;
            dr.Close();
            ExecuteDML();

        }

        private void btndelete_Click(object sender, EventArgs e)
        {
            SqlStr = "Delete From Stud where sid=" + txtid.Text;
            dr.Close();
            ExecuteDML();

        }

        private void btnclose_Click(object sender, EventArgs e)
        {
            if (con.State != ConnectionState.Closed)
            {
                con.Close();

            }
            this.Close();

        }
    }
}

Friday, 12 April 2013

Moving towards connectivity

     Pretty much every application deals with data in some manner, whether the data comes from memory, databases, XML files, or something else. The location where we store the data can be called as Data Source or Data Store where a Data Source can be a file, database or indexing servers etc. Programming languages cannot communicate with Data Sources directly because each Data Source adopts a different protocol (set of rules) for communication, so to overcome the problem long back Microsoft has introduced intermediate technologies like JET, Odbc and Oledb which works like a bridge between the applications and Data Sources to communicate with each other.
     The Microsoft jet database engine is a database engine on which several microsoft products have been built. A database engine is the underlying component of a database, a collection of information stored on a computer in a systematic way. The first version of jet was developed in 1992, consisting of three modules which could be used to manipulate a database. Jet stands for Joint Engine Technology, sometimes been referred to as Microsoft jet engine or simply jet. Microsoft Access and Excel use JET as their underlying database engine.
    ODBC(Open Database Connectivity) is a standard C programming language middleware API for accessing database management systems (DBMS). ODBC accomplishes DBMS independence by using an OBBC driver as a translation layer between the application and the DBMS. An application uses ODBC functions through an ODBC driver manager with which it is linked, and the driver passes the query to the DBMS.
   OLE DB (Object Linking and embedded database), an API designed by Microsoft, allows accessing data from a variety of sources in a uniform manner. The API provides a set of interfaces implemented using the Compnent Object Model (COM). Microsoft originally intended OLE DB as a higher level replacement for, and successor to ODBC, extending its feature set to support a wider variety of non-relational databases such as object databases and spreadsheets that do not necessarily implement SQL.

Thursday, 11 April 2013

Introduction to ADO.NET

ADO.NET is a set of computer software components that programmers can use to access data and data services. It is a part of the base class library that is included with the Microsoft .Net Framework. It is commonly used by programmers to access and modify data stored in relational database systems, though it can also access data in non-relational database systems, though it can also access data in non-relational sources. ADO.NET is a set of classes that are organized in a number of namespaces. These namespaces provide developers access to databases to retrieve and update data. The classes of ADO.NET provide us with the means to access databases and execute T-SQL code that retrieves, inserts, updates and deletes data.

ADO.NET Data Architecture
  • Dataset : The dataset is a disconnected, in- memory representation of data. It can be considered as a local copy of the relevant portions f the database. The DataSet is persisted in memory and the data in it can be manipulated and updated independent of the database.

  • Data Provider: The Data Provider is responsible for providing and maintaining the connection to the database. A DataProvider is a set of related components that work  together to provide data in an efficient and performance driven manner. The .NET Framework currently comes wit two DataProviders: the SQL Data Provider which is designed only to work with Microsoft's SQL Server 7.0 or later and the OleDb DataProvider which allows us to connect to other types of databases like Access and Oracle.

Started learning ADO.net

     As I have just completed with Console applications and Windows applications I have started practicing ADO.net from today. 
     ADO.net is a set of classes that expose data access services to the .net programmer. ADO.net provides consistent access to data sources such as Microsoft SQL server, as well as data sources exposed through OLE DB and XML.
     ADO.net provides libraries for Data Source communication under the following namespaces
  • System.Data
  • System.Data.Oledb
  • System.Data.SqlClient
  • System.Data.OracleClient
  • System.Data.Odbc

Wednesday, 10 April 2013

Validation Controls

         Validation is the process of verifying whether or not the data given by the user is valid. To perform validations on the page. ASP.net provides a set of controls that are collectively called as validation controls. All the validations controls are available within validation tab in the toolbox. 
         In ASP.net 4.5 and visual studio.net 2012 validation controls perform validations using JQuery. Hence you must add JQuery plugin to your website by downloading it from the website www.jquery.com, which is in form of ,jsfile & then writing the following code within application start event within global.asax file. To add global.asax file to the website right click on the website in solution Explorer & choose add new item & within the add new item dialogbox select "Global Application Class" & then click on add button.

Common properties of validation controls

                     The following is the list of properties common to all validation controls.    
  • ControlToValidate: Used to specify id of the control you want to validate using the validation control.
  • EnableClientScript: This is a Boolean property and is used to specify whether or not clientside validation will be performed by the validation control.
  • Text: Used to specify the error message to display within the validation related to tha validation control fails.
  • Error message: Used to specify the error message to display within the validation summery control.
  • ValidationGroup: Used to specify a group name when you want to divide the validation controls into groups.
Validation controls available in ASP.net are as follows
  • RequiredFieldValidator
  • CompareValidator
  • RegularExpressionValidator
  • RangeValidator         

Sunday, 7 April 2013

FileUpload Control

This control is used to allow the user to select the files and upload them to the server.

Properties of FileUpload Control:
  • AllowMultiple: This is Boolean property & when it is set to true you can select and upload multiple files and when it is set to false then you can select and upload only one file.
  • FileBytes: Returns total content of the file in the form of byte array.
  • FileContent: Returns a string object using which you can read data from the file or write data to the file.
  • FileName: Returns name and path of the selected file.
  • HasFile: This is a Boolean property and it is used to determine whether or not atleast one file is selected in FileUpload.
  • HasFiles: Used to determine whether or not multiple files are selected withen the FileUpload Control.
  • PostedFiles: Returns the first file selected in the FileUpload.
 Method of FileUpload Control:
  • SaveAs: Used to save the selected file onto the server.

Thursday, 4 April 2013

Example: Multi Document Interface







using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WinForms7
{
    public partial class MidParent : Form
    {
        public MidParent()
        {
            InitializeComponent();
        }

        private void form1ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Form1 f = new Form1();
            f.MdiParent = this;
            f.Show();
        }

        private void arrangeIconsToolStripMenuItem_Click(object sender, EventArgs e)
        {
            this.LayoutMdi(MdiLayout.ArrangeIcons);
        }

        private void form2ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Form2 f = new Form2();
            f.MdiParent = this;
            f.Show();
        }

        private void form3ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Form3 f = new Form3();
            f.MdiParent = this;
            f.Show();
        }

        private void cascadeToolStripMenuItem_Click(object sender, EventArgs e)
        {
            this.LayoutMdi(MdiLayout.Cascade);
        }

        private void horizontalToolStripMenuItem_Click(object sender, EventArgs e)
        {
            this.LayoutMdi(MdiLayout.TileHorizontal);
        }

        private void verticalToolStripMenuItem_Click(object sender, EventArgs e)
        {
            this.LayoutMdi(MdiLayout.TileVertical);
        }
    }
}