FineUI 官方论坛

标题: 动态添加控件,不可以通过点击"按钮"的方式添加吗? [打印本页]

作者: Lisa    时间: 2013-6-5 12:02
标题: 动态添加控件,不可以通过点击"按钮"的方式添加吗?
看了FineUI的示例和教程,提到的动态添加控件都是通过Page_Init方法或者Page_Load方法添加的,不可以在按钮的点击事件中添加吗?
因为添加的控件是跟数据相关的,数据量很多的时候,不可能在PageInit中全部加载。想知道真正的动态分布创建控件怎么实现?

作者: djn    时间: 2013-6-5 21:12
这个问题我也想知道答案
作者: Lisa    时间: 2013-6-7 09:58
我现在的解决办法是通过IFrame来实现的。
点击“按钮”打开一个IFrame,并传递一个参数,在子页面的PageInit函数获取这个参数,然后动态创建不同的控件。能满足一般的应用,对于很多控件都需要动态创建的时候,使用太多的IFrame感觉也不太好。
期待更好的解决办法。
作者: 猪八戒    时间: 2013-6-9 01:36
Lisa 发表于 2013-6-7 09:58
我现在的解决办法是通过IFrame来实现的。
点击“按钮”打开一个IFrame,并传递一个参数,在子页面的PageIni ...

能把实例代码贴出来看看吗?我也想知道!
作者: Lisa    时间: 2013-6-9 15:57
代码
假设主页面是test.aspx,Body部分
  1. <body>
  2.     <x:PageManager ID="PageManager1" runat="server" AutoSizePanelID="RegionPanel1" />
  3.     <form id="form1" runat="server">
  4.         <x:RegionPanel ID="RegionPanel1" ShowBorder="false" runat="server">
  5.             <Regions>
  6.                 <x:Region ID="Region2" Split="true" Width="200px" Margins="0 0 0 0" ShowHeader="false"
  7.                     Title="目录" EnableCollapse="true" Layout="Fit" Position="Left" runat="server">
  8.                     <Items>
  9.                         <x:Accordion ID="Accordion1" runat="server" ShowBorder="false" ShowHeader="false" ShowCollapseTool="true">
  10.                             <Panes>
  11.                                 <x:AccordionPane ID="AccordionPane1" runat="server" Title="面板一" BodyPadding="2px 5px"
  12.                                     Layout="Fit" ShowBorder="false">
  13.                                     <Items>
  14.                                         <x:Tree runat="server" EnableArrows="true" ShowBorder="false" ShowHeader="false"
  15.                                             AutoScroll="true" ID="treeMenu">
  16.                                             <Nodes>
  17.                                                 <x:TreeNode Text="创建TextBox" Expanded="true" NavigateUrl="test5.aspx?Type=TextBox" Target="main">
  18.                                                 </x:TreeNode>
  19.                                                 <x:TreeNode Text="创建Button" Expanded="true" NavigateUrl="test5.aspx?Type=Button" Target="main">
  20.                                                 </x:TreeNode>
  21.                                             </Nodes>
  22.                                         </x:Tree>
  23.                                     </Items>
  24.                                 </x:AccordionPane>
  25.                             </Panes>
  26.                         </x:Accordion>
  27.                     </Items>
  28.                 </x:Region>
  29.                 <x:Region ID="Region3" ShowHeader="false" EnableIFrame="true" IFrameUrl="index.aspx"
  30.                     IFrameName="main" Margins="0 0 0 0" Position="Center" runat="server">
  31.                 </x:Region>
  32.             </Regions>
  33.         </x:RegionPanel>
  34.     </form>
  35. </body>
复制代码
test5.aspx
  1. <body>
  2.     <x:PageManager ID="PageManager1" runat="server" AutoSizePanelID="Panel1" />
  3.     <form id="form1" runat="server">
  4.         <x:Panel ID="Panel1" runat="server" BodyPadding="5px" ShowBorder="true" ShowHeader="true" Title="Panel">
  5.             <Items></Items>
  6.         </x:Panel>
  7.     </form>
  8. </body>
复制代码
test5.aspx.cs
  1.         protected void Page_Init(object sender, EventArgs e)
  2.         {
  3.             switch (Request.QueryString["Type"].ToString())
  4.             {
  5.                 case "TextBox":
  6.                     FineUI.TextBox tb = new FineUI.TextBox();
  7.                     Panel1.Items.Add(tb);
  8.                     break;
  9.                 case "Button":
  10.                     FineUI.Button bt = new FineUI.Button();
  11.                     Panel1.Items.Add(bt);
  12.                     bt.Text = "Button";
  13.                     break;
  14.             }
  15.         }
复制代码

作者: Lisa    时间: 2013-6-9 15:59
猪八戒 发表于 2013-6-9 01:36
能把实例代码贴出来看看吗?我也想知道!

代码已贴。
我的点击事件是TreeNode的,TreeNode有NavigateUrl属性,所以才可以打开Iframe页面。其他类型的Button不知道可不可以




欢迎光临 FineUI 官方论坛 (https://fineui.com/BBS/) Powered by Discuz! X3.4