0
我正在從ascx控件觸發事件以更新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" />
定製控件的代碼背後
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);
}
後面的代碼標記
你說標籤中的asp.net-ajax,但名稱空間似乎是Rad Controls。這是什麼? – Hogan 2010-10-06 02:06:38
這兩者 - 我正在努力解決其中的一些問題,這可能是問題的一部分。 – Matt 2010-10-06 04:35:23