Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 围绕用户控件的UpdatePanel_Asp.net_Ajax_Updatepanel_User Controls - Fatal编程技术网

Asp.net 围绕用户控件的UpdatePanel

Asp.net 围绕用户控件的UpdatePanel,asp.net,ajax,updatepanel,user-controls,Asp.net,Ajax,Updatepanel,User Controls,我有一个用户控件,其中包含一些按钮和占位符。这些按钮导致从占位符中添加/删除控件。一切正常 现在,我想将此用户控件放在一个页面中,并将其包装在updatepanel中,如下所示: <asp:UpdatePanel ChildrenAsTriggers="true" ID="UpdatePanelFoo" runat="server" UpdateMode="Conditional"> <ContentTemplate>

我有一个用户控件,其中包含一些按钮和占位符。这些按钮导致从占位符中添加/删除控件。一切正常

现在,我想将此用户控件放在一个页面中,并将其包装在updatepanel中,如下所示:

            <asp:UpdatePanel ChildrenAsTriggers="true" ID="UpdatePanelFoo" runat="server" UpdateMode="Conditional">
                <ContentTemplate>
                    <grid:tablegrid ID="tablegrid_chapters" runat="server" SomeProperty="bar" />
                </ContentTemplate>
            </asp:UpdatePanel>

输出“EnablePartialRendering:true”

确保页面中的
ScriptManager
上有
EnablePartialRendering=true

更新 看起来您的UserControl没有要查找的事件…这里有2个选项。将
UpdatePanel
移动到UserControl.ascx中,以便它可以将按钮事件作为子项来查看,或者添加一个事件供其查看,为此,请尝试以下操作:

    public event EventHandler Click;

    void btn_del_Click(object sender, EventArgs e)
    {
        if (NumberOfRowControls > 0)
        {
            var rowToWhack = panel_rows.Controls.Children().Single(x => x.ID == "myrow" + (NumberOfRowControls - 1));
            panel_rows.Controls.Remove(rowToWhack);
            NumberOfRowControls--;
        }
        if(Click != null) Click(this, e);
    }

    void btn_add_Click(object sender, EventArgs e)
    {
        var row = NewRow(NumberOfRowControls);
        panel_rows.Controls.Add(row);
        if(Click != null) Click(this, e);
    }
并更新UpdatePanel以查找它:

<asp:UpdatePanel ID="UpdatePanelFoo" runat="server" UpdateMode="Conditional">
  <ContentTemplate>
     <grid:tablegrid ID="tablegrid_chapters" runat="server" SomeProperty="bar" />
  </ContentTemplate>
  <Triggers>
    <asp:AsyncPostBackTrigger ControlID="tablegrid_chapters" EventName="Click">
  </Triggers>
</asp:UpdatePanel>


请确保在页面中添加ScriptManager,否则就没有UpdatePanel功能。

您可以发布将控件添加到占位符的代码,并说明您单击的哪个控件会导致完全回发吗?这里有点长:-有一个占位符和两个按钮,按下任一按钮都会导致一个完整的postbacktw,上面我的示例中的“SomeProperty”是pastebin中的“UserControlPath”code@mgroves:您可以将aspx标记添加到其中吗?还有,你点击的是什么内容提供了完整的回发,
btn_add
?我已经更新了下面的答案,希望这对你有用…如果没有,请在@reply或answer评论中告诉我,取得进展。现在它工作了,一次。我再次单击,发现一个javascript错误。@mgroves:太好了……如果您遇到另一个问题,请继续发表评论我会的——您帮了大忙,我希望我能给您更多的分数。没有ScriptManager将导致一个未描述的错误。
<asp:UpdatePanel ID="UpdatePanelFoo" runat="server" UpdateMode="Conditional">
  <ContentTemplate>
     <grid:tablegrid ID="tablegrid_chapters" runat="server" SomeProperty="bar" />
  </ContentTemplate>
  <Triggers>
    <asp:AsyncPostBackTrigger ControlID="tablegrid_chapters" EventName="Click">
  </Triggers>
</asp:UpdatePanel>