- PR -

XMLデータを編集する方法

1
投稿者投稿内容
Asoas
ベテラン
会議室デビュー日: 2006/03/10
投稿数: 60
投稿日時: 2006-05-31 19:52
C#を使用してます。
XMLデータをDB代わりに使用したいと考えております。

フォーム上のリストボックス等にXMLデータを表示させ、
表示させたデータに対して、編集(追加・修正・削除)を
させたいと考えておりますが、書籍等で確認しても、XMLファイルの
読込み・書出しはあっても、編集に関しては載っておりません。

ASP.NETではDataGridを用いて編集できると記載しておりましたが、
DOM等で編集作業をさせることはできないのでしょうか?

宜しくお願いいたします。
もふー。
会議室デビュー日: 2005/09/15
投稿数: 10
お住まい・勤務地: かながわ→なごやん
投稿日時: 2006-05-31 20:32
これの続きなのでしょうか? にしては・・・
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=29147&forum=7
なおこ(・∀・)
大ベテラン
会議室デビュー日: 2004/04/08
投稿数: 174
お住まい・勤務地: 東京都
投稿日時: 2006-05-31 22:42
お世話になります。

[ASP.NET]DataGridコントロールで編集を可能にするには?
上記ページを参考に、作ってみました。

■wankuma.xml
コード:
<?xml version="1.0" standalone="yes"?>
<wankuma>
  <person>
    <name>じゃんぬ</name>
    <address>名古屋</address>
  </person>
  <person>
    <name>まゆりん</name>
    <address>神奈川</address>
  </person>
  <person>
    <name>中博俊</name>
    <address>大阪</address>
  </person>
</wankuma>


■.aspx
コード:
<%@ Page language="c#" Codebehind="WebForm5.aspx.cs" AutoEventWireup="false" Inherits="cswebapp001.WebForm5" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
	<HEAD>
		<title>WebForm5</title>
		<meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
		<meta name="CODE_LANGUAGE" Content="C#">
		<meta name="vs_defaultClientScript" content="JavaScript">
		<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
	</HEAD>
	<body MS_POSITIONING="GridLayout">
		<form id="Form1" method="post" runat="server">
			<asp:DataGrid id="DataGrid1" OnEditCommand="DataGrid1_Edit" OnUpdateCommand="DataGrid1_Update" OnCancelCommand="DataGrid1_Cancel" AutoGenerateColumns="false" runat="server" >
				<Columns>
					<asp:BoundColumn DataField ="name" />
					<asp:BoundColumn DataField ="address" />
					<asp:EditCommandColumn ButtonType="PushButton" UpdateText="更新" CancelText="キャンセル" EditText="編集" />
				</Columns>
			</asp:DataGrid>
			<asp:Button id="Button1" runat="server" Text="Button" />
		</form>
	</body>
</HTML>



■.asp.cs
コード:
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 cswebapp001
{
	/// <summary>
	/// WebForm5 の概要の説明です。
	/// </summary>
	public class WebForm5 : System.Web.UI.Page
	{
		protected System.Web.UI.WebControls.Button Button1;
		protected System.Web.UI.WebControls.DataGrid DataGrid1;
		
		private const string DATASET_PATH = @"d:\\testFolder\\wankuma.xml";
		private System.Data.DataSet m_wankumaDs;
		private void Page_Load(object sender, System.EventArgs e)
		{
			// ページを初期化するユーザー コードをここに挿入します。
			if (!IsPostBack) 
			{
				this.m_wankumaDs = new System.Data.DataSet("wankuma");
				this.m_wankumaDs.ReadXml(DATASET_PATH);
				Session["wankuma"] = this.m_wankumaDs;
				this.BindMyGrid();
			}
			else
			{
				this.m_wankumaDs = (System.Data.DataSet)Session["wankuma"];
			}
		}
		
		protected void BindMyGrid() 
		{
			this.DataGrid1.DataSource = Session["wankuma"];
			this.DataGrid1.DataMember = "person";
			this.DataGrid1.DataBind();
		}

		protected void DataGrid1_Edit(object sender, DataGridCommandEventArgs e) 
		{
			this.DataGrid1.EditItemIndex = e.Item.ItemIndex;
			this.BindMyGrid();
		}

		protected void DataGrid1_Cancel(object sender, DataGridCommandEventArgs e) 
		{
			this.DataGrid1.EditItemIndex = -1;
			this.BindMyGrid();
		}

		protected void DataGrid1_Update(object sender, DataGridCommandEventArgs e) 
		{
			TextBox tb1 = (TextBox)e.Item.Cells[0].Controls[0];
			TextBox tb2 = (TextBox)e.Item.Cells[1].Controls[0];

			System.Data.DataRow row = this.m_wankumaDs.Tables["person"].Rows[e.Item.ItemIndex];
			row.BeginEdit();
			row["name"] = tb1.Text;
			row["address"] = tb2.Text;
			row.EndEdit();

			this.DataGrid1.EditItemIndex = -1;
			this.BindMyGrid();
		}

		private void Button1_Click(object sender, System.EventArgs e)
		{
			this.m_wankumaDs.WriteXml(DATASET_PATH);
		}

		#region Web フォーム デザイナで生成されたコード 
		override protected void OnInit(EventArgs e)
		{
			//
			// CODEGEN: この呼び出しは、ASP.NET Web フォーム デザイナで必要です。
			//
			InitializeComponent();
			base.OnInit(e);
		}
		
		/// <summary>
		/// デザイナ サポートに必要なメソッドです。このメソッドの内容を
		/// コード エディタで変更しないでください。
		/// </summary>
		private void InitializeComponent()
		{    
			this.Button1.Click += new System.EventHandler(this.Button1_Click);
			this.Load += new System.EventHandler(this.Page_Load);

		}
		#endregion
	}
}


_________________
なおこ(・∀・) @ わんくま同盟
主婦と.NETと犬の記録
主婦と.NETと犬のぶろぐ
1

スキルアップ/キャリアアップ(JOB@IT)