javascript - 使用 javascript 更改窗口调整大小时的方向 Devexpress MenuBar 控件

标签 javascript asp.net devexpress

我有一个带有多个子菜单的 Devexpress MenuBar 控件。我想使用 Javascript 动态更改菜单栏方向。到目前为止我尝试的是:

<script type="text/javascript">
     window.onresize = function () {
        if (window.innerWidth <= 1100) {
                RASPxMenuViewSetting.SetOrientation('Vertical');   
                                       }
                                    }
</script>

我的菜单代码在哪里:

<dx:ASPxMenu ID="ASPxMenuViewSetting" runat="server" EnableTheming="True" ClientInstanceName="RASPxMenuViewSetting">
    <Items>//contains Submenus  </Items>
</dx:ASPxMenu>

我在调试时遇到错误

Uncaught TypeError: RASPxMenuViewSetting.SetOrientation is not a function

您能帮忙解决一下吗?

最佳答案

我从 Devexpress 团队得到了如下答案,这对我有用:

Javascript

 <script type="text/javascript">
        function OnControlsInitialized(s, e) {
            ASPxClientUtils.AttachEventToElement(window, "resize", function (evt) {
                if (cp.InCallback())
                    return;
                if (window.innerWidth <= 1100) {
                    if (RASPxMenuViewSetting.cpOrientation != "Vertical")
                        cp.PerformCallback("Vertical");
                }
                else
                    if (RASPxMenuViewSetting.cpOrientation != "Horizontal")
                        cp.PerformCallback("Horizontal");
            });
        }
    </script>

ASPX 文件

<dx:ASPxCallbackPanel ID="ASPxCallbackPanel1" runat="server" Width="200px" ClientInstanceName="cp" OnCallback="ASPxCallbackPanel1_Callback">
            <PanelCollection>
                <dx:PanelContent runat="server">
                    <dx:ASPxMenu ID="ASPxMenuViewSetting" runat="server" ClientInstanceName="RASPxMenuViewSetting" EnableTheming="True" ItemWrap="false">
                        <Items>
                            <dx:MenuItem Text="Item 1">
                            </dx:MenuItem>
                            <dx:MenuItem Text="Item 2">
                            </dx:MenuItem>
                            <dx:MenuItem Text="Item 3">
                            </dx:MenuItem>
                            <dx:MenuItem Text="Item 4">
                            </dx:MenuItem>
                        </Items>
                    </dx:ASPxMenu>
                </dx:PanelContent>
            </PanelCollection>
        </dx:ASPxCallbackPanel>
        <dx:ASPxGlobalEvents ID="ASPxGlobalEvents1" runat="server">
            <ClientSideEvents ControlsInitialized="OnControlsInitialized" />
        </dx:ASPxGlobalEvents>

还需要更改cs文件如下:

protected void ASPxCallbackPanel1_Callback(object sender, DevExpress.Web.CallbackEventArgsBase e)
    {
        if (e.Parameter == "Vertical")
            ASPxMenuViewSetting.Orientation = Orientation.Vertical;
        else
            ASPxMenuViewSetting.Orientation = Orientation.Horizontal;

        ASPxMenuViewSetting.JSProperties["cpOrientation"] = e.Parameter;
    }

关于javascript - 使用 javascript 更改窗口调整大小时的方向 Devexpress MenuBar 控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29739793/

相关文章:

c# - 如何在 ASP.NET Web API 内存测试中添加客户端证书?

c# - 绑定(bind)时 JSON 属性区分大小写

c# - 在 UpdatePanel 中使用 GridView

c# - GridView 中货币符号左对齐和值右对齐

c# - 字符串中字符的限制

delphi - 如何用鼠标调整cxgrid的大小?

javascript - 使用 margin-top 时平滑滚动到页面顶部

javascript - 无法在 Express + Passport 应用程序/身份验证测试中发布

javascript - 如何使用 JavaScript 访问智能手机的 GPS 服务启用或禁用?

php - 它没有显示所有图像