在代码隐藏的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的建议更新按钮单击事件上的更新面板。