¿Alguna vez pensó en usar RecordSet en JavaScript? Resulta que los datos operativos en el cliente pueden ser muy simples. Definir una fuente de datos, unir los datos a varias etiquetas y lograr efectos similares a la aplicación. ¡Es genial! (En primer lugar, el contenido del artículo proviene de MSDN, pero es solo un resumen en mis propias palabras).
Echemos un vistazo a dos ejemplos:
http://msdn.microsoft.com/workshop/samples/author/databind/dbevts.htm
http://msdn.microsoft.com/workshop/samples/author/databind/dbupdate.htm
Tengo que admirar a Microsoft nuevamente.
Esta es la arquitectura de databinding:
Por supuesto, existen los siguientes pasos para implementar la unión de datos:
El primer paso es definir la fuente de datos
Desde IE4.0, se han admitido las siguientes cuatro fuentes de datos:
Control de datos tabulares (TDC)
TDC proporciona una forma simple de acceder a los datos de texto con formato, generalmente un archivo CSV.
Aquí hay un ejemplo simple:
<Object ClassID = CLSID: 333C7BC4-460F-11D0-BC04-0080C7055A83
id = dsocomposer ancho = 0 altura = 0>
<param name = dataUrl value = composer.csv>
</objeto>
Servicio de datos remotos (RDS)
Servicio de datos remotos, acceder directamente a los datos en el lado remoto del servidor, Internet Explorer 4.0. RDS se implementa a través de OLE-DB o Open Database Connectity (ODBC).
Ejemplo:
<Object ClassID = CLSID: BD96C556-65A3-11D0-983A-00C04FC29E33
id = dsocomposer altura = 0 ancho = 0>
<Param name = Server Value = http: // Musicserver>
<Param name = Connect Value = dsn = music; uid = invitado; pwd =>
<param name = sql value = seleccione CompSr_Name de Composer>
</objeto>
Pero se siente un problema de seguridad, porque el cliente puede ver este código.
fuente de datos XML
No diré mucho sobre XML, lo uso así en IE4.0:
<Applet
código = com.ms.xml.dso.xmldso.class
id = xmldso
Ancho = 0
altura = 0
mayscript = true>
<param name = url value = composer.xml>
</pplet>
Internet Explorer 5 o superior puede ser así:
<!-[Si GTE es IE 5]>
<xml id = xml1>
<icmetinfo>
<page-type> reference </page-type>
<Member-Type> Property </member-type>
<Sistente-Name> AccessKey </Persistent-Name>
<Runtime-Name Realable = 1 Writeable = 1> AccessKey </runtime-name>
<ArGRO> Establece o recupera la tecla Acelerator para el objeto. </stract>
</topic-info>
</xml>
<! [endif]->
Además, IE también proporciona el concepto de una isla de datos XML: islas de datos XML.
fuente de datos MSHTML
Ejemplo de la página de datos HTML:
<h1 id = compsr_first> héctector </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 </botón>
<TextAREA ID = COMPSR_FIRST> Franz </extarea>
<xmp id = compsr_last> liszt </ xmp>
<span id = compsr_birth> 1811 </span>
Una vez definido, puede acceder a él así:
<Object id = htmlComposer data = compData.htm Height = 0 Width = 0>
</objeto>
.Step 2: vincule los datos al elemento HTML
En general, está vinculado a través de DataSRC y DataFld en etiquetas. Por ejemplo:
<input type = textbox dataSrc =#dsocompios dataFld = compsr_last>
y
<TABLE DataSrc =#dsocomposer>
<tr>
<TD> <div dataFld = compsr_first> </div> </td>
</tr>
</table>
Este es un ejemplo de tablas de enlace:
http://msdn.microsoft.com/workshop/samples/author/databind/dbable.htm
Entre ellos, la fuente de datos:
<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 = '>
</objeto>
Mesa vinculada
<TABLE DataSrc =#TDCCOMPOSERS>
<thead> <tr style = font-weight: bold>
<TD> First </td> <td> Last </td> <td> nacimiento </td> <td> Death </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 = origen> </div> </td>
</tr>
</tbody>
</table>
Este es el efecto:
Primer último cumpleaños de la muerte de origen
Héctor Berlioz 1803 1869 Francia
Modesto Moussorgsky 1839 1881 Rusia
Franz Liszt 1811 1886 Francia
Antonio Vivaldi 1678 1741 Italia
Johann Sebastian Bach 1685 1750 Alemania
Ludwig van Beethoven 1770 1827 Alemania
Wolfgang Amadeus Mozart 1756 1791 Austria
Joseph Haydn 1732 1809 Alemania
Claude Debussy 1862 1918 Francia
Paso 3: Adición dinámica, deleción, etc. de datos (modelo de objeto)
Por supuesto, el enlace puede ser dinámico:
En el guión:
span1.datasrc = #docomposer;
span1.datafld = compsr_first;
El HTML se ve así:
<span dataSrc =#dsocomposer dataFld = compsr_first> </span>
Y puede acceder a la fuente de datos ADO:
var orcordSet = dsocomposer.RecordSet;
Naturalmente, hay Orcordset. MovenExt, etc.
como:
<input id = cmdnavfirst type = button value = <<
onClick = TDCCOMpose.RecordSet.MoveFirst ()>
<input id = cmdnavprev type = button value = <
onClick = TDCCOMpose.RecordSet.MovePrevious ();
if (tdcComposers.RecordSet.BOF)
TDCCOMPOSERS.RecordSet.MoveFirst ();>
<input id = cmdnavnext type = button value =>
onClick = TDCCOMpose.RecordSet.MoVEnext ();
if (tdcComposers.RecordSet.EOF)
tdcComposers.RecordSet.movelast ();>
<input id = cmdnavlast type = button value = >>
onClick = TDCCOMpose.RecordSet.Movelast ()>
También se puede usar así:
<Script Language = VBScript>
para cada objfld en rsatendados.
document.write (el nombre del campo es & objfld.name & <br>)
document.write (el valor de campo es & objfld.value & <br>)
próximo
</script>
Los registros de suma y deleción son: OrcordSet.AddNew () y OrcordSet.Delete ().
Paso 3: Responda a varios eventos de datos (modelo de evento)
¿Cómo realizar el procesamiento correspondiente después de los cambios de datos?
El método proporcionado en MSDN es el siguiente:
<script for = cbosort (nombre de fuente de datos) event = onchange (nombre del evento)>
...
</script>
Estos son la lista de nombres del evento:
Aplicaciones cancelables de burbujas de eventos a la versión de Internet Explorer
OnBeforeUpdate True True Elements 4.0
OnFterUpdate Verdadero Falso Bound Elements 4.0
onrowenter verdadero falso dso 4.0
OnrowExit True True DSO 4.0
OnbeforeNunload Falso Falso Ventana 4.0
OnDataVailable True False DSO 4.0
OnDatasetComplete True False DSO 4.0
onDataSetchanged verdadero falso dso 4.0
OnerrorUpdate True True Bound Elements 4.0
OnReadyStateChange True False DSO 4.0
OnCellChange True False DSO 5.0
onrowsinserted verdadero falso dso 5.0
onrowsdelete verdadero falso dso 5.0
¿Qué tal?
Creo que http://msdn.microsoft.com/workshop/samples/author/databind/dbevts.htm es un ejemplo relativamente completo de aplicación. Si lo estudias con cuidado, ganarás algo.
Hay muchos ejemplos del uso de enlaces de datos para implementar la paginación en Internet. De hecho, el enlace de datos puede hacer más cosas, ¿verdad? Debe haber aplicaciones muy grandes en el cliente rico, como hacer datagridas muy complejas.
Lo que quiero entender más ahora es cómo lograr fácilmente la sincronización con el lado del servidor, porque el enlace de datos del cliente no tiene impacto en el lado del servidor (puede generar fuentes de datos desde el lado del servidor, pero la operación del cliente no volverá automáticamente al servidor). El MSDN dijo que RDS está bien, pero este método es demasiado torpe e inseguro.