How to load dynamic user controls on desktop shortcut?

  1. #1

    How to load dynamic user controls on desktop shortcut?

    There are a lot of user controls (.ascx) in my App so including all of them to desktop as https://examples2.ext.net/#/Desktop/...tion/Overview/ mentioned is too low.
    I have Desktop.aspx:
    <%@ Register Src="modules/UserWin.ascx" TagPrefix="mod" TagName="UserWin" %>
    <mod:UserWin runat="server" id="UserWinCtrl"/>

    UserWin.ascx:
    <%@ Control Language="C#" AutoEventWireup="true" CodeFile="UserWin.ascx.cs" Inherits="modules_UserWin" %>
    <%@ Register Assembly="Ext.Net" Namespace="Ext.Net" TagPrefix="ext" %>
    <ext:DesktopModuleProxy ID="DesktopModuleProxy1" runat="server">
    <Module ModuleID="grid-win">
    <Shortcut Name="Users" IconCls="x-im-shortcut" SortIndex="1">
    </Shortcut>
    <Launcher Text="Users" Icon="User" />
    <Window>
    <ext:Window runat="server" ID="userWin" Icon="User" Width="740" Height="480" AnimCollapse="false"
    ConstrainHeader="true" Layout="BorderLayout" Title="Manage User">
    <DirectEvents>
    <BeforeShow OnEvent="OnLoad" />
    </DirectEvents>
    <TopBar>
    <ext:Toolbar ID="toolbarUserWin" runat="server">
    <Items>
    <ext:TriggerField ID="txtUserSearch" runat="server" Width="200">
    <Triggers>
    <ext:FieldTrigger Icon="Clear" Qtip="" />
    <ext:FieldTrigger Icon="Search" />
    </Triggers>
    <Listeners>
    <TriggerClick Handler="BCCVDA.UserWin.BindData(index);" />
    </Listeners>
    <%-- <TriggerClick Handler="Ext.Msg.alert('Message', 'TriggerIndex: ' + index + '<br /><br />Text: ' + this.getValue());" />--%>
    <%-- <DirectEvents>
    <TriggerClick OnEvent="BindData"></TriggerClick>

    </DirectEvents>--%>
    </ext:TriggerField>
    <ext:ToolbarSeparator ID="ToolbarSeparator3" runat="server" />
    <ext:Button ID="btnAdd" runat="server" Text="Add" Icon="Add" ToolTip="Add a new user">
    </ext:Button>
    <ext:ToolbarSeparator ID="ToolbarSeparator1" runat="server" />
    <ext:Button ID="Button2" runat="server" Text="Options" Icon="Plugin">
    </ext:Button>
    <ext:ToolbarSeparator ID="ToolbarSeparator2" runat="server" />
    <ext:Button ID="Button3" runat="server" Text="Remove Something" ToolTip="Remove the selected item"
    Icon="Decline">
    <QTipCfg Text="Remove the selected user" />
    </ext:Button>
    </Items>
    </ext:Toolbar>
    </TopBar>
    <Items>
    <ext:GridPanel ID="gridUser" runat="server" Title="User List" Width="700" Height="310"
    Region="Center">
    <Store>
    <ext:Store ID="Store1" runat="server" OnReadData="OnReadData" PageSize="10" RemoteSort="true">
    <AutoLoadParams>
    <ext:Parameter Name="start" Value="0" Mode="Raw" />
    <ext:Parameter Name="limit" Value="10" Mode="Raw" />
    </AutoLoadParams>
    <Proxy>
    <ext:PageProxy />
    </Proxy>
    <Model>
    <ext:Model ID="Model1" runat="server" IDProperty="UserId">
    <Fields>
    <ext:ModelField Name="FullName" />
    <ext:ModelField Name="UserName" />
    <ext:ModelField Name="UserId" Type="Int" />
    <ext:ModelField Name="Email" />
    </Fields>
    </ext:Model>
    </Model>
    </ext:Store>
    </Store>
    <ColumnModel ID="ColumnModel1" runat="server">
    <Columns>
    <ext:Column ID="Column1" runat="server" Text="Full Name" DataIndex="FullName" Width="250" />
    <ext:Column ID="Column2" runat="server" Text="User Name" DataIndex="UserName" />
    <ext:Column ID="Column3" runat="server" Text="User Id" DataIndex="UserId" />
    <ext:Column ID="Column4" runat="server" Text="Email" DataIndex="Email" Width="200" />
    <%-- <ext:Column ID="Column2" runat="server" Text="Price" Width="75" DataIndex="price">
    <Renderer Format="UsMoney" />
    </ext:Column>
    <ext:Column ID="Column3" runat="server" Text="Change" Width="75" DataIndex="change">
    <Renderer Fn="change" />
    </ext:Column>
    <ext:Column ID="Column4" runat="server" Text="Change" Width="75" DataIndex="pctChange">
    <Renderer Fn="pctChange" />
    </ext:Column>
    <ext:DateColumn ID="DateColumn1" runat="server" Text="Last Updated" Width="85" DataIndex="lastChange"
    Format="H:mm:ss" />--%>
    </Columns>
    </ColumnModel>
    <Features>
    <ext:GridFilters ID="GridFilters1" runat="server">
    <Filters>
    <ext:StringFilter DataIndex="FullName" />
    <ext:StringFilter DataIndex="UserName" />
    <ext:NumericFilter DataIndex="UserId" />
    <ext:StringFilter DataIndex="Email" />
    </Filters>
    </ext:GridFilters>
    </Features>
    <SelectionModel>
    <ext:RowSelectionModel ID="RowSelectionModel1" runat="server" Mode="Single">
    <DirectEvents>
    <Select OnEvent="RowSelect">
    <EventMask ShowMask="true" Target="CustomTarget" CustomTarget="#{formUser}" />
    <ExtraParams>
    <%--or can use params[2].id as value--%>
    <ext:Parameter Name="UserId" Value="record.getId()" Mode="Raw" />
    </ExtraParams>
    </Select>
    </DirectEvents>
    </ext:RowSelectionModel>
    </SelectionModel>
    <View>
    <ext:GridView ID="GridView1" runat="server" StripeRows="true">
    </ext:GridView>
    </View>
    <BottomBar>
    <ext:PagingToolbar ID="PagingToolbar1" runat="server">
    <Items>
    <ext:Label ID="Label1" runat="server" Text="Page size:" />
    <ext:ToolbarSpacer ID="ToolbarSpacer1" runat="server" Width="10" />
    <ext:ComboBox ID="cboPageSize" runat="server" Width="80">
    <Items>
    <ext:ListItem Text="10" />
    <ext:ListItem Text="20" />
    <ext:ListItem Text="50" />
    <ext:ListItem Text="100" />
    <ext:ListItem Text="200" />
    <ext:ListItem Text="500" />
    </Items>
    <SelectedItems>
    <ext:ListItem Value="10" />
    </SelectedItems>
    <Listeners>
    <Select Handler="#{gridUser}.store.pageSize = parseInt(this.getValue(), 10); #{gridUser}.store.load();" />
    </Listeners>
    </ext:ComboBox>
    </Items>
    <Plugins>
    <ext:ProgressBarPager ID="ProgressBarPager1" runat="server" />
    </Plugins>
    </ext:PagingToolbar>
    </BottomBar>
    </ext:GridPanel>
    <ext:FormPanel ID="formUser" runat="server" Region="East" Split="true" Layout="columnLayout"
    Title="User Details" Width="600" Icon="User" Collapsible="true" DefaultAnchor="100%">
    <Items>
    <ext:TabPanel ID="TabPanel1" runat="server" ColumnWidth="1" Border="false" ActiveTabIndex="0"
    BodyStyle="padding:5px;">
    <Items>
    <ext:Panel ID="Panel1" runat="server" Title="General Info" Border="false" ActiveIndex="0"
    ColumnWidth="1" Layout="ColumnLayout" DefaultBorder="false" DefaultPadding="0">
    <Items>
    <ext:Panel ID="Panel2" runat="server" Border="false" Header="false" ColumnWidth="0.5"
    Layout="Form" LabelAlign="Top">
    <Defaults>
    <ext:Parameter Name="AllowBlank" Value="false" Mode="Raw" />
    <ext:Parameter Name="MsgTarget" Value="side" />
    </Defaults>
    <Items>
    <ext:TextField ID="txtUserId" runat="server" FieldLabel="User Id" ReadOnly="true" />
    <ext:TextField ID="txtFirstName" runat="server" FieldLabel="First Name" />
    <ext:TextField ID="txtFullName" runat="server" FieldLabel="Full Name" />
    <ext:TextField ID="txtEmail" runat="server" FieldLabel="Email" />
    <ext:TextField ID="txtWorkPhone" runat="server" FieldLabel="WorkPhone" />
    <ext:TextField ID="txtHomePhone" runat="server" FieldLabel="HomePhone" />
    </Items>
    </ext:Panel>
    <ext:Panel ID="Panel3" runat="server" Border="false" Layout="Form" ColumnWidth="0.5"
    LabelAlign="Top">
    <Defaults>
    <ext:Parameter Name="AllowBlank" Value="false" Mode="Raw" />
    <ext:Parameter Name="MsgTarget" Value="side" />
    </Defaults>
    <Items>
    <ext:TextField ID="txtUserName" runat="server" FieldLabel="User Name" />
    <ext:TextField ID="txtLastName" runat="server" FieldLabel="Last Name" />
    <ext:TextField ID="txtAddress" runat="server" FieldLabel="Address" />
    </Items>
    </ext:Panel>
    </Items>
    </ext:Panel>
    <ext:Panel ID="Panel4" runat="server" Title="Description" Border="false" ColumnWidth="1"
    Layout="ColumnLayout" DefaultBorder="false" DefaultPadding="0">
    <Items>
    <ext:Panel ID="Panel5" runat="server" Border="false" Header="false" ColumnWidth="0.5"
    Layout="Form" LabelAlign="Top">
    <Defaults>
    <ext:Parameter Name="AllowBlank" Value="false" Mode="Raw" />
    <ext:Parameter Name="MsgTarget" Value="side" />
    </Defaults>
    <Items>
    <ext:TextField ID="TextFieldww1" runat="server" FieldLabel="First Name" />
    <ext:TextField ID="TextFieldww2" runat="server" FieldLabel="Company" />
    </Items>
    </ext:Panel>
    </Items>
    </ext:Panel>
    </Items>
    </ext:TabPanel>
    </Items>
    <Buttons>
    <ext:Button ID="Button4" runat="server" Text="Save" Icon="Disk">
    <Listeners>
    <Click Handler="if (#{formUser}.getForm().isValid()) {Ext.Msg.alert('Submit', 'Saved!');}else{Ext.Msg.show({icon: Ext.MessageBox.ERROR, msg: 'FormPanel is incorrect', buttons:Ext.Msg.OK});}" />
    </Listeners>
    </ext:Button>
    </Buttons>
    </ext:FormPanel>
    </Items>
    </ext:Window>
    </Window>
    </Module>
    </ext:DesktopModuleProxy>

    ...............................


    When launch Desktop.aspx then UserWin.ascx will be loaded, too. How can I prevent this? I just want to load UserWin.ascx in a window when clicking on shortcut.

    Thanks.
  2. #2
    The sample is mentioned by you (https://examples2.ext.net/#/Desktop/...tion/Overview/) demosntrates dynamic loading from user control also
    Please review that sample again
  3. #3
    Thanks Vladimir,

    I reviewed it and try to replace existing sample (TabWindow.ascx) to mine (UserWin.ascx):
    public void AddNewModule()
    {
    Desktop.GetInstance().RemoveModule("add-module");
    var control = Ext.Net.Utilities.ControlUtils.FindControl<Ext.Net .DesktopModuleProxy>(this.LoadControl("modules/UserWin.ascx"));
    control.RegisterModule();

    }

    Try to click Render Dynamic module, i had my UserWin shortcut. Click on it and receive 2 errors:
    1. The control with ID 'userWin' not found.
    2. The control with ID 'Store1' not found.
    Please UserWin.ascx in previous post to see its content. How to fix these errors?

    Moreover, instead clicking Render Dynamic module shortcut to render my module, I tried to render my shortcut at page load but it doesn't work:
    Desktop.aspx:
    protected void Page_Load(object sender, EventArgs e)
    {
    if (!X.IsAjaxRequest)
    {
    // this.BindData();
    Desktop.GetInstance().RemoveModule("add-module");
    var control = Ext.Net.Utilities.ControlUtils.FindControl<Ext.Net .DesktopModuleProxy>(this.LoadControl("modules/UserWin.ascx"));
    control.RegisterModule();
    }

    }

    Please give me your idea.

    Thanks.
  4. #4
    I have the same error and the same question. Could someone answer, please ?
  5. #5
    can any help us ?

Similar Threads

  1. Replies: 1
    Last Post: Jul 20, 2012, 8:08 AM
  2. Replies: 5
    Last Post: Jan 19, 2011, 3:17 PM
  3. [CLOSED] Dynamic load user controls in Opera
    By Timur.Akhmerov in forum 1.x Legacy Premium Help
    Replies: 6
    Last Post: May 06, 2010, 2:49 AM
  4. [CLOSED] Dynamic loading of user controls [1.0]
    By SFritsche in forum 1.x Legacy Premium Help
    Replies: 5
    Last Post: Feb 11, 2010, 6:08 AM
  5. How to dynamically load user controls?
    By zikr in forum 1.x Help
    Replies: 0
    Last Post: Jan 23, 2009, 9:35 PM

Posting Permissions