You can create a class to store the value:
public class Project
{
public int Id { get; set; }
public string ProjectName { get; set; }
public string Description { get; set; }
}
then save the list of class object in session:
public class SessionData
{
public static int IdIndex = 0;
public static List<Project> ProjectList
{
get
{
if (HttpContext.Current.Session["ProjectList"] == null)
HttpContext.Current.Session["ProjectList"] = new List<Project>();
return (List<Project>)HttpContext.Current.Session["ProjectList"];
}
set
{
HttpContext.Current.Session["ProjectList"] = value;
}
}
public static int GetNewID()
{
IdIndex = IdIndex + 1;
return IdIndex;
}
}
A simple page design for displaying the list in gridview:
<asp:Button ID="btAdd" runat="server" Text="Add Project" OnClick="btAdd_Click" />
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
EmptyDataText="No data" ShowHeaderWhenEmpty="True">
<Columns>
<asp:HyperLinkField DataNavigateUrlFields="Id"
DataNavigateUrlFormatString="EditProject.aspx?id={0}" Text="Edit" />
<asp:BoundField DataField="ProjectName" HeaderText="Project Name" />
<asp:BoundField DataField="Description" HeaderText="Description" />
</Columns>
</asp:GridView>
code behind of the page list:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
GridView1.DataSource = SessionData.ProjectList;
GridView1.DataBind();
}
}
protected void btAdd_Click(object sender, EventArgs e)
{
Response.Redirect("EditProject.aspx", true);
}
sample code behind for editing the data, EditProject.aspx:
public partial class EditProject : System.Web.UI.Page
{
int id
{
get
{
int _id = 0;
int.TryParse(ViewState["id"] + "", out _id);
return _id;
}
set
{
ViewState["id"] = value;
}
}
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
int _id = 0;
int.TryParse(Request.QueryString["id"], out _id);
id = _id;
LoadData();
}
}
void LoadData()
{
foreach (var p in SessionData.ProjectList)
{
if (p.Id == id)
{
label1.Text = id.ToString();
txtProjectName.Text = p.ProjectName;
txtDescription.Text = p.Description;
break;
}
}
}
protected void btSave_Click(object sender, EventArgs e)
{
if (id == 0)
{
id = SessionData.GetNewID();
Project p = new Project()
{
Id = id,
ProjectName = txtProjectName.Text,
Description = txtDescription.Text
};
SessionData.ProjectList.Add(p);
}
else
{
foreach (var p in SessionData.ProjectList)
{
if (p.Id == id)
{
p.ProjectName = txtProjectName.Text;
p.Description = txtDescription.Text;
break;
}
}
}
Response.Redirect("~/ProjectList.aspx", true);
}
}