ObjectDataSource.ObjectCreating 事件
ObjectCreating 事件在创建由 TypeName 属性标识的对象之前发生。
命名空间:System.Web.UI.WebControls
程序集:System.Web(在 system.web.dll 中)
语法
// 摘要:
// 在创建由 System.Web.UI.WebControls.ObjectDataSource.TypeName 属性标识的对象之前发生。
[WebCategory("Data")]
[WebSysDescription("ObjectDataSource_ObjectCreating")]
public event ObjectDataSourceObjectEventHandler ObjectCreating;
备注
如果被标识以执行数据操作的方法为 static(Visual Basic 中为 Shared),则永远不会引发 ObjectCreating 和 ObjectCreated 事件。
ObjectDataSource 控件自动调用业务对象的默认构造函数,以使用反射创建该对象的实例。处理 ObjectCreating 事件,
显式调用另一个构造函数,并将结果对象的实例设置为关联 ObjectDataSourceEventArgs 对象的 ObjectInstance 属性。
示例
本节包含两个代码示例。第一个代码示例演示如何将 ObjectDataSource 对象与业务对象和 GridView 控件一起使用来显示信息。
第二个代码示例提供在第一个代码示例中使用的中间层业务对象。
下面的代码示例演示如何将 ObjectDataSource 控件与业务对象和 GridView 控件配合使用来显示信息。
对于网页执行的每个数据操作,您使用的可能是在时间和资源方面需要很大开销才能创建的业务对象。
使用高开销对象的一种方法是:创建一次对象的实例,然后将其缓存起来用于后续操作,
而不是在每次数据操作时就要创建一次对象的实例然后再销毁。
注意
在生产应用程序中,多个请求最后可能会同时使用同一实例。因此,对象需要在线程安全方式中实现。
此代码示例演示了这种模式。您可以处理 ObjectCreating 事件,首先在缓存中检查对象,
然后,仅当尚未缓存对象的实例时才创建实例。然后处理 ObjectDisposing 事件,缓存业务对象供将来使用,
而不是将其销毁。在此代码示例中,将 ObjectDataSourceDisposingEventArgs 对象的 CancelEventArgs.Cancel 属性设置为 true,
以指示 ObjectDataSource 不要调用对象的 Dispose 方法。
<%@ Import namespace="Samples.AspNet.CS" %>
<%@ Page language="c#" %>
<Script runat="server"> // Instead of creating and destroying the business object each time, the
// business object is cached in the ASP.NET Cache.
private void GetEmployeeLogic(object sender, ObjectDataSourceEventArgs e)
{
// First check to see if an instance of this object already exists in the Cache.
EmployeeLogic cachedLogic; cachedLogic = Cache["ExpensiveEmployeeLogicObject"] as EmployeeLogic; if (null == cachedLogic) {
cachedLogic = new EmployeeLogic();
} e.ObjectInstance = cachedLogic;
} private void ReturnEmployeeLogic(object sender, ObjectDataSourceDisposingEventArgs e)
{
// Get the instance of the business object that the ObjectDataSource is working with.
EmployeeLogic cachedLogic = e.ObjectInstance as EmployeeLogic; // Test to determine whether the object already exists in the cache.
EmployeeLogic temp = Cache["ExpensiveEmployeeLogicObject"] as EmployeeLogic; if (null == temp) {
// If it does not yet exist in the Cache, add it.
Cache.Insert("ExpensiveEmployeeLogicObject", cachedLogic);
} // Cancel the event, so that the object will
// not be Disposed if it implements IDisposable.
e.Cancel = true;
}
</Script> <html>
<head>
<title>ObjectDataSource - C# Example</title>
</head>
<body>
<form id="Form1" method="post" runat="server"> <asp:gridview
id="GridView1"
runat="server"
datasourceid="ObjectDataSource1">
</asp:gridview> <asp:objectdatasource
id="ObjectDataSource1"
runat="server"
selectmethod="GetCreateTime"
typename="Samples.AspNet.CS.EmployeeLogic"
onobjectcreating="GetEmployeeLogic"
onobjectdisposing="ReturnEmployeeLogic" >
</asp:objectdatasource> </form>
</body>
</html>
下面的代码示例提供了前一代码示例所使用的中间层业务对象的示例。此代码示例由 EmployeeLogic 类定义的基本业务对象组成,
该类是封装业务逻辑的有状态类。要获得完整的可运行示例,必须将此代码编译为库,然后从 ASP.NET 页(.aspx 文件)中使用这些类。
namespace Samples.AspNet.CS { using System;
using System.Collections;
using System.Web.UI;
using System.Web.UI.WebControls;
//
// EmployeeLogic is a stateless business object that encapsulates
// the operations you can perform on a NorthwindEmployee object.
//
public class EmployeeLogic { public EmployeeLogic () : this(DateTime.Now) {
} public EmployeeLogic (DateTime creationTime) {
_creationTime = creationTime;
} private DateTime _creationTime; // Returns a collection of NorthwindEmployee objects.
public ICollection GetCreateTime () {
ArrayList al = new ArrayList(); // Returns creation time for this example.
al.Add("The business object that you are using was created at " + _creationTime); return al;
}
}
}
ObjectDataSource.ObjectCreating 事件的更多相关文章
- JNI详解---从不懂到理解
转载:https://blog.csdn.net/hui12581/article/details/44832651 Chap1:JNI完全手册... 3 Chap2:JNI-百度百科... 11 C ...
- atitit.组件化事件化的编程模型--服务端控件(1)---------服务端控件与标签的关系
atitit.组件化事件化的编程模型--服务端控件(1)---------服务端控件与标签的关系 1. 服务器控件是可被服务器理解的标签.有三种类型的服务器控件: 1 1.1. HTML 服务器控件 ...
- atitit.基于组件的事件为基础的编程模型--服务器端控件(1)---------服务器端控件和标签之间的关系
atitit.基于组件的事件为基础的编程模型--服务器端控件(1)---------服务器端控件和标签之间的关系 1. server控件是要server了解了标签.种类型的server控件: 1 1. ...
- 使用 ObjectDataSource 缓存数据
简介 就计算机科学而言 , 缓存 过程包括成本昂贵的数据或信息的获取 , 以及将备份存储在可快速访问的位置.对于数据驱动的应用程序,大型.复杂的查询通常会消耗大量应用程序执行时间.要提升这类应用程序的 ...
- Jquery的点击事件,三句代码完成全选事件
先来看一下Js和Jquery的点击事件 举两个简单的例子 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN&q ...
- 关于 Chrome 浏览器中 onresize 事件的 Bug
我在写插件时用到了 onresize 事件,在反复地测试后发现该事件在 Chrome 及 Opera(内核基本与 Chrome 相同,以下统称 Chrome)浏览器打开时就会执行,这种情况也许不能算作 ...
- MVVM设计模式和WPF中的实现(四)事件绑定
MVVM设计模式和在WPF中的实现(四) 事件绑定 系列目录: MVVM模式解析和在WPF中的实现(一)MVVM模式简介 MVVM模式解析和在WPF中的实现(二)数据绑定 MVVM模式解析和在WPF中 ...
- C++中的事件分发
本文意在展现一个C++实现的通用事件分发系统,能够灵活的处理各种事件.对于事件处理函数的注册,希望既能注册到普通函数,注册到事件处理类,也能注册到任意类的成员函数.这样在游戏客户端的逻辑处理中,可以非 ...
- 移动端IOS点击事件失效解决方案
解决方案 解决办法有 4 种可供选择: 1 将 click 事件直接绑定到目标元素(即 .target)上 2 将目标元素换成 <a> 或者 button 等可点击的元素 3 将 clic ...
随机推荐
- git 笔记总结
一 创建版本库 (1) $ mkdir learngit $ cd learngit $ pwd /Users/michael/learngit (2) git init 二 提交文件 git sta ...
- 运维DNS原理配置
Linux DNS原理简介及配置 DNS简介 DNS原理 域名解析的过程 资源记录 DNS BIND安装配置 一.简介 一般来讲域名比IP地址更加的有含义.也更容易记住,所以通常用户更习惯输入域名来访 ...
- django admin站点美化
使用django-simpleui 安装 pip install django-simpleui 源码地址 https://github.com/newpanjing/simpleui django ...
- 使用Servlet实现验证码
没有验证码带来的问题 对特定用户不断登录破解密码. 对某个网站创建账户. 对某个网站提交垃圾数据. 对某个网站刷票. 通过验证码由用户肉眼识别其中的验证码信息,从而区分用户是人还是计算机. 定义: ...
- GDAL栅格矢量化
在这里主要提供直接能用的栅格矢量化代码,这个函数中路径输入为QStrng,如果是其他类型的,请直接转成const char *: bool Polygonize(const QString& ...
- MATLAB中产生高斯白噪声的两个函数
MATLAB中产生高斯白噪声非常方便,可以直接应用两个函数,一个是WGN,另一个是AWGN.WGN用于产生高斯白噪声,AWGN则用于在某一信号中加入高斯白噪声.1.WGN:产生高斯白噪声 y = wg ...
- svn 介绍及linux下常用操作命令
1.概念 truck(主干|主线|主分支):是用来做主方向开发的,新功能的开发应放在主线中,当模块开发完成后,需要修改,就用branch. branch(分支):分支开发和主线开发是可以同时进行的,也 ...
- 转载:利用php数组函数进行函数式编程
因为一个BUG, 我在一个摇摇欲坠,几乎碰一下就会散架的项目中某一个角落中发现下面这样一段代码 这段程序与那个BUG有密切的关系. 我来回反复的捉摸这段代码, 发现这段代码实现了两个功能 第一个是在一 ...
- 【洛谷P2647】最大收益
题目大意 现在你面前有n个物品,编号分别为1,2,3,--,n.你可以在这当中任意选择任意多个物品.其中第i个物品有两个属性Wi和Ri,当你选择了第i个物品后,你就可以获得Wi的收益:但是,你选择该物 ...
- 【洛谷P1490】买蛋糕
题目大意:给定一个正整数 N,求至少从 [1,N] 中选出多少个数能够表示出 [1,N] 中的所有整数,每个数只能被选 1 次,并求出对于最优解有多少种不同的选择方案. 题解:好题. 仅考虑用最少的不 ...