ASP.NET 动态创建的文本框不改变值
ASP.NET dynamically created textbox doesn't change value
我有以下问题:
我在我的网页中动态创建了一个TextBox,它的值一开始是"initialVal"。
现在我需要对服务器进行回发(不是回调),在此操作期间,我需要 compute/change 我的文本框的值到其他值。
这是一个例子:
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"。我觉得这和视图状态有关,但我不明白。
有人可以帮我吗?
谢谢。
在 !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;
}
}
谢谢,如果您的问题仍然悬而未决,请告诉我
找到TextBox
并使用它
TextBox txtBox = (TextBox)FindControl("txtBox");
txtBox.Text = "change";
每次加载页面时,它都是 运行 这个:
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;
}
}
}
即使现在您也有问题,您的文本框没有获得您需要的值。
将 TEXTBOX 的新值存储在隐藏字段中。
我是说,
if (IsPostBack && Session["change"] == null)
{
hiddenfield1.value = "change";
}
稍后在您的页面脚本中,您可以将此 hiddenfield1 中的值分配回文本框。
$(document).ready(
{
$('#txtBoxID').value=$('#hiddenfield1').value;
}
);
我有以下问题: 我在我的网页中动态创建了一个TextBox,它的值一开始是"initialVal"。 现在我需要对服务器进行回发(不是回调),在此操作期间,我需要 compute/change 我的文本框的值到其他值。
这是一个例子:
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"。我觉得这和视图状态有关,但我不明白。 有人可以帮我吗?
谢谢。
在 !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;
}
}
谢谢,如果您的问题仍然悬而未决,请告诉我
找到TextBox
并使用它
TextBox txtBox = (TextBox)FindControl("txtBox");
txtBox.Text = "change";
每次加载页面时,它都是 运行 这个:
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;
}
}
}
即使现在您也有问题,您的文本框没有获得您需要的值。 将 TEXTBOX 的新值存储在隐藏字段中。 我是说,
if (IsPostBack && Session["change"] == null)
{
hiddenfield1.value = "change";
}
稍后在您的页面脚本中,您可以将此 hiddenfield1 中的值分配回文本框。
$(document).ready(
{
$('#txtBoxID').value=$('#hiddenfield1').value;
}
);