关于动态加载用户控件的问题

问题描述

现在有一用户控件里面显示的是产品列表,里面含有一个分页控件,,product.aspx来动态调用的时候,可以显示产品列表出来,protectedvoidButton2_Click(objectsender,EventArgse){Control_Productcon=(Control_Product)Page.LoadControl("../Control/Product.ascx");con.show();//这个是绑定DataListpl.Controls.Add(con);}出问题的地方是,当点击用户控件中的分页控件的时候这个用户控件就消失掉了,点击别的按钮,用户控件也会卸载掉

解决方案

解决方案二:
点按钮时..页面会先Page_load
解决方案三:
设个断点试一下就知道了.
解决方案四:
动态加载控件需要在protectedvoidPage_Init(){//LoadloginmoduleloginUserControl=this.LoadControl(loginPage)asUserControl;this.LoginPlaceHolder.Controls.Add(loginUserControl);}或者page_load(){}每次都需要加载,并不想平时理解的加载一次,控件就一直会加载。用户控件加载分为动态和静态两种动态加载就是向你用代码加载某个路径下额用户控件。静态加载就是直接把用户控件拖拽到需要的页面。你这个问题倒是可以用viewstate或者session记录加载过的用户控件,然后每次在page_init()或者page_load事件当中重新加载,但是实际意义不大,不可能你的整个项目都这样去做,当然你要是想实现动态加载可以在后台把相应的用户控件和页面记录。每次执行page_init事件就循环数据库进行加载。
解决方案五:
分页控件还是做成自定义控件好点.也就是上面说的静态加载方式.
解决方案六:
页面逻辑应该这样:protectedvoidButton2_Click(objectsender,EventArgse){ShowProduct=true;}privateboolRefreshFlag=true;privateboolShowProduct{get{if(ViewState["product"]==null)returnfalse;elsereturn(bool)ViewState["product"];}set{ViewState["product"]=value;RefreshFlag=true}}privatevoidLoadControls(boolwriteDatas){PlaceHolder1.Controls.Clear();if(ShowProduct){Control_Productcon=(Control_Product)Page.LoadControl("../Control/Product.ascx");con.ID="Product";pl.Controls.Add(con);con.show();//绑定DataList。如果writeDatas==false,那么并不需要填后台数据,仅需要创建子控件。}RefreshFlag=false;}protectedvoidPage_Load(objectsender,EventArgse){LoadControls(false);}protectedvoidPage_PreRender(objectsender,EventArgse){if(RefreshFlag)LoadControls(true);}
解决方案七:
PlaceHolder1.Controls.Clear();改为:pl.Controls.Clear();这行非常必要。
解决方案八:
你只要记住一点首先“asp.net页面的动态子控件是需要创建两遍的”,这才开始去了解动态页面编程的机理。从asp.net页面“生命周期”模型开始学习asp.net!第一遍调用LoadControls的目的是让asp.net通过LoadPostData来“回填postdata”以及“准备触发xxxChanged事件。”
解决方案九:
学习...
解决方案十:
不错,学习中。

时间: 2024-10-02 23:56:35

关于动态加载用户控件的问题的相关文章

动态加载用户控件的组件!

动态|加载|控件 我们写用户控件的目的就是放到页面中去.根据不同的条件,我们可以改变加载的用户控件! 其实原理就是MasterPage的原理.这个MasterPage会在vs2005中提供,但是现在也可以实现. 在我的项目中就用到: MasterPage就四个类,其中容器就动态加载用户控件.这种功能在vs2005中将无处不在. 下面简单介绍一下动态加载叶面组件: 我们只需要改变用户组件的地址就可以动态改变加载的用户组件了. 在程序中动态改变SkinPath就可以了. 组件源码如下: using

动态加载用户控件的组件

动态|加载|控件 动态加载用户控件的组件!(终结MasterPages技术) 让我们来做个页面模版吧!有了模版是不是就可以统一了呢!Sure ! 比如:模版页Template.ascx中我们留出中间一个部分,或者你想要留出的一个空间,让以后放入你想要的内容. 好了!那么在我们的页面index.aspx上我们就可以引用这个Template.ascx,然后在空出的部分放入我们特别的东西,当然最好是在空的地方我们插入另外一个页面如:List.ascx, 当然我们在做个页面MyArchive.aspx.

动态加载用户控件的组件!(三)

动态|加载|控件 上一篇文章写到动态加载用户控件的简单应用 页面是用来浏览信息的!但是更重要的是和用户交互,根据不同的需求提供不同的内容服务,这是一种服务或是一种更贴近用户的人性化.(又在胡言乱语了!^_^) 动态加载叶面,根据不同的用户权限加载不懂的内容服务.根据用户的相应加载相应的内容服务. 还有另外一个应用就是做到页面与代码的分离.在vs2003里,一般ascx或aspx文件,在刚建立的时候都直接跟一个cs文件关联.那么我们在写程序的时候就不能分开来做.作叶面和写后台代码的不能分开.为了能

另类的动态加载用户控件

在BS架构这块,我们平时建一个网站,通常是创建一个WebSite网站,或者是创建一个WebApplication.然后在WEB项目里面建立相应的aspx文件,以及用户控件,自定义控件等等.但是做为一个新加入此项目的你要去修改里面的 某一个功能模板,那么我一般的程序是这样的: 第一:根据新的需求,在项目找到相关页面,例如对应的页面URL为index.aspx.此时可以对原页面做最初的了解. 第二:分析代码. 第三:根据新的需求来修改代码. 我想这也是一般朋友的思维模式吧.可是这样的流程并不是统一不

WPF MVVM模式动态加载用户控件的问题

问题描述 有这样一个场景,主窗体(MainWwindow)上有4个Button,点击每个Button都会加载一个UserControl(关闭正在打开的)每个UserControl绑定了自己的ViewModel那么MainWindow的ViewModel里,用什么方式加载UserControl?最好是不要在MainWwindow.cs里写代码: 解决方案 解决方案二:写一个方法根据点击不同的button返回不同的UserControl.解决方案三:引用楼主qq_25876223的回复: 有这样一个

动态加载用户控件至DataList并为用户控件赋值实例演示_实用技巧

为了实现这个演示,Insus.NET使用通用的新闻例子,它类别(目录)以及文章.在一个页面,显示所有类别,每个目录下显示最新几条新闻. 效果如下: 目录是用DataList控件显示,而文章标题列表是一个用户控件显示,这个用户控件将动态被加入至DataList. 复制代码 代码如下: View Code <asp:Repeater ID="Repeater1" runat="server" OnItemDataBound="Repeater1_Item

asp.net动态加载用户控件,关于后台添加、修改的思考_实用技巧

看下下面这个典型的后台(比较粗糙):说实在,我很厌倦全部用.aspx文件去做,比如"友情连接"这个模块,就有"添加友情连接""修改友情连接""友情连接列表",简单的话,可以把"添加""修改"合成一个文件.每次都去建立一个.aspx文件.我现在的想法是用"用户控件+配置文件"去实现,虽然文件数目可能不会少很多.但在编程到一定地步,我想大家会有跟我一样的想法. 首先需要涉

ASP.NET动态加载用户控件的实现方法_实用技巧

第一步:例如用户控件放在MyList.Ascx,然后其Control指令是: 复制代码 代码如下: <%@ Control Language="C#" AutoEventWireup="true" CodeFile="ViewComment.ascx.cs" Inherits="Control_ViewComment"%> 这时候已经有了Inherits,自带了ClassName就是其名称,如果没有,则必须创建Cl

动态加载用户控件的组件!(二)

动态|加载|控件 上一篇文章写到了动态加载用户组件的组件. 但是怎样灵活的在项目中运用呢?怎样做到面向组件的开发呢?就像是积木式开发,我们的叶面可以有不同的组件来完成,而整个叶面就是一个容器,我们只不过是往容器里添加不同的元素而已,因此只要我们的元素能够做到通用,一般化,那么元素积累到了一定的程度,元素足够的丰富就可以经而一举构造出我们想要得叶面. 更多地运用到下一篇文章再详细到来.下面我们先来看看怎么样加载组合我们的用户组件: 1.让我们来先做两个元素,这里我就把用户组件ascx的文件称之为元

简单的动态加载用户控件的方法

动态|加载|控件 (控件的类) 名称=(控件的类)this.LoadControl("......ascx")如这是用户控件的代码 public abstract class bdleft : System.Web.UI.UserControl    {        public System.Web.UI.WebControls.Repeater Repeater1;         private void Page_Load(object sender, System.Even