FineUI 官方论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

本论坛已关闭(禁止注册、发帖和回复)
请移步 三石和他的朋友们

FineUI首页 WebForms - MVC & Core - JavaScript 常见问题 - QQ群 - 十周年征文活动

FineUI(开源版) 下载源代码 - 下载空项目 - 获取ExtJS - 文档 在线示例 - 版本更新 - 捐赠作者 - 教程

升级到 ASP.NET Core 3.1,快、快、快! 全新ASP.NET Core,比WebForms还简单! 欢迎加入【三石和他的朋友们】(基础版下载)

搜索
查看: 13950|回复: 14
打印 上一主题 下一主题

手风琴+树控件的问题

[复制链接]
跳转到指定楼层
楼主
发表于 2012-4-11 23:23:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我在后台绑定“手风琴+树控件”做菜单,但子节点不显示,请问这问题应该怎么解决??
前台代码:
<ext:Region ID="reLeft" runat="server" Position="Left" Split="true" EnableSplitTip="true"
                        CollapseMode="Mini" Margins="0 0 0 0" ShowHeader="true" ShowBorder="true" Width="200px"
                        Icon="outline" EnableCollapse="true" Title="菜单栏">
                        <Items>
                           
                        </Items>
                    </ext:Region>
                    <ext:Region ID="mainRegion" runat="server" Position="Center" Layout="fit" Margins="0 0 0 0"
                        ShowHeader="false" Title="">
                        <Items>
                            <ext:ContentPanel ID="ContentPanel2" runat="server" BodyPadding="5px" EnableBackgroundColor="false"
                                ShowBorder="true" ShowHeader="true" Title="">
                                <div id="divMainRight">
                    <asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">
                    </asp:ContentPlaceHolder>
                </div>
                            </ext:ContentPanel>
                        </Items>
                    </ext:Region>
                </Regions>
后台代码:
private void InitMenu(string userName)
    {
        ExtAspNet.Accordion accordion = new ExtAspNet.Accordion();
        reLeft.Items.Add(accordion);
        accordion.ShowBorder = false;
        accordion.ShowHeader = false;
        accordion.Panes.Clear();
        //根据登录用户名取出所对应的父节点
        IList<SysFun> parentSysFun = SysFunManager.GetParentNodeByUserName(userName);
        foreach (SysFun sfParent in parentSysFun)
        {
            ExtAspNet.AccordionPane pane = new ExtAspNet.AccordionPane();
            accordion.Panes.Add(pane);
            pane.AutoScroll = true;
            //第一层节点Id
            string nodeId = sfParent.FunId.ToString();
            //第一层节点显示的名称
            string displayName = sfParent.FunName;
            pane.Title = displayName;
            pane.ShowBorder = false;
            ExtAspNet.Tree tree = new ExtAspNet.Tree();
            pane.Items.Add(tree);
            tree.ShowBorder = false;
            tree.ShowHeader = false;
            tree.AutoScroll = false;
            tree.EnableArrows = true;
            
            //获取当前父节点的所有子节点
            IList<SysFun> childSysFun = SysFunManager.GetSysFunByUpFunIdAndUserName(int.Parse(nodeId), userName);
            foreach (SysFun sfChile in childSysFun)
            {
                //第二层要显示的节点Id
                string chileNodeId = sfChile.FunId.ToString();
                //第二层要显示的节点名称
                string chileName = sfChile.FunName;
                //将路径转换成客户端可用的URL
                string nodeURL = ResolveUrl(sfChile.Fun_URL);
                ExtAspNet.TreeNode node = new ExtAspNet.TreeNode();
                node.Target = "mainRegion";
                node.Leaf = true;
                node.NodeID = chileNodeId;
                node.Text = chileName;
                node.NavigateUrl = nodeURL;
                node.ToolTip = chileName;
                tree.Nodes.Add(node);
            }
        }
    }
首次加载时的效果:                                 



点击其他父节点后的效果

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
沙发
发表于 2012-4-12 09:23:22 | 只看该作者

foreach (SysFun sfChile in childSysFun)
{
     //....
}
//把这两句移至最下
pane.Items.Add(tree);
accordion.Panes.Add(pane);
板凳
 楼主| 发表于 2012-4-12 11:38:42 | 只看该作者
Landroid 发表于 2012-4-12 09:23
foreach (SysFun sfChile in childSysFun)
{
     //....

原来这样,可以了,非常感谢!!
地板
 楼主| 发表于 2012-4-12 15:22:50 | 只看该作者
yan 发表于 2012-4-12 11:38
原来这样,可以了,非常感谢!!

请问怎么做页面的无刷新效果??
5#
发表于 2012-4-12 15:37:04 | 只看该作者
yan 发表于 2012-4-12 15:22
请问怎么做页面的无刷新效果??

自己回复自己,我是收不到消息的哦~

你是说点树节点,然后添加tab标签么?
可以这样,在绑定node的时候,给树节点添加OnClientClick
类似于这样
node.OnClientClick = mainTabStrip.GetAddTabReference(tabid,url,title,icon,enableClose)
不要用node.NavigateUrl = nodeURL;
6#
 楼主| 发表于 2012-4-12 16:03:42 | 只看该作者
Landroid 发表于 2012-4-12 15:37
自己回复自己,我是收不到消息的哦~

你是说点树节点,然后添加tab标签么?

不是的,我没用TAB,我点左边的节点,相关的页在右边显示,在会刷新。
7#
发表于 2012-4-12 17:10:57 | 只看该作者
yan 发表于 2012-4-12 16:03
不是的,我没用TAB,我点左边的节点,相关的页在右边显示,在会刷新。

那是要怎么无刷新??你用的iframe?
8#
 楼主| 发表于 2012-4-12 18:16:53 | 只看该作者
Landroid 发表于 2012-4-12 17:10
那是要怎么无刷新??你用的iframe?

整个页面会刷一下,这是我的前台代码
<body>
    <form id="form1" runat="server">
    <div>
        <extageManager ID="ageManager1" runat="server" AutoSizePanelID="RegionPanel1" />
        <ext:RegionPanel ID="RegionPanel1" runat="server" ShowBorder="false">
            <Regions>
                <ext:Region ID="Region1" Margins="0 0 0 0" Height="62px" ShowBorder="false" ShowHeader="false"
                    Position="Top" Layout="Fit" runat="server">
                    <Toolbars>
                        <ext:Toolbar ID="Toolbar1" Position="Bottom" runat="server">
                            <Items>
                                <%--
                                <ext:Button ID="btnExpandAll" IconUrl="~/images/expand-all.gif" Text="展开全部" EnablePostBack="false"
                                    runat="server">
                                </ext:Button>
                                <ext:Button ID="btnCollapseAll" IconUrl="~/images/collapse-all.gif" Text="折叠全部" EnablePostBack="false"
                                    runat="server">
                                </ext:Button>--%>
                                <ext:ToolbarFill ID="ToolbarFill1" runat="server">
                                </ext:ToolbarFill>
                                <ext:ToolbarText ID="ToolbarText4" Text="欢迎您 " runat="server">
                                </ext:ToolbarText>
                                <ext:ToolbarText ID="tbtUserName" Text=" " runat="server">
                                </ext:ToolbarText>
                                <ext:Button ID="btnSourceCode" Text="修改密码" EnablePostBack="true" OnClick="UpdatePass_Click"
                                    runat="server" Type="Button">
                                </ext:Button>
                                <ext:ToolbarSeparator ID="ToolbarSeparator1" runat="server">
                                </ext:ToolbarSeparator>
                                <ext:Button ID="btnExit" Text="安全退出" EnablePostBack="true" runat="server" OnClick="Relogin_Click"
                                    Type="Submit">
                                </ext:Button>
                            </Items>
                        </ext:Toolbar>
                    </Toolbars>
                    <Items>
                        <ext:ContentPanel ShowBorder="false" ShowHeader="false" BodyStyle="background-color:#1C3E7E;"
                            ID="ContentPanel3" runat="server">
                            <div style="height:5px;"></div>
                        <div style="float:left; color:White;">
                            <aspabel ID="Label3" runat="server" Text="楼宇智能监控系统" Font-Bold="true" Font-Size="18px" ></aspabel>
                        </div>
                        </ext:ContentPanel>
                    </Items>
                </ext:Region>
                <%--<ext:Region ID="reTop" runat="server" Margins="0 0 0 0" Position="Top" ShowHeader="false"
                        ShowBorder="false" Layout="fit" Height="30px">
                        <Items>
                            <ext:ContentPanel ID="ContentPanel1" runat="server" BodyPadding="5px" EnableBackgroundColor="true"
                                ShowBorder="false" ShowHeader="false" BodyStyle="background-color:#1C3E7E;">
                            <div style="float:left; color:White;">
                            <aspabel ID="Label1" runat="server" Text="楼宇智能监控系统" Font-Bold="true" Font-Size="18px" ></aspabel>
                            </div>
                            <div style="float:right; color:White; font-size:13px;">
                             <aspabel ID="Label2" runat="server" Text="欢迎您"></aspabel>&nbsp;&nbsp;
                             <aspabel ID="lblUserName" runat="server"></aspabel>&nbsp;&nbsp;
                             <aspinkButton ID="lbUppwd" runat="server" CssClass="lb" OnClick="UpdatePass_Click">修改密码</aspinkButton>&nbsp;&nbsp;
                             <asp:LinkButton ID="lbExit" runat="server" CssClass="lb" OnClick="Relogin_Click">安全退出</asp:LinkButton>&nbsp;&nbsp;
                            </div>
                            </ext:ContentPanel>
                        </Items>
                    </ext:Region>--%>
                <ext:Region ID="reLeft" Split="true" EnableSplitTip="true" CollapseMode="Mini" Width="200px"
                    Margins="0 0 0 0" ShowHeader="true" Title="菜单栏" EnableLargeHeader="false" Icon="Outline"
                    EnableCollapse="true" Layout="Fit" Position="Left" runat="server">
                    <Items>
                    </Items>
                </ext:Region>
                <ext:Region ID="mainRegion" runat="server" Position="Center" Layout="fit" Margins="0 0 0 0"
                    ShowHeader="false" Title="">
                    <Items>
                        <ext:ContentPanel ID="ContentPanel2" runat="server" BodyPadding="5px" EnableBackgroundColor="false"
                            ShowBorder="true" ShowHeader="true" Title='<%#Eval("chileName") %>'>
                                <div id="divMainRight">
                    <asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">
                    </asp:ContentPlaceHolder>
                </div>
                        </ext:ContentPanel>
                    </Items>
                </ext:Region>
            </Regions>
        </ext:RegionPanel>
        <ext:Window ID="windowSourceCode" Title="修改密码" Hidden="true" EnableIFrame="true"
            runat="server" IsModal="false" Width="350px" EnableClose="true" EnableMaximize="true">
            <Items>
                <ext:SimpleForm ID="SimpleForm1" runat="server" ShowBorder="false" BodyPadding="10px"
                    LabelWidth="100px" EnableBackgroundColor="true" ShowHeader="false">
                    <Items>
                        <ext:TextBox ID="tbxPassword" Label="请输入原密码" TextMode="assword" Required="true"
                            runat="server">
                        </ext:TextBox>
                        <ext:TextBox ID="tbxNewPassword" Label="请输入新密码" TextMode="assword" Required="true"
                            runat="server">
                        </ext:TextBox>
                        <ext:TextBox ID="tbxSurePassWord" Label="确认密码" TextMode="assword" Required="true"
                            runat="server" CompareControl="tbxNewPassword" CompareMessage="两次密码输入不一致">
                        </ext:TextBox>
                        <ext:Button ID="btnLogin" Text="保存" Type="Submit" ValidateForms="SimpleForm1" ValidateTarget="Top"
                            runat="server" OnClick="btnModify_Click">
                        </ext:Button>
                    </Items>
                </ext:SimpleForm>
            </Items>
        </ext:Window>
    </div>
    </form>
</body>
9#
发表于 2012-4-12 18:25:38 | 只看该作者
本帖最后由 Landroid 于 2012-4-12 18:26 编辑
yan 发表于 2012-4-12 18:16
整个页面会刷一下,这是我的前台代码

   

你这个用到了母版页,无法实现Ajax,asp.net的母版页与内容页的执行顺序
(1)母版页中控件Init事件;
(2)内容页中Content控件Init事件;
(3)母版页Init事件;
(4)内容页Init事件;
(5)内容页Load事件;
(6)母版页Load事件;
(7)内容页中Content控件Load事件;
(8)内容页PreRender事件;
(9)母版页PreRender事件;
(10)母版页控件PreRender事件。
(11)内容页中Content控件PreRender事件。

每个内容页都会重新加载母版页一次,母版页的状态无法保持,所以目前这样,是不可能实现无刷新的
10#
 楼主| 发表于 2012-4-19 21:34:49 | 只看该作者
Landroid 发表于 2012-4-12 18:25
你这个用到了母版页,无法实现Ajax,asp.net的母版页与内容页的执行顺序
(1)母版页中控件Init事件;
(2 ...

如果不用母版页,那每个页面都得重写左边菜单的代码了
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|FineUI 官方论坛 ( 皖ICP备2021006167号-1 )

GMT+8, 2024-11-24 03:28 , Processed in 0.051948 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表