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