XML节点编辑。

时间:2012-11-29 12:01:29

标签: c# asp.net xml

我将queryString中的值分配给这些文本框,并且工作正常,但每当我编辑其中一个文本并尝试将编辑后的数据保存在XML节点中时,我就不能

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (Request.QueryString != null) 
    { 
        TextBox_firstname.Text = Request.QueryString["column1"]; 
        TextBox_lastname.Text = Request.QueryString["column2"]; 
    } 
    else 
    { 
    } 
} 

这段代码有什么用吗?它将未经编辑的版本保存在节点中!

public string str_id; 
public int id; 
id = int.Parse(str_id); 

XDocument xdoc = XDocument.Load(filepath); 

if (id == 1) 
{ 
    var StudentNodeWithID1 = xdoc.Descendants("students") 
        .Elements("student") 
        .Where(s => s.Element("id").Value == "1") 
        .SingleOrDefault(); 
    StudentNodeWithID1.Element("first_name").Value = TextBox_firstname.Text; 
    StudentNodeWithID1.Element("last_name").Value = TextBox_lastname.Text; 
}

2 个答案:

答案 0 :(得分:1)

每次加载时都会触发Page_Load(在回发时和初始加载时)。在事件处理程序尝试保存之前,您的代码当前在每次加载时从Request.QueryString默认值。

请改为:

        protected void Page_Load(object sender, EventArgs e) 
        {
            if (!IsPostBack && Request.QueryString != null) 
            { 
                TextBox_firstname.Text = Request.QueryString["column1"]; 
                TextBox_lastname.Text = Request.QueryString["column2"]; 
            } 
            else 
            { 
            } 
        } 

答案 1 :(得分:0)

如果您要提交已编辑的文本框,则需要使用Pageload检查IsPostback中的代码,以确保不会将值重置为原始值。