我如何在Telerik RadGrid的AsyncPostback中使用RegisterPostbackControl

时间:2012-06-13 09:47:36

标签: asp.net vb.net telerik

我在一个页面中有一个RadGrid,它有一个主页面,其中UpdatePanel包裹着内容。

首次加载时,我已成功为其上的导出按钮运行RegisterPostbackControl,因此:

Private Sub uxGrid_ItemCreated(ByVal sender As Object, 
                               ByVal e As GridItemEventArgs)
    If TypeOf e.Item Is GridCommandItem Then
        Dim sc As ScriptManager = CType(Master.FindControl("Sc"), ScriptManager)
        RegisterPostBackControl(e.Item.FindControl("ExportToCSVButton"))
    End If
End Sub

这很有效,如果按下导出按钮,它会执行完整的回发并导出文件。

我在该页面上有另一个控件(日期控件),它会更改网格的内容,并以异步方式发回。

问题是,一旦我完成了一次异步回发,我就无法再次注册控件,并且导出按钮不再触发完整的回发。我已经尝试将RegisterPostback放在我能想到的许多不同的地方 - RenderComplete,Init,Load,PreRender等,但它似乎无济于事。一旦它在异步回发中,我就无法注册它。

我尝试过的其他一些代码:

For Each cmdItem As GridCommandItem In 
                  uxResponse.MasterTableView.GetItems(GridItemType.CommandItem)
    sc.RegisterPostBackControl(cmdItem.FindControl("ExportToCSVButton"))

我知道我可以完全关闭异步回发,但我更倾向于拥有响应能力,这是唯一被破坏的东西。

还有其他人遇到过这个问题并对其进行排序吗?

1 个答案:

答案 0 :(得分:0)

我通过绕过问题对此进行了排序:我修改了aspx页面,一直有一个导出按钮(不是动态创建的),注册了回发,并使用CSS将新按钮放在同一个地方。旧按钮。

不是特别好,但它可以作为一种kludge。

如果没有人知道更好的方法,我会在一段时间内将其标记为答案。