1

我想在运行时创建一些不能命中“异步回发”的项目。

实际上,我的网格视图中的每一行都有一个按钮。此控件不得生成部分回发,而是生成完整回发(因为结果必须是报告的下载)。

实际上我尝试了两种方式:

  1. 页面加载时

    • 递归搜索每个是 Button 并具有指定类的控件
    • 通过以下方式将项目添加到 ScriptManager:

      ScriptManager.GetCurrent(this).RegisterPostBackControl(control);

    • 此代码被命中正确的次数,但仍会生成部分回发

  2. 关于项目生成

    • 我在按钮生成中添加了一个“OnDataBinding”事件
    • 在这种情况下,我会做类似的事情:

      var button =(控制)发件人;

      ScriptManager.GetCurrent(this).RegisterPostBackControl(button);

为什么这不起作用?

在这两种情况下,我都点击了特定情况并将控件“注册”为“执行完整回发”,那么我如何获得部分控件?

谢谢

4

2 回答 2

1

我不知道您所说的部分回发是什么意思,但我猜您正在尝试对您希望在页面加载后发生的按钮单击事件执行某些操作。对此有一个快速的解决方法,在页面加载事件中,您可以检查单击了哪个按钮。

if(IsPostBack){
    clickedButtonID=Request.Form["__EVENTTARGET"]; 
}
于 2014-01-29T06:51:22.190 回答
1

我找到了一个有效的解决方案,它不涉及任何特定的代码/覆盖。

我专注于单个“自动生成”按钮,但是当我开始考虑区域和父母时,一切都很好。

作为解决方案,我只需将整个 GridView 注册到脚本管理器,通过这种方式,内部的所有控制器都会生成完整的回发而不是部分回发。

在我的 Page_Load 我现在有:

        ScriptManager.GetCurrent().RegisterPostBackControl(grd_Reports);
于 2014-01-29T06:54:57.547 回答