GridViewでXMLファイル更新@ASP.Net GridViewにXMLファイルの内容を表示します。 更新ボタンを配置して、更新します。 まず、ObjectDataSourceに配置するクラスを作成します。 DataSetを返すgetDataを作成します。 DatasetのReadXmlメソッドでXMLファイルを読み込みます。 (Server.MapPathは利用できないので、HttpContext.Current.Server.MapPathとなります。) UpdateDataSetを作成します。 引数を元に、XMLファイルの対象レコードを抽出し、 内容を変更して、XMLファイルを更新します。 ObjectDataSourceに作成したクラスを配置します。 SelectMethodとUpdateMethodに作成したメソッドを設定します。 GridViewにObjectDataSourceを配置します。 カラムのDataFieldは、更新メソッドの引数と同じ名称にします。 DataKeyNamesとReadOnlyを設定します。 画面を開いて、無事に動作するのを確認します。 ●xml
<?xml version="1.0" standalone="yes"?> <Usrs> <Usr> <Id>1</Id> <Name>氏名</Name> <BusyoNm>営業第1課</BusyoNm> <Yakusyoku>一般</Yakusyoku> </Usr> <Usr> <Id>2</Id> <Name>氏名2</Name> <BusyoNm>営業第1課</BusyoNm> <Yakusyoku>課長</Yakusyoku> </Usr> </Usrs>
●DataSet.vb
Imports System.Data Imports Microsoft.VisualBasic Public Class XmlDataSet Public Function getData() As DataSet 'usr.xmlの内容を読み込み、DataSetに展開します。 Dim dt As DataSet = New DataSet() dt.ReadXml(HttpContext.Current.Server.MapPath("usr.xml")) Return dt End Function Public Sub UpdateDataSet(ByVal Id As Integer, ByVal Name As String, ByVal BusyoNm As String, ByVal Yakusyoku As String) 'usr.xmlの内容を読み込み、DataSetに展開します。 Dim dt As DataSet = New DataSet() dt.ReadXml(HttpContext.Current.Server.MapPath("usr.xml")) 'IDが一致するレコードを取得する Dim rows() As DataRow Dim row As DataRow rows = dt.Tables("usr").Select("Id=" + CStr(Id)) For Each row In rows row("Name") = Name row("BusyoNm") = BusyoNm row("Yakusyoku") = Yakusyoku dt.WriteXml(HttpContext.Current.Server.MapPath("usr.xml")) Next End Sub End Class
●aspx
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="_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>GridViewでXMLファイル更新</title> </head> <body> <form id="form1" runat="server"> <div> <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataSourceID="ObjectDataSource1" BackColor="White" BorderColor="#CCCCCC" BorderStyle="None" BorderWidth="1px" CellPadding="3" DataKeyNames="Id"> <Columns> <asp:CommandField ShowEditButton="True" /> <asp:BoundField DataField="Id" HeaderText="ID" ReadOnly="True" /> <asp:BoundField DataField="Name" HeaderText="名前" /> <asp:BoundField DataField="BusyoNm" HeaderText="部署名" /> <asp:BoundField DataField="Yakusyoku" HeaderText="役職" /> </Columns> <FooterStyle BackColor="White" ForeColor="#000066" /> <RowStyle ForeColor="#000066" /> <SelectedRowStyle BackColor="#669999" Font-Bold="True" ForeColor="White" /> <PagerStyle BackColor="White" ForeColor="#000066" HorizontalAlign="Left" /> <HeaderStyle BackColor="#006699" Font-Bold="True" ForeColor="White" /> </asp:GridView> <asp:ObjectDataSource ID="ObjectDataSource1" runat="server" SelectMethod="getData" TypeName="XmlDataSet" UpdateMethod="UpdateDataSet"> <UpdateParameters> <asp:Parameter Name="Id" Type="Int32" /> <asp:Parameter Name="Name" Type="String" /> <asp:Parameter Name="BusyoNm" Type="String" /> <asp:Parameter Name="Yakusyoku" Type="String" /> </UpdateParameters> </asp:ObjectDataSource> </div> </form> </body> </html>
http://www.cocoaliz.com/asp.net/index/1/