ASP.Net LinkBut​​ton在第一篇文章中没有更新

时间:2014-04-17 04:39:18

标签: c# asp.net asplinkbutton

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

当我点击LinkBut​​ton时,我需要在回发期间将其文本捕获到隐藏字段或视图状态,以便在页面回发时它将显示在Label或TextBox中。

但这不会发生在首页上。相反,我必须两次点击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();
        }
    }
}

2 个答案:

答案 0 :(得分:0)

简而言之,每次只需要首次加载时就可以使用它。

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

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

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

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

答案 1 :(得分:0)

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