数据源为XML的GridView操作

这篇博客探讨了如何使用XML文件作为数据源来操作ASP.NET中的GridView控件。内容涉及读取XML文件(如App_Data/UserInfo.xml),转换为DataSet,并利用App_Code/UserInfoTable.cs中的自定义类进行数据绑定和异常处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

App_Data/UserInfo.xml

<?xml version="1.0" standalone="yes"?>
<XmlDataSet>
  <UserInfo>
    <Id>1</Id>
    <Name>赵AX</Name>
  </UserInfo>
  <UserInfo>
    <Id>2</Id>
    <Name>钱BB</Name>
  </UserInfo>
  <UserInfo>
    <Id>3</Id>
    <Name>孙CC</Name>
  </UserInfo>
  <UserInfo>
    <Id>4</Id>
    <Name>李DY</Name>
  </UserInfo>
  <UserInfo>
    <Id>5</Id>
    <Name>周EF</Name>
  </UserInfo>
  <UserInfo>
    <Id>6</Id>
    <Name>吴FF</Name>
  </UserInfo>
  <UserInfo>
    <Id>7</Id>
    <Name>郑GG</Name>
  </UserInfo>
</XmlDataSet>

App_Code/UserInfoTable.cs

using System;  
using System.Data;  
using System.Configuration;  
using System.Web;  
using System.Web.Security;  
using System.Web.UI;  
using System.Web.UI.WebControls;  
using System.Web.UI.WebControls.WebParts;  
using System.Web.UI.HtmlControls;  
using System.Globalization;  
/// <summary>  
/// 操作XML文件  
/// </summary>  
public class UserInfoTable : IDisposable  
{  
    /// <summary>  
    /// XML文件路径  
    /// </summary>  
    private static string strXmlFile = "~/App_Data/UserInfo.xml";  
    /// <summary>  
    /// DataSet对象  
    /// </summary>  
    private DataSet dataset = null;  
    /// <summary>  
    /// XML文件相对路径  
    /// </summary>  
    private string strFilePath = null;  
    /// <summary>  
    /// 构造函数  
    /// </summary>  
    public UserInfoTable()  
 {  
        // 实例化DataSet  
        dataset = new DataSet();  
        // 不依赖于区域性  
        dataset.Locale = CultureInfo.InvariantCulture;  
        // 取得XML文件虚拟路径  
        strFilePath = HttpContext.Current.Server.MapPath(strXmlFile);  
        // 读取XML文件  
        dataset.ReadXml(strFilePath);  
 }  
    /// <summary>  
    /// 资源释放  
    /// </summary>  
    public void Dispose()  
    {  
        // 关闭DataSet  
        dataset.Dispose();  
        GC.SuppressFinalize(this);  
    }  
    /// <summary>  
    /// 检索数据  
    /// </summary>  
    /// <returns>DataSet对象</returns>  
    public DataSet GetDataSet()  
    {  
        // 返回DataSet对象  
        return dataset;  
    }  
    /// <summary>  
    /// 更新数据  
    /// </summary>  
    /// <param name="nID">Id</param>  
    /// <param name="strName">Name</param>  
    /// <returns>更新是否成功</returns>  
    public void UpdateDataSet(int Id, string Name)  
    {  
        try  
        {  
            // 选择节点条件  
            string strFilter = "Id=" + Id.ToString(CultureInfo.InvariantCulture);  
            // 记录取得的行的集合  
            DataRow[] rows = dataset.Tables[0].Select(strFilter);  
            // 如果取到记录  
            if (rows.Length > 0)  
            {  
                // 更新数据  
                rows[0]["Name"] = Name;  
                // 保存数据  
                Save();  
            }  
        }  
        catch (Exception)  
        {  
        }  
    }  
    /// <summary>  
    /// 删除一条数据  
    /// </summary>  
    /// <param name="nID">ID</param>  
    /// <returns>是否删除成功</returns>  
    public void DeleteDataSet(int Id)  
    {  
        try  
        {  
            // 选择节点条件  
            string strFilter = "Id=" + Id.ToString(CultureInfo.InvariantCulture);  
            // 记录取得的行的集合  
            DataRow[] rows = dataset.Tables[0].Select(strFilter);  
            // 如果取到记录  
            if (rows.Length > 0)  
            {  
                // 删除数据  
                rows[0].Delete();  
                // 保存数据  
                Save();  
            }  
        }  
        catch (Exception)  
        {  
        }  
    }  
    /// <summary>  
    /// 插入数据  
    /// </summary>  
    /// <param name="strName">姓名</param>  
    /// <returns>是否插入成功</returns>  
    public void InsertDataSet(int Id, string Name)  
    {  
        DataRow row = dataset.Tables[0].NewRow();  
        row["Id"] = Id;  
        row["Name"] = Name;  
        dataset.Tables[0].Rows.Add(row);  
        Save();  
    }  
    /// <summary>  
    /// 保存XML文档  
    /// </summary>  
    private void Save()  
    {  
        // 写入XML文档  
        dataset.WriteXml(strFilePath, XmlWriteMode.IgnoreSchema);  
    }  
} 
Default.aspx 
<%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" 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>无标题页</title>  
</head>  
<body>  
    <form id="form1" runat="server">  
    <div>  
        <asp:ObjectDataSource ID="ObjectDataSource1" runat="server" DeleteMethod="DeleteDataSet"  
            InsertMethod="InsertDataSet" SelectMethod="GetDataSet" TypeName="UserInfoTable"  
            UpdateMethod="UpdateDataSet">  
            <DeleteParameters>  
                <asp:Parameter Name="Id" Type="Int32" />  
            </DeleteParameters>  
            <UpdateParameters>  
                <asp:Parameter Name="Id" Type="Int32" />  
                <asp:Parameter Name="Name" Type="String" />  
            </UpdateParameters>  
            <InsertParameters>  
                <asp:Parameter Name="Name" Type="String" />  
            </InsertParameters>  
        </asp:ObjectDataSource>  
         </div>  
        <asp:GridView ID="GridView1" runat="server" DataSourceID="ObjectDataSource1">  
            <Columns>  
                <asp:CommandField ShowDeleteButton="True" ShowEditButton="True" />  
            </Columns>  
        </asp:GridView>  
        <asp:DetailsView ID="DetailsView1" runat="server" DataSourceID="ObjectDataSource1"  
            Height="81px" Width="125px" AllowPaging="True">  
            <Fields>  
                <asp:CommandField ShowInsertButton="True" />  
            </Fields>  
        </asp:DetailsView>  
    </form>  
</body>  
</html>  
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值