在代码隐藏的buttonclick上刷新updatepanel

我正在使用一个使用数据源和数据绑定的Gridview。 当我重新加载页面时,gridview已更新,但我希望它在按钮上,但它不适合我。

updatepanel中的gridview:

         


代码隐藏:

 protected void btnWall_Click(object sender, EventArgs e) { con.SendWallPost(con.GetId(Membership.GetUser().UserName), Convert.ToInt32(Request.QueryString["ID"]), txtWall.Text); //This method is sending the post upWall.Update(); } 

所以,我希望在ButtonClick上更新updatepanel,我不想重新加载整个页面来查看结果

由于我没有看到按钮btnWall ,我认为它在UpdatePanel之外。 但是,如果要允许UpdatePanel外部的控件触发回发,则需要定义显式触发器。

因此,您可以使用AsyncPostBackTrigger

   ....      

默认情况下,在更新面板中启用了部分页面更新,因为ScriptManager控件的EnablePartialRendering属性的默认值为true。在更新面板中设置按钮就足以为您提供所需内容,因为该按钮充当异步面板内的回发控制。然后在更新后添加此行(gvWallospts.Databind())。让我知道它是怎么回事。

 protected void btnWall_Click(object sender, EventArgs e) { con.SendWallPost(con.GetId(Membership.GetUser().UserName), Convert.ToInt32(Request.QueryString["ID"]), txtWall.Text); //This method is sending the post //upWall.Update(); gvWallPosts.DataBind(); } 

尝试设置这样的标记

             <%# GetSender((int)Eval("WallSender"))%> 
<%# Eval("Post")%>

在您的网格行更新事件中

  protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e) { con.SendWallPost(con.GetId(Membership.GetUser().UserName), Convert.ToInt32(Request.QueryString["ID"]), txtWall.Text); gvWallPosts.DataBind(); } 

确保页面加载中的绑定代码也被此夹在中间

  If(!IsPostBack) { } 

您应该将按钮放在更新面板内,或者定义一个显式触发器,以按照Tim Schmelter的建议更新按钮单击事件上的更新面板。