using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
namespace NameList
{
///
/// 名簿管理
///
public class WebForm1 : System.Web.UI.Page
{
protected System.Web.UI.WebControls.Label Label1;
protected System.Web.UI.WebControls.DataGrid grid;
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);
}
private void Page_Load(object sender, System.EventArgs e)
{
// ページを初期化するユーザー コードをここに挿入します。
if (!IsPostBack) Make(-1);
}
#region Web Form Designer generated code
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: この呼び出しは、ASP.NET Web フォーム デザイナで必要です。
//
InitializeComponent();
base.OnInit(e);
}
///
/// Designer サポートに必要なメソッドです。コード エディタで
/// このメソッドのコンテンツを変更しないでください。
///
private void InitializeComponent()
{
this.grid.PageIndexChanged += new System.Web.UI.WebControls.DataGridPageChangedEventHandler(this.grid_PageIndexChanged);
this.grid.CancelCommand += new System.Web.UI.WebControls.DataGridCommandEventHandler(this.grid_CancelCommand);
this.grid.EditCommand += new System.Web.UI.WebControls.DataGridCommandEventHandler(this.grid_EditCommand);
this.grid.SortCommand += new System.Web.UI.WebControls.DataGridSortCommandEventHandler(this.grid_SortCommand);
this.grid.UpdateCommand += new System.Web.UI.WebControls.DataGridCommandEventHandler(this.grid_UpdateCommand);
this.grid.DeleteCommand += new System.Web.UI.WebControls.DataGridCommandEventHandler(this.grid_DeleteCommand);
this.Load += new System.EventHandler(this.Page_Load);
}
#endregion
private void grid_EditCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
Make(e.Item.ItemIndex);
}
private void grid_UpdateCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
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);
}
private void grid_CancelCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
Make(-1);
}
private void grid_DeleteCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
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