0

我想开始使用 Ext.Net 桌面(我将它用作其他应用程序的“普通页面”)。

我想知道从数据库数据初始化桌面的最佳方法。我的实际做法是: 1. 从没有任何模块的“最小”桌面页面(开始菜单 ecc...)开始;2.从数据库中读取数据(基于相同的参数)并创建动态模块(我认为使用DesktopModuleProxy)带有用户控件(例如,我将用户控件的路径/标题/等保存在数据库中);3.创建用户控件并在桌面渲染

我从这个例子开始:http ://examples.ext.net/#/Desktop/Introduction/Overview/

方法 AddNewModule() 仅在有提交时才有效(例如使用启动器),但它不适用于 Page_Load 事件,并且我有这个 javascript 错误:

"Cannot read property 'length' of undefined" in ext.axd:93

也许我使用了错误的生命周期页面?

最后也许我使用网络表单而不是用户控件,但我有同样的情况,我必须使用用户控件......

谢谢!

.aspx 文件

<ext:Desktop ID="Desktop1" runat="server">            
        <StartMenu Title="Ext.Net Desktop" Icon="Application" Height="300">
            <ToolConfig>
                <ext:Toolbar ID="Toolbar1" runat="server" Width="100">
                    <Items>
                        <ext:Button ID="Button1" runat="server" Text="Settings" Icon="Cog" />
                        <ext:Button ID="Button2" runat="server" Text="Logout" Icon="Key">
                            <DirectEvents>
                                <Click OnEvent="Logout_Click">
                                    <EventMask ShowMask="true" Msg="Ciao..." MinDelay="1000" />
                                </Click>
                            </DirectEvents>
                        </ext:Button>
                    </Items>
                </ext:Toolbar>
            </ToolConfig>
        </StartMenu>

        <TaskBar TrayWidth="100">
            <QuickStart>
                <ext:Toolbar ID="Toolbar2" runat="server">
                    <Items>
                        <ext:Button ID="Button3" runat="server" Handler="tile" Icon="ApplicationTileVertical">
                            <QTipCfg Text="Tile windows" />
                        </ext:Button>

                        <ext:Button ID="Button4" runat="server" Handler="cascade" Icon="ApplicationCascade">
                            <QTipCfg Text="Cascade windows" />
                        </ext:Button>
                    </Items>
                </ext:Toolbar>
            </QuickStart>

            <Tray>
                <ext:Toolbar ID="Toolbar3" runat="server">
                    <Items>
                        <ext:ToolbarFill ID="ToolbarFill1" runat="server" />
                    </Items>
                </ext:Toolbar>
            </Tray>
        </TaskBar>
        <DirectEvents>
            <Ready OnEvent="loadTest"></Ready>

        </DirectEvents>

    </ext:Desktop>

.cs 文件

    [DirectMethod]
    public void loadTest(object sender, DirectEventArgs e)
    {
            DesktopModuleProxy control =     Ext.Net.Utilities.ControlUtils.FindControl<Ext.Net.DesktopModuleProxy>    (this.LoadControl("/user/default.ascx"));
            control.RegisterModule();
    }

chrome 出错:未捕获 TypeError:无法读取未定义 Default.aspx 的属性“app”:31 未捕获 TypeError:无法读取未定义 ext.axd 的属性“长度”:93

这是我各种测试的“最后一个版本”。如果我通过按钮调用相同的方法“loadTest”(如原始示例)它可以工作。用户控件只有 1 个带有日期时间的标签。

谢谢!

4

1 回答 1

0

您可以在服务器上将 Ext.onReady 和 ext:ResourcePlaceHolder 与 DirectMethod 一起使用,如下所示:

<ext:ResourcePlaceHolder runat="server" Mode="Script" />
<script type="text/javascript">
    Ext.onReady(function () {
        App.direct.YourDirectMethod();
    });
</script>
于 2016-11-07T05:26:38.643 回答