主頁 > 知識庫 > HTML中的數(shù)據(jù)綁定

HTML中的數(shù)據(jù)綁定

熱門標(biāo)簽:廣州ai外呼系統(tǒng)業(yè)務(wù) 天津企業(yè)外呼系統(tǒng)代理商 中山外呼系統(tǒng)中間件 無錫電銷外呼系統(tǒng)代理 地圖標(biāo)注多家店 南昌crm外呼系統(tǒng)如何 外呼系統(tǒng)號碼顯示 車載電話機器人 什么行業(yè)需要電話機器人

信息來源:Wayne_Deng的專欄

有沒想過在java script中使用recordset?原來在客戶端操作數(shù)據(jù)也可以這樣簡單,定義一個數(shù)據(jù)源,將數(shù)據(jù)綁定在各種tag上,實現(xiàn)應(yīng)用程序般的效果,酷斃了?。ㄊ紫壬昝饕稽c,文章的內(nèi)容全部來自msdn,不過用我自己的話總結(jié)而已。)

先看看這樣兩個例子:
http://msdn.microsoft.com/workshop/samples/author/databind/dbevts.htm
http://msdn.microsoft.com/workshop/samples/author/databind/dbupdate.htm
不得不又一次佩服微軟。

這個是DataBinding的架構(gòu):
架構(gòu)
當(dāng)然實現(xiàn)數(shù)據(jù)綁定有下面幾步:

第一步,定義數(shù)據(jù)源
從IE4.0起,就支持下面四種數(shù)據(jù)源:



Tabular Data Control (TDC)
TDC提供了一個簡單的訪問帶有格式的文本數(shù)據(jù)的方法,一般是csv文件。
下面是一個簡單的示例:

OBJECT CLASSID="clsid:333C7BC4-460F-11D0-BC04-0080C7055A83"
    ID=dsoComposer WIDTH=0 HEIGHT=0>
    PARAM NAME="DataURL" VALUE="composer.csv">
/OBJECT>


Remote Data Service (RDS)
遠程數(shù)據(jù)服務(wù),直接訪問遠程服務(wù)器端的數(shù)據(jù),Internet Explorer 4.0. RDS 通過OLE-DB 或 Open Database Connectivity (ODBC)來實現(xiàn)。

示例:

OBJECT classid="clsid:BD96C556-65A3-11D0-983A-00C04FC29E33"
    ID=dsoComposer HEIGHT=0 WIDTH=0>
    PARAM NAME="Server"  VALUE="http://musicserver">
    PARAM NAME="Connect" VALUE="dsn=music;uid=guest;pwd=">
    PARAM NAME="SQL"     VALUE="select compsr_name from composer">
/OBJECT>
不過感覺有點安全性的問題,因為客戶端能看到這段代碼。

XML Data Source
XML就不多說了,在IE4.0中這樣使用:
APPLET
    CODE="com.ms.xml.dso.XMLDSO.class"
    ID="xmldso"
    WIDTH="0"
    HEIGHT="0"
    MAYSCRIPT="true">
    PARAM NAME="URL" VALUE="composer.xml">
/APPLET>

Internet Explorer 5以上可以這樣:

!--[if gte IE 5]>
XML ID="xml1">
topic-info>
    page-type>reference/page-type>
    member-type>property/member-type>
    persistent-name>ACCESSKEY/persistent-name>
    runtime-name readable="1" writeable="1">accessKey/runtime-name>
    abstract>Sets or retrieves the accelerator key for the object./abstract>
/topic-info>
/XML>
![endif]-->

另外IE還提供了一個XML數(shù)據(jù)島的概念:XML Data Islands.

 
MSHTML Data Source
html數(shù)據(jù)頁示例:
H1 ID=COMPSR_FIRST>Hector/H1>
MARQUEE ID=COMPSR_LAST>Berlioz/MARQUEE>
DIV ID=COMPSR_BIRTH>1803/DIV>
H2 ID=COMPSR_FIRST>Modest/H2>
H3 ID=COMPSR_LAST>Moussorgsky/H3>
BUTTON ID=COMPSR_BIRTH>1839/BUTTON>
TEXTAREA ID=COMPSR_FIRST>Franz/TEXTAREA>
XMP ID=COMPSR_LAST>Liszt/XMP>
SPAN ID=COMPSR_BIRTH>1811/SPAN>

一旦定義可以這樣訪問:

OBJECT ID=htmlComposer DATA="compdata.htm" HEIGHT=0 WIDTH=0>
/OBJECT>
.第二步:綁定數(shù)據(jù)到HTML元素上
一般都是通過tag中的datasrc和datafld實現(xiàn)綁定的。例如:
INPUT TYPE=TEXTBOX DATASRC="#dsoComposers" DATAFLD="compsr_last">

TABLE DATASRC=#dsoComposer>
TR>
TD>DIV DATAFLD=compsr_first>/DIV>/TD>
/TR>
/TABLE>
這個是綁定表格的示例:
http://msdn.microsoft.com/workshop/samples/author/databind/dbtable.htm

其中數(shù)據(jù)來源:
OBJECT id="tdcComposers" CLASSID="clsid:333C7BC4-460F-11D0-BC04-0080C7055A83">
 PARAM NAME="DataURL" VALUE="http://msdn.microsoft.com/workshop/samples/author/databind/composer.csv">          
 PARAM NAME="UseHeader" VALUE="True">
 PARAM NAME="TextQualifier" VALUE="'">
/OBJECT>
綁定的table
TABLE datasrc=#tdcComposers>
THEAD>TR STYLE="font-weight:bold">
   TD>First/TD>TD>Last/TD>TD>Birth/TD>TD>Death/TD>TD>Origin/TD>
   /TR>/THEAD>
TBODY>
TR>
   TD>DIV datafld="compsr_first">/DIV>/TD>
   TD>DIV datafld="compsr_last">/DIV>/TD>
   TD>DIV datafld="compsr_birth">/DIV>/TD>
   TD>DIV datafld="compsr_death">/DIV>/TD>
   TD>DIV datafld="origin">/DIV>/TD>
/TR>
/TBODY>
/TABLE>
這就是效果了:
First Last Birth Death Origin 
Hector Berlioz 1803 1869 France 
Modest Moussorgsky 1839 1881 Russia 
Franz Liszt 1811 1886 France 
Antonio Vivaldi 1678 1741 Italy 
Johann Sebastian Bach 1685 1750 Germany 
Ludwig van Beethoven 1770 1827 Germany 
Wolfgang Amadeus Mozart 1756 1791 Austria 
Joseph Haydn 1732 1809 Germany 
Claude Debussy 1862 1918 France 


第三步:數(shù)據(jù)的動態(tài)添加,刪除等等(對象模型)
當(dāng)然綁定可以是動態(tài)的:
在script中:
span1.dataSrc = "#dsoComposer";
span1.dataFld = "compsr_first";

html是這樣的:
SPAN DATASRC="#dsoComposer" DATAFLD="compsr_first">/SPAN>
而且可以訪問數(shù)據(jù)源的ado:
var oRecordSet = dsoComposer.recordset;
自然就有oRecordSet .MoveNext等等。

如:
INPUT ID=cmdNavFirst TYPE=BUTTON VALUE=""
    onclick="tdcComposers.recordset.MoveFirst()">
INPUT ID=cmdNavPrev TYPE=BUTTON VALUE="  "
    onclick="tdcComposers.recordset.MovePrevious();
    if (tdcComposers.recordset.BOF)
        tdcComposers.recordset.MoveFirst();">
INPUT ID=cmdNavNext TYPE=BUTTON VALUE=" > "
    onclick="tdcComposers.recordset.MoveNext();
        if (tdcComposers.recordset.EOF)
            tdcComposers.recordset.MoveLast();">
INPUT ID=cmdNavLast TYPE=BUTTON VALUE=">>"
    onclick="tdcComposers.recordset.MoveLast()">

還可以這樣用:
SCRIPT Language="VBScript">
For Each objFld in rsAttendees.Fields
    document.write("The field name is "  objFld.Name  "BR>")
    document.write("The field value is "  objFld.Value  "BR>")
Next
/SCRIPT>

添加刪除記錄就是:oRecordSet.AddNew()以及oRecordSet.Delete()。

第三步:響應(yīng)各種數(shù)據(jù)事件(事件模型)
如何在數(shù)據(jù)更改后做出相應(yīng)的處理?
msdn中提供的方法是這樣的:
SCRIPT FOR=cboSort(數(shù)據(jù)源名) EVENT=onchange(事件名)>
    ……
/SCRIPT>
這些是事件名列表:

Event Bubbles Cancelable Applies to Introduced In Internet Explorer Version 
onbeforeupdate True True bound elements 4.0 
onafterupdate True False bound elements 4.0 
onrowenter True False DSO 4.0 
onrowexit True True DSO 4.0 
onbeforeunload False False window 4.0 
ondataavailable True False DSO 4.0 
ondatasetcomplete True False DSO 4.0 
ondatasetchanged True False DSO 4.0 
onerrorupdate True True bound elements 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 



怎么樣?
我覺得http://msdn.microsoft.com/workshop/samples/author/databind/dbevts.htm算是一個應(yīng)用比較綜合的例子了,好好研究一下,必有收獲。

網(wǎng)上有不少利用數(shù)據(jù)綁定實現(xiàn)分頁的示例,其實數(shù)據(jù)綁定還可以做更多的事情吧?應(yīng)該在rich client里面有非常大的應(yīng)用,例如制作非常復(fù)雜的datagrid。

現(xiàn)在想進一步搞清楚的是如何簡便實現(xiàn)與服務(wù)器端的同步,因為客戶端的數(shù)據(jù)綁定是對服務(wù)器端沒有影響的(你可以從服務(wù)器端生成數(shù)據(jù)源,但是在客戶端的操作不會自動返回服務(wù)器),msdn上說RDS可以,但是這種方法太笨拙了吧,又不安全。

標(biāo)簽:泰州 欽州 仙桃 呂梁 攀枝花 滄州 海西 佛山

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《HTML中的數(shù)據(jù)綁定》,本文關(guān)鍵詞  HTML,中的,數(shù)據(jù),綁定,HTML,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《HTML中的數(shù)據(jù)綁定》相關(guān)的同類信息!
  • 本頁收集關(guān)于HTML中的數(shù)據(jù)綁定的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章