4

我将查询字符串中的值分配给这些文本框并且效果很好,但是每当我在其中一个文本框中编辑文本并尝试将编辑后的数据保存在 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; 
}
4

2 回答 2

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 
            { 
            } 
        } 
于 2012-11-30T20:09:00.047 回答
0

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

于 2012-11-29T14:41:34.100 回答