LayoutTemplate 中的 Tetxtbox 没有采用 c# 中的更改文本
Tetxtbox inside LayoutTemplate is not taking the changing text in c#
我有两个网页,我使用会话将数据从一个网页发送到另一个网页。从第一个网页我使用会话获取数据到第二个页面并将其设置为 LayoutTemplate 内的文本框,如下所示,
protected void Page_Load(object sender, EventArgs e)
{
instructrid = Int32.Parse(Session["instructorId"].ToString());
((TextBox)Login1.FindControl("userName")).Text = Session["firstname"].ToString();
((TextBox)Login1.FindControl("password")).Text = Session["surname"].ToString();
((TextBox)Login1.FindControl("gender")).Text = Session["gender"].ToString();
((TextBox)Login1.FindControl("email")).Text = Session["email"].ToString();
((TextBox)Login1.FindControl("style")).Text = Session["style"].ToString();
((TextBox)Login1.FindControl("phonenumber")).Text = Session["phonenumber"].ToString();
((TextBox)Login1.FindControl("hourlyRate")).Text = Session["hourlyRate"].ToString();
((TextBox)Login1.FindControl("availability")).Text = Session["availability"].ToString();
}
然后在第二页中,用户可以根据需要在文本框中编辑这些值。然后我将这些更改的值发送到数据库以更新它们。但问题是数据并没有从会话值改变。我能够编辑文本框中的值,但在后端它与从会话中设置的值相同。下面是通过单击按钮获取值的代码。
protected void Button1_Click(object sender, EventArgs e)
{
string firstname = ((TextBox)Login1.FindControl("userName")).Text;
string surname = ((TextBox)Login1.FindControl("password")).Text;
string gender = ((TextBox)Login1.FindControl("gender")).Text;
string email = ((TextBox)Login1.FindControl("email")).Text;
string style = ((TextBox)Login1.FindControl("style")).Text;
string phonenumber = ((TextBox)Login1.FindControl("phonenumber")).Text;
string hourlyrate = ((TextBox)Login1.FindControl("hourlyRate")).Text;
string availability = ((TextBox)Login1.FindControl("availability")).Text;
DBClass.editInstructor(instructrid, firstname, surname, gender, email, style,phonenumber, hourlyrate, availability);
}
我不明白这是怎么发生的。请帮助
这是因为您在页面加载时设置值,并且每次页面回发时旧值都会从会话复制到文本 box.i。e 当您单击保存按钮时旧值首先复制到文本框,然后保存到数据库。只需将页面加载代码放在 if(!IspostBack) 中即可。
protected void Page_Load(object sender, EventArgs e)
{
if(!IsPostBack)
{
instructrid = Int32.Parse(Session["instructorId"].ToString());
((TextBox)Login1.FindControl("userName")).Text = Session["firstname"].ToString();
((TextBox)Login1.FindControl("password")).Text = Session["surname"].ToString();
((TextBox)Login1.FindControl("gender")).Text = Session["gender"].ToString();
((TextBox)Login1.FindControl("email")).Text = Session["email"].ToString();
((TextBox)Login1.FindControl("style")).Text = Session["style"].ToString();
((TextBox)Login1.FindControl("phonenumber")).Text = Session["phonenumber"].ToString();
((TextBox)Login1.FindControl("hourlyRate")).Text = Session["hourlyRate"].ToString();
((TextBox)Login1.FindControl("availability")).Text = Session["availability"].ToString();
}
}
我有两个网页,我使用会话将数据从一个网页发送到另一个网页。从第一个网页我使用会话获取数据到第二个页面并将其设置为 LayoutTemplate 内的文本框,如下所示,
protected void Page_Load(object sender, EventArgs e)
{
instructrid = Int32.Parse(Session["instructorId"].ToString());
((TextBox)Login1.FindControl("userName")).Text = Session["firstname"].ToString();
((TextBox)Login1.FindControl("password")).Text = Session["surname"].ToString();
((TextBox)Login1.FindControl("gender")).Text = Session["gender"].ToString();
((TextBox)Login1.FindControl("email")).Text = Session["email"].ToString();
((TextBox)Login1.FindControl("style")).Text = Session["style"].ToString();
((TextBox)Login1.FindControl("phonenumber")).Text = Session["phonenumber"].ToString();
((TextBox)Login1.FindControl("hourlyRate")).Text = Session["hourlyRate"].ToString();
((TextBox)Login1.FindControl("availability")).Text = Session["availability"].ToString();
}
然后在第二页中,用户可以根据需要在文本框中编辑这些值。然后我将这些更改的值发送到数据库以更新它们。但问题是数据并没有从会话值改变。我能够编辑文本框中的值,但在后端它与从会话中设置的值相同。下面是通过单击按钮获取值的代码。
protected void Button1_Click(object sender, EventArgs e)
{
string firstname = ((TextBox)Login1.FindControl("userName")).Text;
string surname = ((TextBox)Login1.FindControl("password")).Text;
string gender = ((TextBox)Login1.FindControl("gender")).Text;
string email = ((TextBox)Login1.FindControl("email")).Text;
string style = ((TextBox)Login1.FindControl("style")).Text;
string phonenumber = ((TextBox)Login1.FindControl("phonenumber")).Text;
string hourlyrate = ((TextBox)Login1.FindControl("hourlyRate")).Text;
string availability = ((TextBox)Login1.FindControl("availability")).Text;
DBClass.editInstructor(instructrid, firstname, surname, gender, email, style,phonenumber, hourlyrate, availability);
}
我不明白这是怎么发生的。请帮助
这是因为您在页面加载时设置值,并且每次页面回发时旧值都会从会话复制到文本 box.i。e 当您单击保存按钮时旧值首先复制到文本框,然后保存到数据库。只需将页面加载代码放在 if(!IspostBack) 中即可。
protected void Page_Load(object sender, EventArgs e)
{
if(!IsPostBack)
{
instructrid = Int32.Parse(Session["instructorId"].ToString());
((TextBox)Login1.FindControl("userName")).Text = Session["firstname"].ToString();
((TextBox)Login1.FindControl("password")).Text = Session["surname"].ToString();
((TextBox)Login1.FindControl("gender")).Text = Session["gender"].ToString();
((TextBox)Login1.FindControl("email")).Text = Session["email"].ToString();
((TextBox)Login1.FindControl("style")).Text = Session["style"].ToString();
((TextBox)Login1.FindControl("phonenumber")).Text = Session["phonenumber"].ToString();
((TextBox)Login1.FindControl("hourlyRate")).Text = Session["hourlyRate"].ToString();
((TextBox)Login1.FindControl("availability")).Text = Session["availability"].ToString();
}
}