【问题标题】:ASP.Net LinkButton Does not update on first post backASP.Net LinkBut​​ton 在第一次回发时不更新
【发布时间】:2014-04-17 04:39:17
【问题描述】:

在 ListView 控件的 <ItemTemplate> 中,我使用的是 LinkBut​​ton。 当列表填充时,它有一组链接按钮。链接按钮文本是从使用数据源检索的记录中的列生成的。

当我单击链接按钮时,我需要在回发期间将其文本捕获到隐藏字段或视图状态中,以便在页面回发发生时将其显示在标签或文本框中。

但它不会发生在第一页回发。相反,我必须单击 LinkBut​​ton 两次才能获得两个回发,以便在 Label/TextBox 中显示该值。

如何在第一次回帖中完成?

我在没有 ListView 的情况下尝试了相同的方法,只使用了如下所示的 LinkBut​​ton,并获得了相同的结果。

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

【问题讨论】:

    标签: c# asp.net asplinkbutton


    【解决方案1】:

    嗯,它发生在服务器端方法执行的顺序上。先加载页面,然后按该顺序加载控件单击方法。而不是像现在这样使用 LinkBut​​ton 控件的客户端 JavaScript 函数 OnClientClick 更新隐藏字段,该函数会更新隐藏字段。

    【讨论】:

      【解决方案2】:

      简而言之,您每次只需要在首次加载时执行某些操作时使用它。

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

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

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

      另一个经典用法是获取和处理查询字符串参数。你不需要在回发时这样做。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-12-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-01-21
        • 1970-01-01
        相关资源
        最近更新 更多