jt1*_*123 19 javascript c# asp.net
所以我的网站上有一个文本框:
<asp:TextBox ID="Latitude" runat="server" ClientIDMode="Static" ></asp:TextBox>
Run Code Online (Sandbox Code Playgroud)
并在页面加载时我用数据库中的东西填充该文本框:
protected void Page_Load(object sender, EventArgs e)
{
Latitude.Text = thisPlace.Latitude;
}
Run Code Online (Sandbox Code Playgroud)
但是当我想在该文本框中使用新值更新我的数据库时,它仍然使用页面加载中的数据库更新数据库:
protected void Save_Click(object sender, EventArgs e)
{
setCoordinates(Latitude.Text);
}
Run Code Online (Sandbox Code Playgroud)
这是正常的吗?我怎样才能确保我在setCoordinates()中从文本框中获取新值,而不是使用Latitude.Text = thisPlace.Latitude从文本框中获取的值.?
Jaz*_*ngo 31
我认为这是因为PostBack
如果您正在调用setCoordinates()某个按钮的单击事件文本框,则新值将丢失.如果这是正确的改变Page_Load就像这个
protected void Page_Load(object sender, EventArgs e)
{
if(!IsPostBack)
{
Latitude.Text = thisPlace.Latitude;
}
}
Run Code Online (Sandbox Code Playgroud)
小智 9
这是因为Page_Load事件发生在setCoordinates调用方法之前.这意味着Latitude.Text值与之前相同.
您应该更改加载函数,以便它不总是设置文本框的初始值.
通过更改page_load事件!Page.IsPostBack,只有给出初始值的唯一时间,才是页面首次加载.
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
Latitude.Text = thisPlace.Latitude;
}
}
Run Code Online (Sandbox Code Playgroud)
Page_Load每次加载页面时执行.添加IsPostBack检查仅在第一页加载时重置文本:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
Latitude.Text = thisPlace.Latitude;
}
}
Run Code Online (Sandbox Code Playgroud)