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();
        }
    }
}

ASP.Net链接按钮不会在第一次发布时更新

好吧,它发生在服务器端方法执行的序列之后。先加载页面,然后按顺序单击控件的方法。而不是像现在这样使用LinkButton控件的客户端JavaScript函数OnClientClick来更新隐藏字段。

简而言之,每次需要在第一次加载时执行某个东西时都会使用它。

Page.IsPostBack的经典用法是数据绑定/控件初始化。

if(!Page.IsPostBack)
{
   //Control Initialization
   //Databinding
}

在ViewState和ControlState上持久化的东西不需要在每次回发时重新创建,因此您可以检查这种情况,以避免执行不必要的代码。

另一个经典用法是获取和处理Querystring参数。你不需要在回邮时那样做。