Haben Sie jemals darüber nachgedacht, Recordset in JavaScript zu verwenden? Es stellt sich heraus, dass Betriebsdaten am Client so einfach sein können. Definieren Sie eine Datenquelle, binden Sie die Daten an verschiedene Tags und erzielen Sie anwendungsähnliche Effekte. Es ist so cool! (Zunächst stammt der Inhalt des Artikels von MSDN, aber es ist nur eine Zusammenfassung in meinen eigenen Worten.)
Schauen wir uns zwei Beispiele an:
http://msdn.microsoft.com/workshop/samples/author/databind/dbevts.htm
http://msdn.microsoft.com/workshop/samples/author/databind/dbupdate.htm
Ich muss Microsoft wieder bewundern.
Dies ist die Datenbankarchitektur:
Natürlich gibt es die folgenden Schritte zur Implementierung der Datenbindung:
Der erste Schritt besteht darin, die Datenquelle zu definieren
Seit IE4.0 wurden die folgenden vier Datenquellen unterstützt:
Tabelle Datensteuerung (TDC)
TDC bietet eine einfache Möglichkeit, mit Format, im Allgemeinen eine CSV -Datei, auf Textdaten zugreifen zu können.
Hier ist ein einfaches Beispiel:
<Object ClassID = CLSID: 333C7BC4-460F-11D0-BC04-0080C7055A83
id = dsocomposer breite = 0 Höhe = 0>
<param name = dataurl value = composer.csv>
</Object>
Remote Data Service (RDS)
Remote -Datendienst, direkt auf Daten auf der Remote -Server -Seite, Internet Explorer 4.0 zugreift. RDS wird über Ole-DB oder Open Database Connectivity (ODBC) implementiert.
Beispiel:
<Object ClassID = CLSID: BD96C556-65A3-11D0-983A-00C04FC29E33
id = dsocomposerhöhe = 0 width = 0>
<param name = server value = http: // musikalerver>
<param name = connect value = dsn = music; uid = guden; pwd =>
<param name = sql value = select compsr_name aus Composer>
</Object>
Aber es fühlt sich ein bisschen Sicherheitsproblem an, da der Kunde diesen Code sehen kann.
XML -Datenquelle
Ich werde nicht viel über XML sagen, ich benutze es so in IE4.0:
<Applet
code = com.ms.xml.dso.xmldso.class
id = xmldso
Breite = 0
Höhe = 0
mayscript = true>
<param name = url value = composer.xml>
</Applet>
Internet Explorer 5 oder höher kann wie folgt sein:
<!-[wenn gte dh 5]>
<xml id = xml1>
<Topic-Info>
<Seitentyps> Referenz </page-Typ>
<Member-Type> Eigenschaft </member-Typ>
<persistent-name> accessKey </persistent-name>
<runtime-name lesable
<Stract> setzt oder ruft den Beschleunigungsschlüssel für das Objekt fest. </Abstract>
</topic-info>
</xml>
<! [endif]->
Darüber hinaus bietet der IE auch das Konzept einer XML -Dateninsel: XML -Dateninseln.
MSHTML -Datenquelle
Beispiel für die HTML -Datenseite:
<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> mussorgsky </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>
Sobald Sie definiert sind, können Sie wie folgt darauf zugreifen:
<Objekt -ID = htmlComposer data = compData.htm HEIGHT = 0 WEDTH = 0>
</Object>
.Step 2: Binden Sie die Daten an das HTML -Element
Im Allgemeinen wird es in Tags durch DataSrc und DataFLD gebunden. Zum Beispiel:
<Eingabe type = textbox datasrc =#dsocomposes datafld = compsr_last>
Und
<table dataSrc =#dsocomposer>
<tr>
<td> <div datafld = compsr_first> </div> </td>
</tr>
</table>
Dies ist ein Beispiel für Bindungstabellen:
http://msdn.microsoft.com/workshop/samples/author/databind/dbtable.htm
Unter ihnen die Datenquelle:
<Object ID = TDCCOMSERS 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>
Bindemed Tabelle
<table dataSrc =#tdccomposters>
<Thead> <tr style = font-weight: fett>
<td> zuerst </td> <td> last </td> <td> Geburts </td> <td> Tod </td> <td> Origin </td>
</tr> </head>
<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>
Dies ist der Effekt:
Erster letzter Geburtstag Todesursprung
Hector Berlioz 1803 1869 Frankreich
Modest Moussorgsky 1839 1881 Russland
Franz Liszt 1811 1886 Frankreich
Antonio Vivaldi 1678 1741 Italien
Johann Sebastian Bach 1685 1750 Deutschland
Ludwig van Beethoven 1770 1827 Deutschland
Wolfgang Amadeus Mozart 1756 1791 Österreich
Joseph Haydn 1732 1809 Deutschland
Claude Debussy 1862 1918 Frankreich
Schritt 3: Dynamische Addition, Löschung usw. von Daten (Objektmodell)
Natürlich kann die Bindung dynamisch sein:
In Skript:
span1.datasrc = #dsocomposer;
span1.datafld = compsr_first;
Die HTML sieht so aus:
<span dataSrc =#dsocomposer datafld = compsr_first> </span>
Und Sie können auf die Datenquelle ADO zugreifen:
var orcordset = dSocomposer.recordset;
Natürlich gibt es Orcordset .Movenext und so weiter.
wie:
<Eingabe -ID = cmdnavfirst type = button value = <<
onclick = tdccomposes.recordset.movefirst ()>
<Eingabe -ID = cmdnavprev type = button value = <
onclick = tdccomposes.recordset.MovePrevious ();
if (tdccomposers.recordset.bof)
tdccomposers.recordset.movefirst ();>
<Eingabe -ID = cmdnavnext type = button value =>
onclick = tdccomposes.recordset.Movenext ();
if (tdccomposers.recordset.eof)
tdccomposers.recordset.Movelast ();>
<Eingabe -ID = cmdnavlast type = button value = >>
onclick = tdccomposes.recordset.Movelast ()>
Es kann auch so verwendet werden:
<script Language = vbScript>
für jede objfld in rsattendees.feldern
document.write (der Feldname ist & objfld.name & <br>)
document.write (der Feldwert ist & objfld.value & <br>)
nächste
</script>
Hinzufügen und Löschen von Datensätzen sind: orcordset.addNew () und orcordset.delete ().
Schritt 3: Reaktion auf verschiedene Datenereignisse (Ereignismodell)
Wie kann ich die entsprechende Verarbeitung nach Datenänderungen durchführen?
Die in MSDN bereitgestellte Methode lautet wie folgt:
<Skript für = CBOSORT (Datenquellenname) Ereignis = Onchange (Ereignisname)>
...
</script>
Dies sind die Liste der Ereignisnamen:
Ereignisblasen stornierbare Anwendungen für die Einführung in der Internet Explorer -Version
onbeforeupdate true gebundene Elemente 4.0
on nach
onrowenter true false dso 4.0
Onrowexit True True DSO 4.0
Bei der ForeUnLoad False false Fenster 4.0
ONDATAAVAILABLE WAHR FALSE DSO 4.0
ONDATASETCOMPLETTET TRUE False DSO 4.0
ONDATASETADANGED WAHR FALSE DSO 4.0
onErrorUpdate True True Bound Elements 4.0
onreadyStatechange true false dso 4.0
OncellChange true Falsch DSO 5.0
OnrowSInserted true Falsch DSO 5.0
OnrowsDelete true Falsch DSO 5.0
Wie wäre es damit?
Ich denke, http://msdn.microsoft.com/workshop/samples/author/databind/dbevts.htm ist ein relativ umfassendes Beispiel für die Anwendung. Wenn Sie es sorgfältig studieren, werden Sie etwas gewinnen.
Es gibt viele Beispiele für die Verwendung von Datenbindung zur Implementierung von Paging im Internet. Tatsächlich können Datenbindung mehr Dinge tun, oder? Es sollte sehr große Anwendungen im reichen Client geben, z. B. sehr komplexe Datenträger.
Was ich jetzt weiter verstehen möchte, ist, wie Sie einfach mit der Serverseite eine Synchronisation erreichen können, da die Datenbindung des Clients keinen Einfluss auf die Serverseite hat (Sie können Datenquellen von der Serverseite generieren, aber der Betrieb des Clients kehrt nicht automatisch zum Server zurück). Die MSDN sagte, dass RDS in Ordnung sei, aber diese Methode ist zu ungeschickt und unsicher.