Dec 19, 2013, 11:10 AM
[CLOSED] Exception because Control names don't use idmode when rendering UserControlLoader controls from UserControlRenderer
Test43.aspx
<%@ Page Language="C#" EnableViewState="false" ClassName="Test43" %>
<%@ Import Namespace="SceneCalendar.Web" %>
<%@ Register Assembly="Ext.Net" Namespace="Ext.Net" TagPrefix="ext" %>
<script runat="server">
protected void Page_Load(object sender, EventArgs e) {
}
protected void CreateTest( object sender, DirectEventArgs e ) {
var cfg = new UserControlRendererConfig() {
UserControlPath = "Test43a.ascx",
UserControlId = "uc1",
UserControlClientIDMode = System.Web.UI.ClientIDMode.Predictable,
Mode = RenderMode.AddTo,
Items = false,
Element = RP.ClientID
};
UserControlRenderer.Render( cfg );
}
</script>
<!DOCTYPE html>
<html>
<head id="Head1" runat="server">
<title>Test43 Sample</title>
</head>
<body>
<form id="Form1" runat="server">
<ext:ResourceManager ID="ResourceManager1" runat="server" ScriptMode="Development" SourceFormatting="true" />
<ext:Viewport ID="vp" runat="server" Layout="HBoxLayout">
<Items>
<ext:Container ID="LP" runat="server" Border="true" Padding="5" Flex="1" Layout="FitLayout">
<Items>
<ext:Button runat="server" Text="Test Right Panel Load">
<DirectEvents>
<Click OnEvent="CreateTest" />
</DirectEvents>
</ext:Button>
<ext:Hidden ID="ucLoaded" runat="server" Text="0" />
</Items>
</ext:Container>
<ext:Container ID="RP" runat="server" Flex="1" Layout="VBoxLayout">
<Items>
<ext:TextField ID="test" runat="server" />
</Items>
</ext:Container>
</Items>
</ext:Viewport>
</form>
</body>
</html>
Test43a.ascx<%@ Control Language="C#" ClassName="Test43a" %>
<%@ Import Namespace="SceneCalendar.Web" %>
<script runat="server">
protected void Page_Load( object sender, EventArgs e ) {
Cont.Items.Add( new UserControlLoader() { Path = "Test43b.ascx", IDMode = IDMode.Predictable, ID = "lpuc", UserControlClientIDMode = System.Web.UI.ClientIDMode.Predictable } );
}
</script>
<ext:Container ID="Cont" runat="server" Flex="1">
<Items>
<ext:Label ID="Label1" runat="server" Html="Inner" />
</Items>
</ext:Container>
Test43b.ascx<%@ Control Language="C#" ClassName="Test43b" %>
<script runat="server">
protected void Page_Load( object sender, EventArgs e ) {
Button1.Text = ClientID.ToString();
}
</script>
<ext:Label ID="Label2" runat="server" Html="Label2" />
<ext:DatePicker ID="Dates" runat="server" />
<ext:Button ID="Button1" runat="server" Text="" />
Response after clicking Test buttonExt.net.append(Ext.getBody(),["<div id=\"uc1_ct_Content\" class=\"x-hidden\"><div id=\"App.uc1_Cont_Container\"></div>","</div>"].join(''));Ext.net.ResourceMgr.destroyCmp("App.__Page_uc1_ct");Ext.create("Ext.container.Container",{id:"uc1_Cont",renderTo:"App.uc1_Cont_Container",flex:1,items:[{id:"uc1_Label1",html:"Inner",xtype:"netlabel"},{id:"id836f3eebdb3450a3_Label2",html:"Label2",xtype:"netlabel"},{id:"id836f3eebdb3450a3_Dates",xtype:"datepicker",format:"n/j/Y",longDayFormat:"l, F d, Y"},{id:"id836f3eebdb3450a3_Button1",xtype:"button",text:"uc1_ctl02"}]});App.RP.add({id:"__Page_uc1_ct",xtype:"container",contentEl:"uc1_ct_Content"});App.ctl02_Button1.setText("uc1_ctl02");
Note 2 issues: 1. ids for Test43b children do not match idmode requested in UserControlLoader
2. redundant setText is back in this case.
Last edited by Daniil; Dec 24, 2013 at 8:31 AM.
Reason: [CLOSED]