我有以下问题: 我在我的网页中动态创建一个TextBox,其值为" initialVal"在一开始的时候。 现在我需要对服务器进行回发(而不是回调),在此操作期间,我需要计算/更改文本框的值为其他值。
以下是一个例子:
protected void Page_Load(object sender, EventArgs e)
{
TextBox txtBox = new TextBox();
txtBox.ID = "newButton";
form1.Controls.Add(txtBox);
txtBox.Text = "initialVal";
if (IsPostBack && Session["change"] == null)
{
txtBox.Text = "change";
Session["change"] = true;
}
}
问题:即使我通过代码更改了值,文本框也会保留文本" initialVal"。我觉得这与视角状态有关,但我不明白。 Coudl有人请帮帮我吗?
感谢。
答案 0 :(得分:1)
在!IsPostBack
中创建动态文本框创建 protected void Page_Load(object sender, EventArgs e)
{
if(!isPostBack){
TextBox txtBox = new TextBox();
txtBox.ID = "newButton";
form1.Controls.Add(txtBox);
txtBox.Text = "initialVal";
}
if (IsPostBack && Session["change"] == null)
{
txtBox.Text = "change";
Session["change"] = true;
}
}
如果您的问题仍未解决,请与我们联系
答案 1 :(得分:1)
每次加载页面时都会运行:
txtBox.Text = "initialVal";
你应该将它包装在支票回复中:
if (!Page.IsPostback)
{
txtBox.Text = "initialVal";
}
也就是说,onLoad
是创建错误的事件,因为它在页面生命周期的早期有效,请使用OnInit
。
请参阅此article on MSDN。
以下是来自@ user2890888的最终代码:
public partial class WebForm1 : System.Web.UI.Page
{
TextBox txtBox = null;
protected void Page_Init(object sender, EventArgs e)
{
txtBox = new TextBox();
txtBox.ID = "newButton";
form1.Controls.Add(txtBox);
}
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
txtBox.Text = "initialVal";
}
if (IsPostBack && Session["change"] == null)
{
txtBox.Text = "change";
Session["change"] = true;
}
}
}
答案 2 :(得分:0)
找到 TextBox
并使用它
TextBox txtBox = (TextBox)FindControl("txtBox");
txtBox.Text = "change";
答案 3 :(得分:0)
即使现在你遇到问题,你的textBox也没有得到你需要的价值。 将TEXTBOX的新值存储在隐藏字段中。 我的意思是,
if (IsPostBack && Session["change"] == null)
{
hiddenfield1.value = "change";
}
以及稍后在页面脚本中,您可以将此hiddenfield1中的值分配回文本框。
$(document).ready(
{
$('#txtBoxID').value=$('#hiddenfield1').value;
}
);