zoukankan      html  css  js  c++  java
  • Repeater、GridView等 操作XML文件

    在项目中需要对XML文件进行管理,我用了Repeater 的方式来实现了实时的更新

    希望对阅读这篇随笔的您有所帮助,我用的Repeater,您也可以用GridView等...区别仅仅在于控件内的按钮的事件中获取当前操作对象索引的方式..

    如果您的XML文档格式与此不同,建议使用下面的XML格式(因为这个格式能够通过DataSet的LoadXML方法直接获得数据源,并且能够使用DateSet的WriteXML方法输出XML文档)或者您可以根基自己的格式重新写ReadXmlInfoWriteXMLInfo这两个方法。

    首先是我的XML格式

    代码
    <?xml version="1.0" standalone="yes"?>
    <imgs>
    <pic name="/adv_pic/1.jpg" url="http://www.baidu.com/" title="美国影视中的黑人总统盘点" />
    <pic name="/adv_pic/2.jpg" url="http://www.baidu.com/" title="斯琴格日乐--我很好!" />
    <pic name="/adv_pic/3.jpg" url="http://www.baidu.com/" title="伦敦金融城市长秀" />
    <pic name="/adv_pic/4.jpg" url="http://www.baidu.com/" title="市长大人的金色大马车" />
    <pic name="/adv_pic/5.jpg" url="http://www.baidu.com/" title="英国皇家歌剧院艺术家为公益缘何全裸?" />
    </imgs>

    HTML Code:

    代码
    <%@ Register Assembly="Anthem" Namespace="Anthem" TagPrefix="anthem" %>
    <!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>flash橱窗管理</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">
    <link href="../css/css.css" type="text/css" rel="stylesheet">
    </head>
    <body>
    <form id="form1" runat="server">
    <div style="text-align:center;">
    <anthem:Repeater ID="Repeater1" runat="server" AutoUpdateAfterCallBack="true">
    <HeaderTemplate>
    <table class="DataList" cellspacing="0" rules="all" border="1" id="Datagrid2" style=" 100%;
    border-collapse: separate;">
    <tr class="DataList_Head" align="Left">
    <td align="center" style=" 2%;">
    编号
    </td>
    <td align="center" style=" 30%;">
    标题
    </td>
    <td align="center" style=" 30%;">
    地址
    </td>
    <td align="center" style=" 30%;">
    图片
    </td>
    <td align="center" style=" 8%;">
    操作
    </td>
    </tr>
    </HeaderTemplate>
    <ItemTemplate>
    <tr class="DataList_Item" align="Left">
    <td align="center" style=" 2%;">
    <%#Container.ItemIndex%></td>
    <td align="center" style=" 30%;">
    <a href='<%# DataBinder.Eval(Container.DataItem,"url")%>'
    target
    ="_blank"><%# DataBinder.Eval(Container.DataItem,"title")%></a>
    </td>
    <td align="center" style=" 30%;">
    <a href='<%# DataBinder.Eval(Container.DataItem,"url")%>'
    target
    ="_blank">
    <%#DataBinder.Eval(Container.DataItem, "url").ToString()%></a>
    </td>
    <td align="center" style=" 30%;">
    <a href='<%# DataBinder.Eval(Container.DataItem,"name")%>'
    target
    ="_blank"><%# DataBinder.Eval(Container.DataItem,"name")%></a>
    </td>
    <td align="center" style=" 10%;">
    <anthem:LinkButton Text="修改" ID="btn_Edit" OnClick="btn_Edit_Click" runat="server" ToolTip='<%#Container.ItemIndex%>'></anthem:LinkButton>
    <anthem:LinkButton Text="删除" ID="btn_Delete" OnClick="btn_Delete_Click" PreCallBackFunction="function (){return confirm('确定删除?');}" runat="server" ToolTip='<%#Container.ItemIndex%>'></anthem:LinkButton>
    </td>
    </tr>
    </ItemTemplate>
    <FooterTemplate>
    </table>
    </FooterTemplate>
    </anthem:Repeater>
    <table width="90%" cellpadding="5" bgcolor="#e7ecce" border="1">
    <tr>
    <td align="center" colspan="2">
    <anthem:Label ID="Txt_TableTitle" runat="server" AutoUpdateAfterCallBack="true" Text="添加新项"></anthem:Label>
    <anthem:HiddenField ID="Txt_ItemIndex" runat="server" AutoUpdateAfterCallBack="true" />
    </td>
    </tr>
    <tr>
    <td align="right">
    标题:
    &nbsp;
    </td>
    <td align="left">
    <anthem:TextBox ID="Txt_title" runat="server" AutoUpdateAfterCallBack="true" Width="301px"></anthem:TextBox></td>
    </tr>
    <tr>
    <td align="right">
    地址:
    </td>
    <td align="left">
    <anthem:TextBox ID="Txt_url" runat="server" AutoUpdateAfterCallBack="true" Width="301px"></anthem:TextBox></td>
    </tr>
    <tr>
    <td align="right">
    图片地址
    </td>
    <td align="left">
    <anthem:TextBox ID="Txt_name" runat="server" Width="303px" AutoUpdateAfterCallBack="true"></anthem:TextBox></td>
    </tr>
    <tr>
    <td align="center" colspan="2">
    <anthem:Button ID="Btn_Submit" runat="server" Text=" 确 定 " CssClass="button" OnClick="Btn_Submit_Click" AutoUpdateAfterCallBack="true" />
    &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
    &nbsp; &nbsp;
    <anthem:Button ID="BtnBack" runat="server" Text=" 取 消 " CssClass="button" OnClick="BtnBack_Click" /></td>
    </tr>
    </table>
    </div>
    </form>
    </body>
    </html>

    然后贴C# code

    使用的是Anthem控件,不使用Anthem控件的朋友可以使用常规控件,不影响效果

    代码
    using System;
    using System.Data;
    using System.Configuration;
    using System.Collections;
    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.Xml;
    using System.IO;

    namespace test
    {
    public partial class shopWindowMar : System.Web.UI.Page
    {
    private static string ImgUrl = "/adv_pic";
    private static string XmlUrl = "/xml/TheXml.xml";
    private static DataSet ds = new DataSet();
    protected void Page_Load(object sender, EventArgs e)
    {
    if (!Page.IsPostBack)
    {
    ReadXmlInfo();
    //读取XML文件并绑定到Repeater
    }
    }

    //读取XML文件并绑定到Repeater
    public void ReadXmlInfo()
    {
    ds.Tables.Clear();
    ds.ReadXml(Server.MapPath(XmlUrl));
    Repeater1.DataSource
    = ds.Tables[0].DefaultView;
    Repeater1.DataBind();
    }
    //从ds数据源重写XML文件
    public void WriteXMLInfo()
    {
    ds.WriteXml(Server.MapPath(XmlUrl));
    }
    //删除某节点
    protected void btn_Delete_Click(object sender, EventArgs e)
    {
    Anthem.LinkButton aButton
    = sender as Anthem.LinkButton;
    ds.Tables[
    0].Rows.RemoveAt(int.Parse(aButton.ToolTip.ToString()));
    WriteXMLInfo();
    ReadXmlInfo();
    }
    //修改某节点,初始化修改表单数据
    protected void btn_Edit_Click(object sender, EventArgs e)
    {
    Anthem.LinkButton aButton
    = sender as Anthem.LinkButton;
    int ItemIndex = int.Parse(aButton.ToolTip.ToString());
    Txt_TableTitle.Text
    = "修改现有第" + ItemIndex.ToString() + "个项目";
    Btn_Submit.Text
    = " 修 改 ";
    Txt_title.Text
    = ds.Tables[0].Rows[ItemIndex]["title"].ToString();
    Txt_name.Text
    = ds.Tables[0].Rows[ItemIndex]["name"].ToString();
    Txt_url.Text
    = ds.Tables[0].Rows[ItemIndex]["url"].ToString();
    Txt_ItemIndex.Value
    = ItemIndex.ToString();
    }
    //提交表单内容,进行新增或修改
    protected void Btn_Submit_Click(object sender, EventArgs e)
    {
    if (Txt_ItemIndex.Value.ToString() != "")
    {
    int EditIndex = int.Parse(Txt_ItemIndex.Value.ToString());
    ds.Tables[
    0].Rows[EditIndex]["name"] = Txt_name.Text.ToString();
    ds.Tables[
    0].Rows[EditIndex]["title"] = Txt_title.Text.ToString();
    ds.Tables[
    0].Rows[EditIndex]["url"] = Txt_url.Text.ToString();
    }
    else
    {
    DataRow dr
    = ds.Tables[0].NewRow();
    dr[
    "name"] = Txt_name.Text.ToString();
    dr[
    "title"] = Txt_title.Text.ToString();
    dr[
    "url"] = Txt_url.Text.ToString();
    ds.Tables[
    0].Rows.Add(dr);
    }
    WriteXMLInfo();
    ReadXmlInfo();
    initTxtTable();
    }
    //取消修改按钮事件
    protected void BtnBack_Click(object sender, EventArgs e)
    {
    initTxtTable();
    }
    //重置表单内容
    public void initTxtTable()
    {
    Txt_url.Text
    = "";
    Txt_title.Text
    = "";
    Txt_name.Text
    = "";
    Txt_ItemIndex.Value
    = "";
    Txt_TableTitle.Text
    = "添加新项";
    Btn_Submit.Text
    = " 添 加 ";
    }
    }
    }

    转载自:http://www.cnblogs.com/JaggerLee/archive/2009/02/04/1384062.html

  • 相关阅读:
    内网穿透教程
    深入浅出 TCP/IP 协议栈
    STM32CUBEMX配置RTC闹钟
    RT-Thread STM32 系列 BSP 制作教程
    RT-Thread 在stm小内存系列产品的nano+msh完整移植教程
    C语言字符串与数字相互转换
    SD卡 TF卡 接口引脚定义
    定位数据格式
    安信可ESP-12F连接阿里云教程
    电脑使用网络调试助手连接阿里云步骤
  • 原文地址:https://www.cnblogs.com/strivers/p/1904836.html
Copyright © 2011-2022 走看看