FineUI 官方论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

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

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

搜索
查看: 1483|回复: 3
打印 上一主题 下一主题

btMenu 的动态增加问题

[复制链接]
跳转到指定楼层
楼主
发表于 2013-7-4 08:46:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
问题:
为什么运行结果,一定要先选择一下第一个菜单项,再选后面的(第二或是第三项 才有效),才会执行那个 dept_CheckedChanged  呢?
例如点了第二项,再点第三项,就没有效果了。奇怪。

前台代码:
<xageManager ID="ageManager1" runat="server" AutoSizePanelID="anen1" />
            <xabel ID="lbl1" runat="server" Label="Label" Text="Label"></xabel>
            <x:Toolbar ID="Toolbar1" runat="server">
                <Items>
                    <x:Button EnablePostBack="false" ID="btDept" Text="选择区域..." runat="server">
                        <Menu ID="Menu1" runat="server">
                            <x:MenuCheckBox Text="baidu.com" ID="MenuCheckBox1" AutoPostBack="true"
                                Checked="true" runat="server" GroupName="deptName">
                            </x:MenuCheckBox>
                        </Menu>
                    </x:Button>
                </Items>
            </x:Toolbar>


后台代码:
protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            string sql = "select top 2 id,deptName from sysDept where id in(34,35,36,37,38,59,45) ";
            DataSet ds = SqlHelper.Query(sql);
            FineUI.Menu m = btDept.FindControl("Menu1") as FineUI.Menu;
            foreach (DataRow dr in ds.Tables[0].Rows)
            {
                FineUI.MenuCheckBox mc = new FineUI.MenuCheckBox();
                mc.ID = "mm" + dr[0].ToString();
                mc.Text = dr[1].ToString().Trim();
                mc.GroupName = "deptName";
                mc.AutoPostBack = true;
                mc.CheckedChanged += new EventHandler(dept_CheckedChanged);
                //             mc.Checked = true;
                m.Items.Add(mc);
            }
        }
    }
    protected void dept_CheckedChanged(object sender, EventArgs e)
    {
        lbl1.Text = lbl1.Text + "u";
    }
沙发
 楼主| 发表于 2013-7-4 09:01:03 | 只看该作者
发现问题,创建控件的代码放到 Page_Init  就可以了。
这是什么原因?
板凳
发表于 2013-7-4 11:46:40 | 只看该作者
动态创建控件的代码就是要放在Page_Init中的,这样页面每次加载都会执行,而且是最先执行。三石老大还有一篇教程专门讲这个的。
我看的似懂非懂,对内部更深的机制还不是很了解。
地板
发表于 2013-7-7 12:14:13 | 只看该作者
还是Page的生命周期没有搞懂啊
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-9-28 02:11 , Processed in 0.044720 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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