`
try1try
  • 浏览: 11259 次
  • 来自: ...
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

分析AJAX DataSet与DBControl数据感应机制

阅读更多

分析AJAX DataSetDBControl数据感应机制<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设置属性DataSetSetDataSet,将调用LinkObjDBEdit注册到数据感应对象列表,这个列表实际是一个数组,在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);}

       然后看看DBEditHandleMessage做了些什么,见下面实现,无非是刷新显示数据,呵呵,就这么简单。

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>

分享到:
评论

相关推荐

    twitter数据流数据(数据集dataset).zip

    twitter数据流数据(数据集dataset).ziptwitter数据流数据(数据集dataset).ziptwitter数据流数据(数据集dataset).ziptwitter数据流数据(数据集dataset).ziptwitter数据流数据(数据集dataset).ziptwitter...

    C#高级编程:显示DataSet类中的数据(图)

    `DataSet`可以理解为一个轻量级的数据库,它不依赖于任何特定的数据库系统,允许你在应用程序中进行数据的查询、更新和分析。本篇文章将深入探讨如何在C#高级编程中使用`DataSet`来显示和操作数据。 `DataSet`主要...

    ajax实现动态从数据库模糊查询显示到下拉框中(ajax方法返回Dataset的例子

    3. 在Ajax的`success`回调中,解析返回的Dataset,并将数据填充到下拉框中。 这个过程不仅提高了用户体验,还降低了服务器与客户端之间的通信成本,因为只有在用户输入时才会发起请求,而不是一次性加载所有数据。

    Sydney Urban Objects Dataset悉尼城市物体数据集.gz

    《悉尼城市物体数据集——深度学习与计算机视觉的宝贵资源》 悉尼城市物体数据集(Sydney Urban Objects Dataset)是一个广泛应用于计算机视觉和深度学习领域的重要数据资源。它包含了丰富的图像信息,专为识别和...

    DataAdapter与DataSet之间的数据传递DataAdapter与DataSet之间的数据传递

    3. **数据更改跟踪**: `DataSet`具有内置的更改跟踪机制,可以记录每行自上次同步以来的更改。这包括`DataRowState`枚举,如`Added`、`Modified`和`Deleted`,这些状态在调用`Update`时用于指导`DataAdapter`执行...

    使用数据绑定和DataSet

    在 Windows 程序中,DataSet 可以看作是数据库的一个本地对象,应用程序通过数据适配器与 DataSet 进行数据交换,然后 DataSet 本身在与数据库进行数据操作。创建 DataSet 可以通过右击项目名称,然后选择【添加】→...

    Delphi 像.net Dataset一样的的数据集

    在 .NET 中,Dataset 是一个内存中的数据库表示,可以处理多表数据,并支持添加、删除、修改记录以及与数据库的交互。在 Delphi 中,虽然没有直接的 Dataset 对应物,但可以通过 TClientDataSet 或 TDBDataSet 类来...

    人体分割数据集Segmentation Full Body MADS Dataset

    《深度学习视角下的人体分割数据集——Segmentation Full Body MADS Dataset详解》 在计算机视觉领域,人体分割是一项至关重要的任务,它涉及到图像处理、模式识别和机器学习等多个子领域。Segmentation Full Body ...

    RSOD-Dataset遥感图像数据集

    【RSOD-Dataset遥感图像数据集】是一个专门针对遥感图像分析与处理的重要资源,它为研究者和开发者提供了大量的遥感图像样本,用于开展目标检测、分类、变化检测等任务。遥感图像是一种从地球上空通过卫星或航空器...

    将数据从DataSet写入XML文件

    将数据从DataSet写入XML文件,将数据从DataSet写入XML文件,将数据从DataSet写入XML文件,将数据从DataSet写入XML文件。

    动物数据集Animal Dataset

    动物数据集Animal Dataset。 猫狗熊猫图像分类数据集。每类数据集包含猫、狗和熊猫各1000张图片,总共3000张图片。

    dataset2_dataset2_mysql数据_

    总的来说,这个"dataset2_dataset2_mysql数据_"提供了丰富的学习资源,涵盖了MySQL的基本操作和数据分析,对于理解和掌握数据库管理和数据处理有着重要的价值。通过实际操作这些CSV文件,学生可以更深入地了解SQL...

    干菜豆数据资料——dry bean dataset

    逻辑回归、感知机、深度神经网络、支持向量机等模型训练数据。

    Silverlight连接数据数据库DataSet填充数据

    本主题将深入探讨如何在Silverlight应用中连接数据库并使用DataSet来填充数据,不依赖于WCF或WebService服务。 首先,让我们了解DataSet。DataSet是.NET框架中的一个对象,它在内存中存储数据,并提供了类似数据库...

    DataSet与XML相互转换源码

    将`DataSet`与XML进行相互转换,可以方便地在两者之间传递数据,增强程序的灵活性和兼容性。 一、DataSet简介 `DataSet`是ADO.NET的核心组件之一,它是一个内存中的数据集合,可以包含一个或多个`DataTable`,每个`...

    通过BindingSource实现DataSet、DataGridView和TextBox的数据同步更新.docx

    "通过 BindingSource 实现 DataSet、DataGridView 和 TextBox 的数据同步更新" BindingSource 是 .NET Framework 中的一个数据绑定组件,能够将数据源和数据目标对象连接起来,以实现数据的同步更新。在实际开发中...

    Synthetic_Chinese_String_Dataset 中文识别数据集

    《Synthetic_Chinese_String_Dataset:中文识别数据集详解》 在计算机视觉和自然语言处理领域,数据集是训练和评估模型的关键要素。Synthetic_Chinese_String_Dataset 是一个专门针对中文字符识别的大型数据集,它...

    DataSetConverter4D 演示程序源代码

    标题 "DataSetConverter4D 演示程序源代码" 提供了一个关键的线索,即这是一个与数据集转换相关的开源项目,特别关注如何将数据集(DataSet)转换为JSON格式。描述进一步确认了这一点,提到了"Format_JSON"函数的源...

    python数据分析实战之超市零售分析

    包括:数据文件“superstore_dataset2011-2015.csv”和基于Jupyter notebook环境的文件“python数据分析实战之超市零售分析.ipynb”,学习时,将两个文件拷贝到同一文件夹下,按住键盘shift键,在空白处点鼠标右键,...

Global site tag (gtag.js) - Google Analytics