ASP.Netのお勉強

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>

Copyright (C) ASP.Netのお勉強. All Rights Reserved.