首页  >  文章  >  web前端  >  HTML中的数据绑定_CSS/HTML

HTML中的数据绑定_CSS/HTML

WBOY
WBOY原创
2016-05-16 12:12:071956浏览

信息来源:Wayne_Deng的专栏

有没想过在java script中使用recordset?原来在客户端操作数据也可以这样简单,定义一个数据源,将数据绑定在各种tag上,实现应用程序般的效果,酷毙了!(首先申明一点,文章的内容全部来自msdn,不过用我自己的话总结而已。)

先看看这样两个例子:
http://msdn.microsoft.com/workshop/samples/author/databind/dbevts.htm
http://msdn.microsoft.com/workshop/samples/author/databind/dbupdate.htm
不得不又一次佩服微软。

这个是DataBinding的架构:
架构
当然实现数据绑定有下面几步:

第一步,定义数据源
从IE4.0起,就支持下面四种数据源:



Tabular Data Control (TDC)
TDC提供了一个简单的访问带有格式的文本数据的方法,一般是csv文件。
下面是一个简单的示例:

ID=dsoComposer WIDTH=0 HEIGHT=0>
    



Remote Data Service (RDS)
远程数据服务,直接访问远程服务器端的数据,Internet Explorer 4.0. RDS 通过OLE-DB 或 Open Database Connectivity (ODBC)来实现。

示例:

ID=dsoComposer HEIGHT=0 WIDTH=0>
    
    
    

不过感觉有点安全性的问题,因为客户端能看到这段代码。

XML Data Source
XML就不多说了,在IE4.0中这样使用:
CODE="com.ms.xml.dso.XMLDSO.class"
ID="xmldso"
WIDTH="0"
HEIGHT="0"
MAYSCRIPT="true">
    


Internet Explorer 5以上可以这样:



另外IE还提供了一个XML数据岛的概念:XML Data Islands.

 
MSHTML Data Source
html数据页示例:

Hector


Berlioz
1803

Modest


Moussorgsky




Liszt
1811

一旦定义可以这样访问:



.第二步:绑定数据到HTML元素上
一般都是通过tag中的datasrc和datafld实现绑定的。例如:







这个是绑定表格的示例:
http://msdn.microsoft.com/workshop/samples/author/databind/dbtable.htm

其中数据来源:

           
 
 

绑定的table


   
   


   
   
   
   
   


FirstLastBirthDeathOrigin
Berlioz 1803 1869 Perancis
Moussorgsky sederhana 1839 1881 Rusia
Franz Liszt 1811 1886 Perancis
Antonio Vivaldi 1678 1741 Itali
Johann1750 Jerman
Johann1758 Jerman ketuhar 1770 1827 Jerman
Wolfgang Amadeus Mozart 1756 1791 Austria
Joseph Haydn 1732 1809 Jerman
Claude Debussy 1862 1918 Perancis


Langkah ketiga: penambahan dinamik, pemadaman, dsb. >Sudah tentu Binding boleh menjadi dinamik:
Dalam skrip:
span1.dataSrc = "#dsoComposer";
span1.dataFld = "compsr_first"; >
Dan anda boleh mengakses ado sumber data:
var oRecordSet = dsoComposer.recordset; tentu ada oRecordSet .MoveNext dan sebagainya.

Contohnya:
onclick="tdcComposers.recordset.MoveFirst()"< INPUT ID=cmdNavPrev TYPE=BUTTON VALUE=" < "
onclick="tdcComposers.recordset.MovePrevious();
if (tdcComposers.recordset.BOF)
tdcComposers.recordset."MoveFirst(); > ;
onclick="tdcComposers.recordset.MoveNext();
if (tdcComposers.recordset.EOF)
sd .recordset .MoveLast();">
onclick="tdcComposers.recordset.MoveLast()">

Ia juga boleh digunakan seperti ini:
>Hanya tambah dan padam rekod : oRecordSet.AddNew() dan oRecordSet.Delete().

Langkah 3: Balas kepada pelbagai peristiwa data (model acara)
Bagaimana untuk mengendalikan data dengan sewajarnya selepas ia berubah?
Kaedah yang disediakan dalam msdn adalah seperti berikut:
……
>Ini ialah senarai nama acara:

Buih Acara Boleh Dibatalkan Digunakan untuk Diperkenalkan Dalam Versi Internet Explorer
sebelum kemas kini True True bound elements 4.0
onafterupdate True False bound elements 4.0
onrowenter True False elements SO 4.0
onrowexit True False DSO 4.0
onbeforeunload False False tetingkap 4.0
ondataavailable True False DSO 4.0
ondatasetcomplete True False DSO 4.0>pada True False DSO 4.0
set True False DSO 4.0 onreadystatechange True False DSO 4.0
oncellchange True False DSO 5.0
onrowsinserted True False DSO 5.0
onrowsdelete True False DSO 5.0 Bagaimana pula?
Saya rasa http://msdn.microsoft.com/workshop/samples/author/databind/dbevts.htm ialah contoh aplikasi yang agak komprehensif Jika anda mengkajinya dengan teliti, anda pasti akan mendapat sesuatu.

Terdapat banyak contoh penggunaan data binding untuk mencapai paging di Internet Sebenarnya, data binding boleh melakukan lebih banyak perkara, bukan? Perlu ada aplikasi yang sangat besar dalam pelanggan kaya, seperti membuat grid data yang sangat kompleks.

Apa yang saya ingin ketahui lebih lanjut sekarang ialah bagaimana untuk mencapai penyegerakan dengan pelayan dengan mudah, kerana pengikatan data pelanggan tidak mempunyai kesan pada pelayan (anda boleh menjana sumber data dari pelayan, tetapi operasi pada pelanggan tidak akan secara automatik kembali ke pelayan), msdn mengatakan bahawa RDS boleh digunakan, tetapi kaedah ini terlalu kekok dan tidak selamat.


声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn