ASP.Net链接按钮不会在第一次发布时更新
本文关键字:第一次 布时 更新 Net 链接 按钮 ASP | 更新日期: 2023-09-27 17:58:53
在ListView控件的<ItemTemplate>
中,我正在使用LinkButton。当列表填充时,它有一组链接按钮。链接按钮文本是从使用数据源检索的记录中的列生成的。
当我点击链接按钮时,我需要在回发页面时将其文本捕获到隐藏字段或视图状态,这样当页面回发时,它将显示在标签或文本框中。
但这并没有发生在第一页的帖子回来。相反,我必须单击LinkButton两次,以便在Label/TextBox中显示值。
我如何才能在第一个帖子中完成它?
我在没有ListView的情况下尝试了同样的操作,只使用了下面的LinkButton,得到了同样的结果。
protected void LinkButton_Click(object sender, EventArgs e)
{
LinkButton selectedButton = (LinkButton)sender;
HiddenField1.Value = selectedButton.Text;
ViewState["LinkButtonText"] = selectedButton.Text;
}
protected void Page_Load(object sender, EventArgs e)
{
if (!string.IsNullOrEmpty(HiddenField1.Value))
{
Label1.Text = HiddenField1.Value;
}
TextBox1.Text = HiddenField1.Value;
if (ViewState["LinkButtonText"] != null)
{
if (!string.IsNullOrEmpty(ViewState["LinkButtonText"].ToString()))
{
ViewStateTextBox.Text = ViewState["LinkButtonText"].ToString();
}
}
}
好吧,它发生在服务器端方法执行的序列之后。先加载页面,然后按顺序单击控件的方法。而不是像现在这样使用LinkButton控件的客户端JavaScript函数OnClientClick来更新隐藏字段。
简而言之,每次需要在第一次加载时执行某个东西时都会使用它。
Page.IsPostBack的经典用法是数据绑定/控件初始化。
if(!Page.IsPostBack)
{
//Control Initialization
//Databinding
}
在ViewState和ControlState上持久化的东西不需要在每次回发时重新创建,因此您可以检查这种情况,以避免执行不必要的代码。
另一个经典用法是获取和处理Querystring参数。你不需要在回邮时那样做。