在Init发生的时候,没有任何动态装载控件,仅仅装入了设计器上“写死”的控件。并且没有任何状态ViewState值,没有任何客户端post值。Init仅仅是说明那些写死的控件已经装载。例如页面上设计有DataGrid,在Init的时候DataGrid控件已经存在但是没有任何Item也没有任何正确的PageSize等属性值。例如页面上设计有TextBox,在Init的时候虽然已经存在Init,但是没有那些基于动态ViewState的属性,更没有客户端最新的Text值。
在Load发生的时候,对于那些动态状态的控件,上述一切已经齐备。对于动态装载的控件,如果是写在CreateChildControls方法中的,也已经齐备。对于那些喜欢写在load中动态装载的控件,则只有状态会立即填入,而客户端post值必须等Load结束之后才能填入。
很难说为什么有这样的设计。我估计本来的设计是应该在CreateChildControls方法中创建子控件,在Load中是在所有控件初始化完成准备触发业务逻辑事件之前给客户程序一个通知。而很多人把动态控件滚利偏要写在Load中,最后只好将错就错,考虑将Load中动态装载的控件在Load结束之后再额外处理一次。
而很多人把动态控件滚利偏要写在Load中 --> 而很多人把动态控件创建偏要写在Load中
由界面触发业务逻辑的部分,要在控件的事件中完成,例如在xxxx_Changed、xxxx_click或者xxxx_Selected事件中完成,而不要在Load中完成。asp.net在Load事件通知已经装载完成之后,实际还要进行一个增量的动态控件的最后装载(post值)的动作(但是对于一般人的程序往往在Load之前已经完成了90%的装入动作了),之后又用LoadComplete来再次通知装入完成,与java、delphi中那些类似的号称干净、高级的框架相比,明显有为了市场因素而故意放慢速度多做一些兼容性处理的意思。
添加代码以动态创建 文本框 控件。该控件被创建的每次运行页时。若要执行此操作最好是 WebForm1 类提供在 OnInit 函数中。
override protected void OnInit(EventArgs e)
{
// Create dynamic controls here.
// Use "using System.Web.UI.WebControls;"
TextBox1 = new TextBox();
TextBox1.ID = "TextBox1";
TextBox1.Style["Position"] = "Absolute";
TextBox1.Style["Top"] = "25px";
TextBox1.Style["Left"] = "100px";
Form1.Controls.Add(TextBox1);
TextBox2 = new TextBox();
TextBox2.ID = "TextBox2";
TextBox2.Style["Position"] = "Absolute";
TextBox2.Style["Top"] = "60px";
TextBox2.Style["Left"] = "100px";
Form1.Controls.Add(TextBox2);
this.TextBox1.TextChanged += new System.EventHandler(this.TextBox_TextChanged);
this.TextBox2.TextChanged += new System.EventHandler(this.TextBox_TextChanged);
//
// CODEGEN: This call is required by the ASP.NET Web Form Designer.
//
InitializeComponent();
base.OnInit(e);
}
- 请注意此函数的这两个动态创建 TextBox 控件处理 TextChanged 事件。默认状态下,AutoPostBack 为 false,文本框 控件。因此,更改文本在控件中的不会导致回发到服务器。但是,当 提交 按钮单击以将窗体发送到服务器、 触发的 TextChanged 事件,为 文本框 控件和该函数调用。
分享到:
相关推荐
举个例子,如果想在应用程序中创建两个窗口,可以定义两个Frame类的子类MyFrame和MyFrame2,然后在MyApp类的OnInit方法中分别创建这两个类的实例。通过调用self.SetTopWindow(self.myframe)可以设置程序中的主窗口,...
2. **`Base` 类**:定义了一个抽象基类 `Base`,其中包含了一个 `initialize` 方法,该方法会调用 `onInit` 方法,但 `Base` 类本身并未实现 `onInit` 方法。 3. **具体实现类**: - `SubClassA` 和 `SubClassB` 都...
例如,`init()` 方法在初始化过程中调用了 `onInit()`,这是一个抽象方法,由子类来实现具体的行为。这是模板方法模式的关键点,即定义不变的算法流程,同时允许子类在需要的地方插入自定义逻辑。同样,`core()` ...
本篇将重点讨论在ASP 2.0下如何使用模板页以及重写Page类,这两个概念是构建动态网页的关键组成部分。 首先,我们来探讨模板页(Template Pages),也称为母版页(Master Pages)。模板页是ASP.NET 2.0引入的一个...
ASP.NET 事件模型详解 ...我们讨论了 ASP.NET 事件模型的生命周期、OnInit 和 OnLoad 方法的使用,以及 JavaScript 事件模型的三个阶段。希望本文能够帮助读者更好地理解 ASP.NET 和 JavaScript 事件模型的概念。
上面的比方就像我的这个程序,拥有两个线程,一个负责进程的消息循环和 GUI的绘制;另一个负责从摄像头获取图像。分析一下就应该明白,第一个线程 比第二个线程所需要的空间肯定大很多,而且处理流程更加复杂。这两...
标题中的“EMA - 基于两个移动平均交叉的EA交易 - MetaTrader 4 EA.zip”揭示了这个压缩包文件包含一个MetaTrader 4交易平台的Expert Advisor(EA),也就是自动交易机器人,它基于指数移动平均线(EMA)的交叉策略...
这是一个危险的参数,仅能在刚安装完数据库时使用,以免造成数据丢失。 * oninit -p:不回收临时表,留在在线模式下。这将保留临时表,避免回收临时表对数据库的影响。 * oninit -s:初始化共享内存,留在静默模式下...
在给定的代码示例中,有两个关键的ASP.NET页面:`Main.aspx`和`Main_Execute.aspx`。 1. `Main.aspx`是入口页面,它负责判断是否已经有了静态页面以及生成和返回静态页面。在`OnInit`事件处理程序中,它首先解析URL...
在 Angular 中,父组件可以通过 @ViewChild 主动获取子组件的数据和方法。这种方式可以实现父组件主动获取子组件的数据或方法。例如,在父组件中可以使用以下代码: ```html <app-footer #footerChild></app-footer...
1. 初始化阶段:在这个阶段中,主要完成两项工作:一、初始化在传入 Web 请求生命周期内所需的设置;二、跟踪视图状态。开发人员可以重写 OnInit() 方法来提供初始化逻辑。 2. 加载视图状态阶段:在这个阶段中,...
2. `BeginProcessRequest`和`EndProcessRequest`:异步页面的关键在于这两个方法。`BeginProcessRequest`方法是异步操作的起点,它启动异步操作并返回一个`IAsyncResult`对象。`EndProcessRequest`方法则在异步操作...
"Puria 方法"是一种在外汇交易中广泛应用的策略,它主要依赖于技术分析来预测市场走势。MetaTrader 5(MT5)是一个流行的交易平台,专为金融市场的交易者设计,支持自动化交易,如使用Expert Advisor (EA)进行交易。...
本资源提供了一个名为"asp.net下拉日期控件源码"的解决方案,包含两个主要文件:DropDownCalendar.cs和calendarDemo。接下来,我们将深入探讨这个下拉日期控件的实现原理、使用方法以及可能涉及的相关技术。 首先,...
在安卓平台上,语音识别和文本朗读是两个重要的功能,它们极大地增强了用户的交互体验,尤其对于移动设备上的应用来说更是如此。在这个名为“安卓语音识别文本朗读相关-三个android语音识别例程mystt.rar”的压缩包...
解释:通常建议在onPause()中保存应用的状态,因为这是用户离开Activity前调用的最后一个方法,保证了数据的及时保存。 **题目7** 关于视图控件的常用事件描述中,不正确的是? 答案:a. Click事件只能使用在按钮上...
在这个类中,我们重写了 `OnInit` 方法,以便在页面初始化时执行某些操作。 在 `Page_Load` 事件中,我们调用了 `CreateCheckCodeImage` 方法,该方法将生成验证码图片,并将其显示在网页上。该方法将调用 `...
接下来,我们创建两个子类 `SubClassA` 和 `SubClassB`,它们都继承自 `base` 类,并提供了各自对 `oninit` 方法的实现: ```javascript function SubClassA() {} SubClassA.prototype = Object.extend( { ...
接下来,我们定义一个事件回调函数指针,以便在事件发生时调用该函数。 然后,我们使用 BEGIN_DECLARE_EVENT_TYPES() 宏声明事件类型: ```c BEGIN_DECLARE_EVENT_TYPES() DECLARE_EVENT_TABLE(wxStudyEvent, ...