<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebApplication1._Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:GridView ID="GridView1" AutoGenerateColumns="False" runat="server" OnRowDeleting="GridView1_RowDeleting" OnRowEditing="GridView1_RowEditing" OnRowUpdating="GridView1_RowUpdating" ShowFooter="True">
<Columns>
<asp:BoundField DataField="EntityID" HeaderText="ID" />
<asp:BoundField DataField="Description" HeaderText="Description" />
<asp:CommandField ShowEditButton="True" ShowDeleteButton="True" />
</Columns>
<EmptyDataTemplate>
You need add a data.
</EmptyDataTemplate>
</asp:GridView>
</div>
<asp:Button ID="Button1" runat="server" CommandArgument="d" OnClick="Button1_Click" Text="New" />
</form>
</body>
</html>
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Collections.Generic;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
namespace WebApplication1
{
public partial class _Default : System.Web.UI.Page
{
List<MyEntity> _entitys = null;
public List<MyEntity> MyDataSource
{
get
{
return _entitys;
}
set
{
_entitys = value;
}
}
protected void Page_Load(object sender, EventArgs e)
{
MyDataSource = (List<MyEntity>)ViewState["Entitys"];
if (MyDataSource == null)
{
MyDataSource = new List<MyEntity>();
}
ViewState["Entitys"] = MyDataSource;
if (!IsPostBack)
{
bindGridView1();
}
}
protected void Button1_Click(object sender, EventArgs e)
{
MyEntity ent = new MyEntity();
MyDataSource.Add(ent);
GridView1.EditIndex = MyDataSource.Count - 1;
bindGridView1();
}
protected void bindGridView1()
{
GridView1.DataSource = MyDataSource;
GridView1.DataBind();
}
protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
{
GridView1.EditIndex = e.NewEditIndex;
bindGridView1();
}
protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
MyDataSource[e.RowIndex].EntityID = int.Parse(((TextBox)(GridView1.Rows[e.RowIndex].Cells[0].Controls[0])).Text);
MyDataSource[e.RowIndex].Description = ((TextBox)(GridView1.Rows[e.RowIndex].Cells[1].Controls[0])).Text;
GridView1.EditIndex = -1;
bindGridView1();
}
protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
MyDataSource.RemoveAt(e.RowIndex);
bindGridView1();
}
}
}
namespace WebApplication1
{
[Serializable]
public class MyEntity
{
private int _entityID = 0;
private string _description = string.Empty;
public MyEntity()
{
}
public int EntityID
{
get
{
return _entityID;
}
set
{
_entityID = value;
}
}
public string Description
{
get
{
return _description;
}
set
{
_description = value;
}
}
}
}