2010-03-25 67 views
1

我有一个GridView,位于UserControl的内部,位于页面上的UpdatePanel内。ASP.NET GridView和UpdatePanel

GridView中有Button需要触发PostBack。会发生什么是: 用户点击Button - >RowCommand火灾 - >自定义事件在UserControl上发生 - >页面检测到此错误,并更改MultiView的活动视图索引以及页面标题和UpdatePanel以外的其他控件。

问题是,页面回发异步,页面标题更改,但需要完整PostBack的操作不会发生,因为不会发生完整的PostBack

要注册按钮作为PostBack触发我使用:

ImageButton btnResults = e.Row.FindControl("btnResults") as ImageButton; 
ScriptManager scrCurrent = ScriptManager.GetCurrent(this.Page); 
if (btnResults != null && scrCurrent != null) { 
    scrCurrent.RegisterPostBackControl(btnResults); 
} 

我知道这是一个有点复杂的问题,但我会很感激的任何帮助。

+0

你可以发布你的imagebutton标记吗? – Nix 2010-03-25 12:21:21

+0

此用户控件中是否存在其他项目,您希望导致异步回发,还是导致回发的唯一按钮? – cptScarlet 2010-03-25 16:47:22

+0

Thee按钮是唯一的东西。见下面的答案。 – Echilon 2010-03-26 08:03:28

回答

1

最终的解决方案是按照原样使用上述代码,但在RowCreated事件而不是RowDataBound中。显然,ASP.NET的怪癖之一,有时事件顺序是令人惊讶和看似不可预测的。出于同样的原因,我总是尽可能晚地注册JavaScript,所以我通常使用SaveStateComplete事件。