我可以正确读取、增加XML中的数据,但是在使用修改按钮(btnSave_Click)修改数据时,却无法将传递过去(即RealName.Text还是原有的值,而不是我在客户端修改过的值),请高手指点!!!//---------------form .aspx----------------------------------<form name="usermessage" id="usermessage" method="post" action="" runat="server" onsubmit="return check();">
真实姓名:
<asp:TextBox id="RealName" runat="server" Width="80px" CssClass="ipt" MaxLength="10"></asp:TextBox><asp:Button id="btnSave" runat="server" Text="修改" CssClass="btn"></asp:Button>
</form>//---------------updata .cs------------------------------------------------ private void btnSave_Click(object sender, System.EventArgs e)
{
DataSet ds = new DataSet();
ds.ReadXml(Request.PhysicalApplicationPath + "\\data\\" + userName + ".xml");
DataView dv = ds.Tables["UserInfo"].DefaultView; if(dv.Count > 0)
{
DataRow dr = dv[0].Row;
dv[0]["RealName"] = RealName.Text;
ds.WriteXml(Request.PhysicalApplicationPath + "\\data\\abc.xml",XmlWriteMode.WriteSchema);
}
}

解决方案 »

  1.   

    Page_Load里面给RealName文本框赋值的时候有没有加上if(!Page.IsPostBack)if(!Page.IsPostBack)
    {
       ....给你的一系列文本框赋值
    }
      

  2.   

    dv[0]["RealName"] = RealName.Text;
    这一句设为断点,看看RealName.Text;的值;另外在在这句之加一句:
    DS.ACCEPTCHANGE();你怎么知道是TEXTBOX的值没取到,而不是没有改到文件里呢?
      

  3.   

    上面漏了一个字,是在那句之后加一句,因为你的DATASET没有保存;
      

  4.   

    我在dv[0]["RealName"] = RealName.Text;后增加了一行:Response.Write(RealName.Text); 结果和我以前的值一样!
      

  5.   

    你的文本框什么时候赋值的?
    如果是在Page_Load里面
    一定要加上
    if(!Page.IsPostBack)
    {
       ....给你的一系列文本框赋值
    }否则页面POSTBACK不丢失才怪!
      

  6.   

    if(!Page.IsPostBack)
    {
       ....给你的一系列文本框赋值
    }
      

  7.   

    问题已经解决,是:(!Page.IsPostBack)问题,谢谢大家,非常感谢!!