FineUI 官方论坛
标题:
btMenu 的动态增加问题
[打印本页]
作者:
bluer
时间:
2013-7-4 08:46
标题:
btMenu 的动态增加问题
问题:
为什么运行结果,一定要先选择一下第一个菜单项,再选后面的(第二或是第三项 才有效),才会执行那个 dept_CheckedChanged 呢?
例如点了第二项,再点第三项,就没有效果了。奇怪。
前台代码:
<x
ageManager ID="
ageManager1" runat="server" AutoSizePanelID="
anen1" />
<x
abel ID="lbl1" runat="server" Label="Label" Text="Label"></x
abel>
<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";
}
作者:
bluer
时间:
2013-7-4 09:01
发现问题,创建控件的代码放到 Page_Init 就可以了。
这是什么原因?
作者:
Lisa
时间:
2013-7-4 11:46
动态创建控件的代码就是要放在Page_Init中的,这样页面每次加载都会执行,而且是最先执行。三石老大还有一篇教程专门讲这个的。
我看的似懂非懂,对内部更深的机制还不是很了解。
作者:
亮亮胖胖
时间:
2013-7-7 12:14
还是Page的生命周期没有搞懂啊
欢迎光临 FineUI 官方论坛 (https://fineui.com/bbs/)
Powered by Discuz! X3.4