Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/296.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
C# 从ascx控件触发事件以更新容器中的某些控件_C#_Events_Asp.net Ajax_Page Lifecycle - Fatal编程技术网

C# 从ascx控件触发事件以更新容器中的某些控件

C# 从ascx控件触发事件以更新容器中的某些控件,c#,events,asp.net-ajax,page-lifecycle,C#,Events,Asp.net Ajax,Page Lifecycle,我正在从ascx控件触发一个事件,以便更新ascx控件所属容器中的一些控件 ascx控件通过模式弹出扩展器显示。单击ascx内的按钮时,触发包含ascx控件的容器订阅的事件 事件委托被激发,预期的逻辑在容器的代码隐藏中运行,问题是,尽管事件逻辑已被处理,但对容器内部的控件所做的任何更改都不会更新。呈现回发结果时,预期的更改不会反映在页面上 有什么我应该知道的陷阱吗 容器的标记 <asp:Panel ID="panelTreeViewAttributesTitle" runat="serve

我正在从ascx控件触发一个事件,以便更新ascx控件所属容器中的一些控件

ascx控件通过模式弹出扩展器显示。单击ascx内的按钮时,触发包含ascx控件的容器订阅的事件

事件委托被激发,预期的逻辑在容器的代码隐藏中运行,问题是,尽管事件逻辑已被处理,但对容器内部的控件所做的任何更改都不会更新。呈现回发结果时,预期的更改不会反映在页面上

有什么我应该知道的陷阱吗

容器的标记

<asp:Panel ID="panelTreeViewAttributesTitle" runat="server">
<asp:Label ID="someLabel" runat="server" Text="Hello Governor" />
<asp:LinkButton ID="LinkButtonEdit" runat="server" Text="(Edit)" />
<ajax:ModalPopupExtender BackgroundCssClass="modalBackground" Enabled="True" 
     ID="btnEdit_ModalPopupExtender" PopupControlID="modalPanel" runat="server"
     TargetControlID="LinkButtonEdit" />
</asp:Panel>
<asp:Panel ID="modalPanel" runat="server" CssClass="modalPopUp" Style="display: none">
    <xxx:customControl runat="server" ID="myCustomControl" />
</asp:Panel>
protected void Page_Load(object sender, EventArgs e)
{
myCustomControl.Updated += eventCaptured;
if (IsPostBack) return;
...
}

void eventCaptured(object sender, EventArgs e)
{
someLabel.Text = "Goodbye Governor";
}
自定义控件

<script type="text/javascript">
function Update() {
    var ajaxManager = $find("<%= RadAjaxManager.GetCurrent(Page).ClientID %>");
    if (ajaxManager != null)
    ajaxManager.ajaxRequest("");
    }
</script>
<asp:Panel ID="panelEditPanel" runat="server">
    <asp:Label ID="lblCMA" runat="server" Text="Call me Arnooold." />
</asp:Panel>
<asp:Button ID="btnUpdate" runat="server" Text="Update" OnClientClick="Update()" />
<asp:Button ID="btnCancel" runat="server" Text="Cancel" />

可能是点击按钮导致部分回发,而不是正常的整页回发。如果是这种情况,整个生命周期将在服务器端运行,包括事件处理程序,但当响应返回到浏览器时,客户端只更新部分HTML。someLabel可能在客户端更新的区域之外。

您在标记中说的是asp.net-ajax,但名称空间似乎是Rad控件。是哪一个?两者都有-我正在努力解决其中一些问题,这可能是问题的一部分。
public event EventHandler Updated;

protected void AjaxManager_AjaxRequest(object sender, AjaxRequestEventArgs e)
{
    //Some DB backend logic
    UpdateFinished();
}

private void UpdateFinished()
{
    if (Updated == null) return;
    Updated(this, null);
}