用xml存储数据。用户发表留言后,后台管理员针对每一留言进行回复。问题:1、如何给每一条留言设置一个自增的ID,即设置xml的节点属性ID为自增的,我试着用UniqueId,但不知道怎么用。让用户的留言和管理员的回复一一对应起来显示在网页中?2、怎么实现让用户只能看到自己的留言?给Repeater绑定数据怎么绑?3、后台管理员回复某一留言后,如何将对应的GridView控件中的“是否回复”列的值设置为“是”?小女子刚学.net不长时间,技术还很菜,问题可能很弱智,希望懂这方面的高手赐教。万分感谢哦!!

解决方案 »

  1.   

    你这样问看来你对xml是不熟悉的我想问下为什么不用数据库 ACCESS就可以了你的留言板数据稍微一多XML效率就低了 即使你用了XPATH技术针对问题1. 你可以设置一个结点专门保存ID的  每次添加时候读取当前ID+1作为新ID
    针对问题2. XML->DataTable然后进行过滤 Repeater的绑定数据比较简单
    针对问题3. 你只需要再加一个xml结点就可以了  回复后修改这个结点的状态我还是推荐用数据库
     
      

  2.   

    要是只要一对一的回复  1张表就可以了 xml不推荐
      

  3.   

    using System;
    using System.Xml;
    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.Xml.Xsl;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;
    using System.IO;
    public partial class ViewMessage : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            // 创建一个XmlDocument对象以载入存储信息的XML文件
            XmlDocument xdoc = new XmlDocument();
            xdoc.Load(Server.MapPath("MessageBoard.xml"));        // 创建一个XslTransform对象并导入XSL文件
            XslCompiledTransform xslt = new XslCompiledTransform();
            //XslTransform xslt = new XslTransform();  //XslTransform已过时        xslt.Load(Server.MapPath("MessageBoard.xsl"));
            string xmlQuery = "//MessageBoard";
            XmlNodeList nodeList = xdoc.DocumentElement.SelectNodes(xmlQuery);
            MemoryStream ms = new MemoryStream();
            xslt.Transform(xdoc, null, ms);
            ms.Seek(0, SeekOrigin.Begin);
            StreamReader sr = new StreamReader(ms);        // 显示输出结果
            Response.Write(sr.ReadToEnd());
        }
    }
      

  4.   

    <%@ Page Language="C#" AutoEventWireup="true"  CodeFile="MessageBoard.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>
    <script language="javascript" type="text/javascript">
    </script></head>
    <body bgcolor="#fef4d9" onLoad="showtime()">
    <script language="javascript">function showtime()
    {
    var ary = new Array(
    "星期日",
    "星期一",
    "星期二",
    "星期三",
    "星期四",
    "星期五",
    "星期六");
    time=new Date();
    syear=time.getYear();
    smonth=time.getMonth()+1;
    sday=time.getDate();
    sweek=time.getDay();
    h=time.getHours();
    m=time.getMinutes();
    s=time.getSeconds();
    var sminute;
    if(m<10)
      sminute="0"+m;
    else
      sminute=m;
    tip.innerText=" "+syear+"年"+smonth+"月"+sday+"日 "+ary[sweek]+" "+h+":"+sminute;
    setTimeout("showtime()",1000);
    }
    </script> 
    <form id="form1" runat="server">
        <div>
          <center>
            <table  align="center";style="border-right: purple thin solid; border-top: purple thin solid; border-left: purple thin solid; border-bottom: purple thin solid">
                <tr>
                    <td colspan="4" style="height:80px; text-align: left; background-color: purple;">
                        <strong><span style="color: #ff0033;"><span style="color: #ffffff; font-size: 24pt; border-right-style: none;">
                            &nbsp;
                            欢迎访问我的留言簿!</span></span></strong></td>
                </tr>
                  
                <tr>
                    <td nowrap id='tip' colspan="4" style="height:40px; font-weight: bold; vertical-align: top; color: navy; text-align: right; text-decoration: underline;">
                    </td>
                </tr>
                
                <tr>
                    <td style="width:120px; text-align: center;" >
                        用 户 名:</td>
                    
                    <td style="width:28px; text-align: left;">
                        <asp:TextBox ID="txtName" runat="server" Width="170px"></asp:TextBox></td>
                    
                    <td style="width:200px; text-align: left;">
                        <span style="font-size: 10pt; color: #ff0000">*用户名不能为空</span></td>
                    
                    <td style="width:150px">
                    </td>
                </tr>
     
                <tr>
                    <td style="text-align: center; width: 120px;">
                        Email地址:</td>
                    
                    <td style="width: 28px; text-align: left">
                        <asp:TextBox ID="txtEmail" runat="server" Width="170px"></asp:TextBox></td>
                                    
                    <td style="width: 200px; text-align: left;">
                        <span style="font-size: 10pt; color: #ff0000"></span></td>
                    
                    <td style="width: 150px">
                    </td>
                </tr> 
                
                <tr>
                    <td style="text-align: center; width: 120px;">
                        Q Q 号码:</td>
                    
                    <td style="width: 28px; text-align: left">
                        <asp:TextBox ID="txtQQ" runat="server" Width="170px"></asp:TextBox></td>
                                    
                    <td style="width: 200px; text-align: left;">
                        <span style="font-size: 10pt; color: #ff0000"></span></td>
                    
                    <td style="width: 150px">
                    </td>
                </tr>
                            
                <tr>
                    <td style="text-align: center; width: 120px;">
                        个人主页:</td>
                    
                    <td style="text-align: left" colspan="2">
                        <asp:TextBox ID="txtPage" runat="server" Width="370px"></asp:TextBox></td>
                    
                    <td style="width: 150px; text-align: left;">
                        <span style="font-size: 10pt; color: #ff0000"></span></td>
                </tr>             <tr style="height:160">
                    <td style="text-align: center; vertical-align: top; width: 120px; height: 200px;">
                        留言信息:</td>
                    
                    <td style="vertical-align: top; height: 200px; text-align: left" colspan="2" > 
                        <asp:TextBox ID="txtMessage" runat="server" Height="190px" TextMode="MultiLine" Width="370px"></asp:TextBox></td>
                    
                    <td style="vertical-align: top; width: 150px; height: 200px; text-align: left">
                        <span style="font-size: 10pt; color: #ff0000">*留言信息不能为空<br />
                            <br />
                            <br />
                            <br />
                            <br />
                            <br />
                            <br />
                            <br />
                            <br />
                            <br />
                            <br />
                            <asp:Button ID="Button3"
                            runat="server" Text="查看留言薄" OnClick="Button3_Click" /></span></td>
                </tr> 
                
                <tr>
                    <td colspan="4" style="width:640px; height:40px">
                        <asp:Button ID="Button1" runat="server" Text="提 交" OnClick="Button1_Click" />
                        &nbsp;
                        <asp:Button ID="Button2" runat="server" Text="重 置" OnClick="Button2_Click" />&nbsp; &nbsp;&nbsp;</td>
                </tr>
                
                <tr>
                    <td colspan="4" style="width:640prx; height:20px">
                        &nbsp;
                        <hr />
                        |
                        <asp:HyperLink ID="HyperLink1" runat="server" Font-Size="Small" NavigateUrl="~/About.aspx">关于我们</asp:HyperLink>
                        |
                        <asp:HyperLink ID="HyperLink2" runat="server" Font-Size="Small" NavigateUrl="http://kingboy.cc.topzj.com">技术论坛</asp:HyperLink>
                        |
                        <asp:HyperLink ID="HyperLink3" runat="server" Font-Size="Small" NavigateUrl="mailto:[email protected]">联系我们</asp:HyperLink>
                        |
                        <asp:HyperLink ID="HyperLink4" runat="server" Font-Size="Small" NavigateUrl="~/MessageBoard.aspx">给我留言</asp:HyperLink>
                        |</td>
                </tr>
                
                <tr>
                    <td colspan="4" style="width:640px; color: blue;">
                        <asp:Label ID="Label1" runat="server" Font-Size="Small" Text="=★灵雨飘零论坛★="></asp:Label></td>
                </tr>
                
                <tr>
                    <td colspan="4" style="width:640px">
                        <asp:Label ID="lblCopyRight" runat="server" Font-Size="Small" ForeColor="Red" Text="Label"></asp:Label></td>
                </tr>
                                        
            </table>
          </center>
        </div>
        </form>
    </body>
    </html>
      

  5.   

    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.Xml;
    using System.Xml.Xsl;
    using System.IO;
    using System.Collections;public partial class _Default : System.Web.UI.Page 
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            this.lblCopyRight.Text = "CopyRight @ 2007~"+DateTime.Now.Year+"  All Rights Reserved.";
        }    protected void Button1_Click(object sender, EventArgs e)
        {
            if (this.txtName.Text == "")
            {
                Response.Write("<script lanuage=javascript>alert('用户名不能为空!');location='javascript:history.go(-1)'</script>");        }
            if (this.txtMessage.Text == "")
            {
                Response.Write("<script lanuage=javascript>alert('请填写留言信息!');location='javascript:history.go(-1)'</script>");
            }
            else
            {
                SaveMessage();
                this.txtEmail.Text = "";
                this.txtMessage.Text = "";
                this.txtName.Text = "";
                this.txtPage.Text = "";
                this.txtQQ.Text = "";
            }    }
        protected void Button2_Click(object sender, EventArgs e)
        {
            this.txtEmail.Text = "";
            this.txtMessage.Text = "";
            this.txtName.Text = "";
            this.txtPage.Text = "";
            this.txtQQ.Text = "";
        }
        protected void Button3_Click(object sender, EventArgs e)
        {
            Response.Redirect("ViewMessage.aspx");
        }    private void SaveMessage()
        {
            try
            {
                // 创建一个XmlDocument对象,用于载入存储信息的XML文件
                XmlDocument xmlDoc = new XmlDocument();
                xmlDoc.Load(Server.MapPath("MessageBoard.xml"));            // 创建一个新的guest节点并将它添加到根节点下
                XmlElement parentNode = xmlDoc.CreateElement("guest");
                xmlDoc.DocumentElement.PrependChild(parentNode);            // 创建所有用于存储信息的节点
                XmlElement nameNode = xmlDoc.CreateElement("name");
                XmlElement emailNode = xmlDoc.CreateElement("email");
                XmlElement qqNode = xmlDoc.CreateElement("qq");
                XmlElement pageNode = xmlDoc.CreateElement("page");
                XmlElement contentNode = xmlDoc.CreateElement("content");            // 获取文本信息
                XmlText nameText = xmlDoc.CreateTextNode(this.txtName.Text);
                XmlText emailText = xmlDoc.CreateTextNode(this.txtEmail.Text);
                XmlText qqText = xmlDoc.CreateTextNode(this.txtQQ.Text);
                XmlText pageText = xmlDoc.CreateTextNode(this.txtPage.Text);
                XmlText contentText = xmlDoc.CreateTextNode(this.txtMessage.Text);            // 将上面创建的各个存储信息的节点添加到guest节点下但并不包含最终的值
                parentNode.AppendChild(nameNode);
                parentNode.AppendChild(emailNode);
                parentNode.AppendChild(qqNode);
                parentNode.AppendChild(pageNode);
                parentNode.AppendChild(contentNode);            // 将上面获取的文本信息添加到与之相对应的节点中
                nameNode.AppendChild(nameText);
                emailNode.AppendChild(emailText);
                qqNode.AppendChild(qqText);
                pageNode.AppendChild(pageText);
                contentNode.AppendChild(contentText);            // 保存存储信息的XML文件
                xmlDoc.Save(Server.MapPath("MessageBoard.xml"));
                // 显示所有用户的留言信息
                Response.Redirect("ViewMessage.aspx");
            }catch(Exception e)
            {
                Response.Write(e.Message);
            }    }
    }
      

  6.   

    是的,谢谢你的回复。我本来是想用数据库,领导让用xml,说安全防SQL注入。其实不然吧?xml也不安全吧?针对问题2,我问一下您,如果我想得到登录用户的留言,用Session["user"]存储,对应xml中的userName节点,匹配两者的值进行检索数据,DataTable怎么过滤呢?DataTable[]??我刚学,很菜的,呵呵,请教了!!