濮阳杆衣贸易有限公司

主頁 > 知識(shí)庫 > 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)號(hào)碼顯示 車載電話機(jī)器人 什么行業(yè)需要電話機(jī)器人

信息來源:Wayne_Deng的專欄

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

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

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

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



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

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)
遠(yuǎn)程數(shù)據(jù)服務(wù),直接訪問遠(yuǎn)程服務(wù)器端的數(shù)據(jù),Internet Explorer 4.0. RDS 通過OLE-DB 或 Open Database Connectivity (ODBC)來實(shí)現(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>
不過感覺有點(diǎn)安全性的問題,因?yàn)榭蛻舳四芸吹竭@段代碼。

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還提供了一個(gè)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實(shí)現(xiàn)綁定的。例如:
INPUT TYPE=TEXTBOX DATASRC="#dsoComposers" DATAFLD="compsr_last">

TABLE DATASRC=#dsoComposer>
TR>
TD>DIV DATAFLD=compsr_first>/DIV>/TD>
/TR>
/TABLE>
這個(gè)是綁定表格的示例:
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ù)的動(dòng)態(tài)添加,刪除等等(對(duì)象模型)
當(dāng)然綁定可以是動(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算是一個(gè)應(yīng)用比較綜合的例子了,好好研究一下,必有收獲。

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

現(xiàn)在想進(jìn)一步搞清楚的是如何簡便實(shí)現(xiàn)與服務(wù)器端的同步,因?yàn)榭蛻舳说臄?shù)據(jù)綁定是對(duì)服務(wù)器端沒有影響的(你可以從服務(wù)器端生成數(shù)據(jù)源,但是在客戶端的操作不會(huì)自動(dòng)返回服務(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)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(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)民參考!
  • 推薦文章
    格尔木市| 乐业县| 花垣县| 宁波市| 集安市| 延川县| 平乐县| 元氏县| 紫金县| 陆良县| 东兰县| 苗栗市| 晴隆县| 胶州市| 石屏县| 铜川市| 南和县| 辽中县| 金华市| 太康县| 历史| 启东市| 德州市| 景谷| 板桥市| 手机| 宁强县| 南平市| 天津市| 龙陵县| 乌鲁木齐县| 鄢陵县| 丰台区| 汤原县| 锦州市| 垣曲县| 淮北市| 昆明市| 离岛区| 仁布县| 阳曲县|