Saturday 13 February 2016

How To Access Private Variables of a class In another class in C#

          We can access private variable of a class in a different class in so many ways. Here is some of them

1.By using Public Method :-

         We can access a private variable in a different class by putting that variable with in a Public method and calling that method from another class by creating object of that class.

Example:-

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class PrivateVariable
{
private int i = 10; //Declaring and initializing a private variable
public void DisplayVariable()
{
Console.Write("The Value of Private Variable=" + i); //Accessing Private variable with in a public methode
}
}
class DisplayPrivateVariable
{
static void Main()
{
PrivateVariable objPrivateVariable = new PrivateVariable();
objPrivateVariable.DisplayVariable(); //Calling the public method
}
}
}

2.By Using Inner class:-

      By using inner class also we can access a private variable of a class in another class. For better understanding have look at the example.

Eample:-

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class PrivateVariable2
{
class Outerclass
{
private int i = 10;
private int j = 20;
class Innerclass
{
static void Main()
{
Outerclass objouter = new Outerclass();
int Result=objouter.i+objouter.j;
Console.Write("Sum=" + Result );
Console.ReadLine();
}
}
}
}
}

3.By Using Properties :-

By using properties also we can do the same work as previous.

Examlpe :-

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Employee
{
private int _EmpID=1001;
private string _EmpName;
public int EmpID
{
get { return _EmpID; }
}
public string EmpName
{
get { return _EmpName; }
set { _EmpName = "Smith"; }
}
}
class AcessEmployee
{
static void Main()
{
Employee objEmployee = new Employee();
Console.WriteLine("Employee ID: " + objEmployee.EmpID);
Console.WriteLine("Employee old Name: " + objEmployee.EmpName);
objEmployee.EmpName = "Dyne Smith";
Console.WriteLine("Employee New Name: " + objEmployee.EmpName);
Console.ReadLine();
}
}
}


  ************     Thanks For Reading     *************

Wednesday 10 February 2016

How To Access View state value in Another Page



     In this Article we will learn how to access view state values of one page in a different page.


Introduction

          As we all know a view state value cannot be accessed in a different page because the life span of a view state object is within the page only. That means directly we can’t access a view state value in another page but indirectly it is possible.

These are some ways using which we can access a view state value in another page.

    1.   Using Query String 
       2. Using Session State 
       3. Using cookies 
       4.Using cross Page Postback


            Let us do all the above cases one by one with some Real time example. For example i am taking CSharp corner websites Article section,

When you open an article you will find some field like Page Views,Likes and Downloads. Like the below image...

 
In the above screen shot there is four fields such as

                  1.Download Source code

        2.  Page Views

        3.   Likes

        4.   View Details



  •    When you click on Download Source code  link it will increment the counter by one, that means it will count number of people downloading that article.
  • When you Refresh/Reload the page it will increment the counter by one, that means it will count number of people reading that article.
  •  When you click on like button it will increment the counter by one, that means it will count number of people like that page.
  •  And when you click on ViewDetails link button , it will redirect you to another page showing all the details.

Let us design our page like the above screenshot...

  • Open VS-->New Project-->Asp.Net Empty Website-->Name it as “CrossPageViewState”. 
  •   Right click on project head-->Add-->WebForm-->Name it as “TestViewState”.Write the following code inside it.


TestViewState.aspx


<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="TestViewState.aspx.cs" Inherits="CrossPageViewState.TestViewState" %>



<!DOCTYPE html>



<html xmlns="http://www.w3.org/1999/xhtml">

<head runat="server">

    <title></title>

</head>

<body>

    <form id="form1" runat="server">

  

    <asp:Image ID="img1" runat="server" ImageUrl="~/Images/c-sharp-corner-c-corner-logo-icon.jpg" ToolTip="CSharpCorner" />

   

        <p style="height:30px; width:100%; background-color:blue; color:white; text-align:center; font-size:18px; font-family:Tahoma">

            <a href="#" style="color:white">Technologies</a> |

            <a href="#" style="color:white">Answer</a> |

            <a href="#" style="color:white">Blog</a> |

            <a href="#" style="color:white">Videos</a> |

            <a href="#" style="color:white">InterView</a> |

            <a href="#" style="color:white">Books</a> |

            <a href="#" style="color:white">News</a> |

            <a href="#" style="color:white">Carrer</a>

        </p>

        <div align="center">

        <table>

            <tr style="text-align:center">

                <td>

                    <b style="color:blue; font-size:30px">Article:-</b>

                </td>

                <td>

                    <h1 style="">Cross Page ViewState</h1>

                </td>

            </tr>

        </table>

            <asp:LinkButton ID="lnkDownload" runat="server" Text="Download SourceCode" OnClick="lnkDownload_Click"></asp:LinkButton>

            &nbsp;

            <asp:Label ID="lblDownload" runat="server" Font-Bold="true" Font-Size="40px" />

            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

            <asp:Image ID="imgView1" runat="server" ImageUrl="~/Images/view.jpg" ToolTip="View" />

            &nbsp;

            <asp:Label ID="lblView" runat="server" Font-Bold="true" Font-Size="40px" />

            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

            <asp:ImageButton ID="imgLike" runat="server" ImageUrl="~/Images/like.png" ToolTip="likes" OnClick="imgLike_Click" />

            &nbsp;

            <asp:Label ID="lblLike" runat="server" Font-Bold="true" Font-Size="40px"/>

            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

           <asp:LinkButton ID="lnkViewDetails" runat="server" Text="View Details" OnClick="lnkViewDetails_Click" />

            <br /><br /><br />

            <p>********************<b> Article Content </b>*********************** </p>

            </div>

       

       

    </form>

</body>

</html>



           Now we will store all the field values of the above form in view state and will access it in some other page.To do this add add the below code view to the above webform.We can do this task in so many ways.First we will use Query string approach to do this.


11.Using Query String


TestViewState.aspx.cs


using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

using System.Web.UI;

using System.Web.UI.WebControls;



namespace CrossPageViewState

{

    public partial class TestViewState : System.Web.UI.Page

    {

        protected void Page_Load(object sender, EventArgs e)

        {           

            if(!Page.IsPostBack)

            {

                ViewState["Download"] = 0;

                lblDownload.Text = ViewState["Download"].ToString();

                View();

                //ViewState["View"] = 1;

                //lblView.Text = ViewState["View"].ToString();

                ViewState["Like"] = 0;

                lblLike.Text = ViewState["Like"].ToString();

            }

        }



        public void View()

        {

            if (Application["View"]==null)

           {

               Application["View"] = 1;

           }

            else

           {

               int Temp = (int)Application["View"];

            Temp += 1;

            Application["View"] = Temp;

               }

            lblView.Text = Application["View"].ToString();



        }



        protected void lnkDownload_Click(object sender, EventArgs e)

        {

            int count = (int)ViewState["Download"];

            count += 1;

            ViewState["Download"] = count;

            lblDownload.Text = ViewState["Download"].ToString();

        }



        protected void imgLike_Click(object sender, ImageClickEventArgs e)

        {

            int count = (int)ViewState["Like"];

            count += 1;

            ViewState["Like"] = count;

            lblLike.Text = ViewState["Like"].ToString();

        }



        protected void lnkViewDetails_Click(object sender, EventArgs e)

        {

            int download = (int)ViewState["Download"];

            int like = (int)ViewState["Like"];



            Response.Redirect("ViewDetails.aspx?download=" + download + "&like=" + like);

        }

    }

}



Now add another webform to the project and name it as “ViewDetails.aspx”. write the following code inside it.


ViewDetails.aspx


<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">

<head runat="server">

    <title></title>

</head>

<body>

    <form id="form1" runat="server">

    <div>

     <p style="height:45px; width:100%; background-color:yellowgreen; color:white; text-align:center; font-size:30px; font-family:Tahoma">Article Details</p>

        <br /><br />

        <div align="center">

        <asp:Label ID="lblArticleStatus" runat="server" />

            </div>

    </div>

    </form>

</body>

</html>


ViewDetails.aspx.cs


using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

using System.Web.UI;

using System.Web.UI.WebControls;



namespace CrossPageViewState

{

    public partial class ViewDetails : System.Web.UI.Page

    {

        protected void Page_Load(object sender, EventArgs e)

        {

            if (Request.QueryString["download"] != null && Request.QueryString["like"] != null)

            {

                lblArticleStatus.Text = "<table border='1' width=40%><tr><th>Title</th><td>Cross Page ViewState</td><tr><th>Page Views</th><td>" + Application["View"] + "</td></tr><tr><th>Likes</th><td>" + Request.QueryString["like"].ToString() + "</td></tr><tr><th>Downloads</th><td>" + Request.QueryString["download"].ToString() + "</td></tr></table>";

            }

            else

            {

                Response.Redirect("TestViewState.aspx");

            }

        }

    }

}



        Now  go to TestViewState.aspx page and run it by pressing ctrl+f5 .you will find pageview=1,downloads=0,like=0.now how many times you will refresh the page the pageview value will be increase by one.when you click on download/like button the corresponding value will increase.


                                           Finally click on ViewDetails link, when you click on this button it will redirect you to ViewDetails page by appending all the viewstate values on the url.


                              Fig2. Showing all the Article Details


2.Using Session State


        using session state also we can transfer viewstate value from one page to another page.

To store value in session state use the following technique



  int download = (int)ViewState["Download"];

  int like = (int)ViewState["Like"];

  Session["download"] =download;

  Session["like"] = like;



To retrieve :



lblArticleStatus.Text = "<table border='1' width=40%><tr><th>Title</th><td>Cross Page ViewState</td><tr><th>Page Views</th><td>" + Application["View"] + "</td></tr><tr><th>Likes</th><td>" + Session ["like"].ToString() + "</td></tr><tr><th>Downloads</th><td>" + Session ["download"].ToString() + "</td></tr></table>";



3.Using Cookies


   Using cookies also we can transfer the view state values from one page to another.


To store value in cookie:


HttpCookie objCookie1 = new HttpCookie("download");

objCookie1.Value = ViewState["Download"];

HttpCookie objCookie1 = new HttpCookie("like");

objCookie1.Value = ViewState["Like"];

Response.Cookies.Add(objCookie1);

Response.Cookies.Add(objCookie2);


To retrieve from cookie:



if (Request.Cookies["download"] != null && Request.Cookies["like"] != null)

{

    lblArticleStatus.Text = "<table border='1' width=40%><tr><th>Title</th><td>Cross Page ViewState</td><tr><th>Page Views</th><td>" + Application["View"] + "</td></tr><tr><th>Likes</th><td>" + Request.cookies["like"].value + "</td></tr><tr><th>Downloads</th><td>" + Request.cookies["download"].value + "</td></tr></table>";

}