分析AJAX DataSet与DBControl数据感应机制<o:p></o:p>
实现原理<o:p></o:p>
通过注册数据感应对象列表,在DataSet发生相应事件时,通知所有注册的数据感应对象,数据感应对象在得到通知时,根据通知的消息号与数据,进行相关执行比如刷新显示等。
消息号<o:p></o:p>
modify:12
open:0
refresh:5
close:7
move record:3
append:1
delete:2
firedatachange:6
post:13
cancel:9
apply:8
fieldvalue firechange:4
notify lookup dataset:11
程序分析<o:p></o:p>
以DBEdit为例,首先DBEdit设置属性DataSet或SetDataSet,将调用LinkObj将DBEdit注册到数据感应对象列表,这个列表实际是一个数组,在DataSet发生相关事件时,将调用Notify通知数据感应对象列表中的所有对象,而所有的数据感应对象都有一个接口实现HandleMessage,用于在DataSet中调用,看一下Notify的实现就清楚了:
DataSet.prototype.Notify=function(act,recno,p){var os=this.linkobjs;if(!os||this.AutoControl==false)return;for(var j=0;j<os.length;j++)if(os[j].HandleMessage)os[j].HandleMessage(this,act,recno,p);}
|
然后看看DBEdit的HandleMessage做了些什么,见下面实现,无非是刷新显示数据,呵呵,就这么简单。
function DC_handlemessage(sender,msg,recno)
{
if(msg!=6&&msg!=12)
this.Refresh();
}
function DC_refresh()
{
var v,f;
if(this.DataSet.Active){
f=this.DataSet.Fields.Field[this.DataField];
if(!f)jcl_err(this.Name+'.DataField:'+this.DataField+Err_NoField);
if(f){
this.readOnly=f.ReadOnly;
v=f.GetValue();
if(v==null)v='';this.value=v;
if(this.Type=='span')this.innerHTML=v;//DBLabel
if(this.Type=='checkbox'){
if(this.CheckedValue == v){
this.checked=true;
this.defaultChecked=true;
}
else{
this.checked=false;
}
}
}
}
else{
this.value='';
if(this.Type=='span')this.innerHTML='';//DBLabel
}
}
|
<o:p> </o:p>
<o:p> </o:p>
<o:p> </o:p>
<o:p> </o:p>
<o:p> </o:p>
<o:p> </o:p>
分享到:
- 2006-12-27 14:38
- 浏览 1672
- 评论(0)
- 论坛回复 / 浏览 (0 / 2347)
- 查看更多
相关推荐
twitter数据流数据(数据集dataset).ziptwitter数据流数据(数据集dataset).ziptwitter数据流数据(数据集dataset).ziptwitter数据流数据(数据集dataset).ziptwitter数据流数据(数据集dataset).ziptwitter...
`DataSet`可以理解为一个轻量级的数据库,它不依赖于任何特定的数据库系统,允许你在应用程序中进行数据的查询、更新和分析。本篇文章将深入探讨如何在C#高级编程中使用`DataSet`来显示和操作数据。 `DataSet`主要...
3. 在Ajax的`success`回调中,解析返回的Dataset,并将数据填充到下拉框中。 这个过程不仅提高了用户体验,还降低了服务器与客户端之间的通信成本,因为只有在用户输入时才会发起请求,而不是一次性加载所有数据。
《悉尼城市物体数据集——深度学习与计算机视觉的宝贵资源》 悉尼城市物体数据集(Sydney Urban Objects Dataset)是一个广泛应用于计算机视觉和深度学习领域的重要数据资源。它包含了丰富的图像信息,专为识别和...
3. **数据更改跟踪**: `DataSet`具有内置的更改跟踪机制,可以记录每行自上次同步以来的更改。这包括`DataRowState`枚举,如`Added`、`Modified`和`Deleted`,这些状态在调用`Update`时用于指导`DataAdapter`执行...
在 Windows 程序中,DataSet 可以看作是数据库的一个本地对象,应用程序通过数据适配器与 DataSet 进行数据交换,然后 DataSet 本身在与数据库进行数据操作。创建 DataSet 可以通过右击项目名称,然后选择【添加】→...
在 .NET 中,Dataset 是一个内存中的数据库表示,可以处理多表数据,并支持添加、删除、修改记录以及与数据库的交互。在 Delphi 中,虽然没有直接的 Dataset 对应物,但可以通过 TClientDataSet 或 TDBDataSet 类来...
《深度学习视角下的人体分割数据集——Segmentation Full Body MADS Dataset详解》 在计算机视觉领域,人体分割是一项至关重要的任务,它涉及到图像处理、模式识别和机器学习等多个子领域。Segmentation Full Body ...
【RSOD-Dataset遥感图像数据集】是一个专门针对遥感图像分析与处理的重要资源,它为研究者和开发者提供了大量的遥感图像样本,用于开展目标检测、分类、变化检测等任务。遥感图像是一种从地球上空通过卫星或航空器...
将数据从DataSet写入XML文件,将数据从DataSet写入XML文件,将数据从DataSet写入XML文件,将数据从DataSet写入XML文件。
动物数据集Animal Dataset。 猫狗熊猫图像分类数据集。每类数据集包含猫、狗和熊猫各1000张图片,总共3000张图片。
总的来说,这个"dataset2_dataset2_mysql数据_"提供了丰富的学习资源,涵盖了MySQL的基本操作和数据分析,对于理解和掌握数据库管理和数据处理有着重要的价值。通过实际操作这些CSV文件,学生可以更深入地了解SQL...
逻辑回归、感知机、深度神经网络、支持向量机等模型训练数据。
本主题将深入探讨如何在Silverlight应用中连接数据库并使用DataSet来填充数据,不依赖于WCF或WebService服务。 首先,让我们了解DataSet。DataSet是.NET框架中的一个对象,它在内存中存储数据,并提供了类似数据库...
将`DataSet`与XML进行相互转换,可以方便地在两者之间传递数据,增强程序的灵活性和兼容性。 一、DataSet简介 `DataSet`是ADO.NET的核心组件之一,它是一个内存中的数据集合,可以包含一个或多个`DataTable`,每个`...
"通过 BindingSource 实现 DataSet、DataGridView 和 TextBox 的数据同步更新" BindingSource 是 .NET Framework 中的一个数据绑定组件,能够将数据源和数据目标对象连接起来,以实现数据的同步更新。在实际开发中...
《Synthetic_Chinese_String_Dataset:中文识别数据集详解》 在计算机视觉和自然语言处理领域,数据集是训练和评估模型的关键要素。Synthetic_Chinese_String_Dataset 是一个专门针对中文字符识别的大型数据集,它...
标题 "DataSetConverter4D 演示程序源代码" 提供了一个关键的线索,即这是一个与数据集转换相关的开源项目,特别关注如何将数据集(DataSet)转换为JSON格式。描述进一步确认了这一点,提到了"Format_JSON"函数的源...
包括:数据文件“superstore_dataset2011-2015.csv”和基于Jupyter notebook环境的文件“python数据分析实战之超市零售分析.ipynb”,学习时,将两个文件拷贝到同一文件夹下,按住键盘shift键,在空白处点鼠标右键,...