- 
				各機能を順番に実装する。
			
- 
				新規作成の実装。 HTMLのnewBtnの属性にOnClick="New_Click"を追加する。 コードのクラスWebForm1に以下のメンバを追加する。
				
		private void Make(int id)
		{
			grid.EditItemIndex = id;
			ArrayList a = NameData.Instance(Server);
			string s = (string)Session["sort"];
			if (s != null) 
			{
				a = (ArrayList)a.Clone();
				a.Sort(NameData.Comparer(s));
			}
			grid.DataSource = a;
			grid.DataBind();
			ControlCollection cc = grid.Controls[0].Controls;
			cc[cc.Count-2].Visible = id < 0;
		}
		public void New_Click(object source, EventArgs e)
		{
			ArrayList a = NameData.Instance(Server);
			string	name,tel,email;
			DataGridItem di = (DataGridItem)grid.Controls[0]
				.Controls[grid.Controls[0].Controls.Count-2];
			name = ((TextBox)di.FindControl("NName")).Text;
			tel = ((TextBox)di.FindControl("NTel")).Text;
			email = ((TextBox)di.FindControl("NEmail")).Text;
			lock (a) 
			{
				int	i = 1;
				string s = name;
				bool bFound = true;
				while (bFound) 
				{
					bFound = false;
					foreach (NameData d in a) 
					{
						if (d.Name == s) 
						{
							bFound = true;
							s = name + "(" + (++i).ToString() + ")";
							break;
						}
					}
				}
				a.Add(new NameData(s,tel,email));
			}
			NameData.Save();
			grid.CurrentPageIndex = (a.Count + grid.PageSize - 1) / grid.PageSize - 1;
			Make(-1);
		}
				
- 
				コード中のPage_Load内に以下を追加する。
				
			if (!IsPostBack) Make(-1);
				 実行して新規作成ができることを確認する。
- 
				編集の実装。デザインのgridを選択し、プロパティのイベントを表示する。 EditCommandをダブルクリックし、以下を追加する。
				
			Make(e.Item.ItemIndex);
				 実行して、編集をクリック後編集可能になることを確認する。
- 
				更新の実装。デザインのgridを選択し、プロパティのイベントを表示する。 UpdateCommandをダブルクリックし、以下を追加する。
				
			TableCellCollection tc = grid.Items[e.Item.ItemIndex].Cells;
			int id = int.Parse(tc[0].Text)-1;
			ArrayList a = NameData.Instance(Server);
			lock (a) 
			{
				if (id >= a.Count) goto err;
				NameData d = (NameData)a[id];
				if (d.Name != ((Label)tc[1].Controls[1]).Text) goto err;
				d.Tel = ((TextBox)tc[2].FindControl("ETel")).Text;
				d.Email = ((TextBox)tc[3].FindControl("EEmail")).Text;
			}
			NameData.Save();
			Make(-1);
			return;
			err:
			Response.Write("更新できませんでした");
			Make(-1);
				実行して、編集をクリック後、更新できることを確認する。
- 
				キャンセルの実装。デザインのgridを選択し、プロパティのイベントを表示する。 CancelCommandをダブルクリックし、以下を追加する。
				
			Make(-1);
				 実行して、編集をクリック後、キャンセルできることを確認する。
- 
				削除の実装。デザインのgridを選択し、プロパティのイベントを表示する。 DeleteCommandをダブルクリックし、以下を追加する。
				
			TableCellCollection tc = grid.Items[e.Item.ItemIndex].Cells;
			int id = int.Parse(tc[0].Text)-1;
			ArrayList a = NameData.Instance(Server);
			lock (a) 
			{
				if (id >= a.Count) goto err;
				NameData d = (NameData)a[id];
				if (d.Name != ((Label)tc[1].Controls[1]).Text) goto err;
				a.Remove(d);
				for (int i=id;i<a.Count;++i) ((NameData)a[i]).ID = i+1;
			}
			NameData.Save();
			grid.CurrentPageIndex = Math.Max(0,Math.Min(grid.CurrentPageIndex,
				(a.Count + grid.PageSize - 1) / grid.PageSize - 1));
			Make(-1);
			return;
			err:
			Response.Write("既に削除されているか削除できませんでした");
			Make(-1);
				実行して、編集をクリック後、削除できることを確認する。
- 
				ページ分割の実装。デザインのgridを選択し、プロパティのイベントを表示する。 PageIndexChangedをダブルクリックし、以下を追加する。
				
			grid.CurrentPageIndex = e.NewPageIndex;
			Make(-1);
				 実行して、11個以上作成し、ページが分割されることを確認する。
- 
				ソートの実装。デザインのgridを選択し、プロパティのイベントを表示する。 SortCommandをダブルクリックし、以下を追加する。
				
			Session["sort"] = e.SortExpression == "ID" ? null : e.SortExpression;
			Make(-1);
				 実行して、ソートできることを確認する。
- 
				サンプル:WebForm1.aspx、WebForm1.aspx.cs。
			
以上。(2002/12/04)