NEWSLETTER " EPPYNET.COM - Corso Linguaggio ASP, 5 lez " del 25/03/2006

Utilizziamo ADO e XML in data-binding

In collaborazione con: DEVSPY.COM

Lo scopo di questo articolo è prevalentemente didattico. Analizzeremo come visualizzare in modo semplice il risultato di una query attraverso il browser Internet Explorer od un altro browser in grado di supportare nativamente documenti XML .

Assumiamo che il lettore abbia delle nozioni di base su ASP e ADO, mentre non è richiesta la conoscenza di XML.

Come primo passo realizzeremo una pagina ASP GetXMLData.asp che esegue le seguenti azioni:

  • si connette ad un database;
  • apre un recordset risultato di una query;
  • salva il recordset in formato XML, direttamente nell'oggetto Response.

Successivamente, realizzeremo una pagina HTML ViewTable.htm per visualizzare il risultato di GetXMLData.asp come segue:

  • istanzia XMLDSO per il data-binding (collegamento dinamico ai dati senza Loop Recordset.EOF);
  • carica la pagina GetXMLData.asp e passa il recordset XML all'oggetto XMLDSO.

Ho realizzato e verificato il codice descritto in questo articolo nel seguente ambiente Microsoft:

  • Windows 2000 Professional
  • Personal Web Manager 5.0
  • Data Access Component (MDAC) 2.5
  • Internet Explorer 5.0

PASSO 1

Realizziamo la pagina GetXMLData.asp per il caricamento dei dati e la conversione in XML

Con ADO 2.5 o superiore è possibile salvare un recordset, risultato di una query, in formato XML attraverso il metodo Save:

Const adPersistXML =1
rs.Save lsFileName, adPersistXML

Potete notare che ho dichiarato la costante adPersistXML, tuttavia a partire da IIS 4 e ASP 2 è possibile evitarne la definizione, includendo il file "adovbs.inc", distribuito con MDAC 2.5.

Di seguito riporto il codice relativo al flusso DB -> Recordset -> XML

<!--#include File="../include/adovbs.inc"-->
<%
'
'impedisce il caching della pagina,
'in modo da effettuare sempre il caricamento del recordset
'
Response.Expires = 0

'
' definizione variabili e oggetti COM
'
dim lsSql
dim lsConnection
dim lcnADO
dim lrsADO

'
' Apertura oggetti COM
'
Set lcnADO = Server.CreateObject("ADODB.Connection")
Set lrsADO = Server.CreateObject("ADODB.Recordset")

'
' Connessione al Database
'
lsConnection = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=G:\Articoli\db\Northwind.mdb"
lcnADO.Open lsConnection

'
' Apertura Recordset
'
lsSql = "SELECT * FROM CLIENTI"
lrsADO.CursorLocation = adUseClient
lrsADO.Open lsSql, lcnADO, adOpenKeyset, adLockBatchOptimistic

'
' invia il recordset XML
' all'oggetto Response
' e quindi al client
'
Response.ContentType = "text/xml"
lrsADO.Save Response, adPersistXML

'
' chiude gli oggetti COM
'
lrsADO.Close()
lcnADO.Close()
set lrsADO = Nothing
Set lcnADO = Nothing

%>

 

PASSO 2

Realizziamo la pagina ViewTable.htm per la visualizzazione del risultato della query

Per visualizzare il risultato della query utilizziamo una tecnologia, il data-binding , già disponibile con IE 4 e successivamente estesa con il rilascio dell'oggetto XMLDSO (ProgID = Microsoft.XMLDSO e contenuto in MSXML.DLL). Tale tecnologia consente di popolare in modo automatico, una pagina DHTML con un recordset.

A partire dal rilascio di IE 5, XMLDSO è stato inserito all'interno del Document Object Model (DOM) con la definizione dell'oggetto XML Data Island.

XML Data Island

Tale oggetto ha ereditato proprietà, metodi, eventi dell'oggetto COM XMLDSO e può essere istanziato direttamente in HTML in modo molto semplice, come segue:

<XML ID="xmldso"></XML>

Per caricare i dati XML all'interno dell'XML data island si deve usare il metodo

xmldso.XMLDocument.load("../GetXMLData.asp")

Questo codice istanzia un Document Object Model (XMLDocument) e successivamente ne carica i dati con il metodo Load.

IL metodo Load carica la pagina GetXMLData.asp. Tale pagina scrive nell'oggetto Response, i dati XML che popoleranno la tabella. Di seguito è riportata l'intera procedura:

<XML ID="xmldso"></XML>
<HTML>
<HEAD></HEAD>
<BODY>
<H3>Gestione tabella Clienti</H3>
<TABLE id=dt2 datasrc="#xmldso" datafld="rs:data" >
<TR><TD>
<TABLE id=dt1 dataSrc="#xmldso" datafld="z:row" >
<THEAD bgColor=#cococo><TR>
<TH>ID</TH>
<TH>Società</TH>
<TH>Indirizzo</TH>
<TH>Città</TH>
</TR></THEAD>
<TBODY><TR id=id_row>
<TD><INPUT id=txt1 name=txt1 dataFld="IDCliente" size=10
OnFocus=RowSetFocus() DISABLED ></TD>
<TD><INPUT id=txt2 name=txt2 dataFld="c1" size=40
OnFocus=RowSetFocus() ></TD>
<TD><INPUT id=txt3 name=txt3 dataFld="Indirizzo" size=40
OnFocus=RowSetFocus() ></TD>
<TD><INPUT id=txt4 name=txt4 dataFld="c5" size=20
OnFocus=RowSetFocus() ></TD>
</TR></TBODY>
</TABLE>
</TD></TR>
</TABLE>
</BODY>
</HTML>
<SCRIPT LANGUAGE=JavaScript>

// puntatore al recordset/riga corrente
var mlPrevRow = 0;

// esegue la query e carica il recordset XML nell'oggetto response:
function window.onload()
{
xmldso.XMLDocument.load("./GetXMLData.asp" );
}

// sposta il puntatore dal recordset/riga corrente alla riga che ha ricevuto il focus
function RowSetFocus()
{

var llEvent = event.srcElement.sourceIndex;
var llParent = document.all(llEvent).parentElement.sourceIndex;
var llCurRow = document.all(llparent).parentElement.sourceIndex;

if (llCurRow =! mlPrevRow)
{
document.all(llCurRow).style.backgroundColor="blue";
if (mlPrevRow != 0)
{
document.all(mlPrevRow).style.backgroundColor="";
}
mlPrevRow = llCurRow;
xmldso.namedRecordset("","rs:data.z:row").move(
document.all.item(llCurRow).rowIndex -1,1);
}
}
</SCRIPT>

 

CORSO DI ASP
Parola segreta per scaricare la lezione: CORSOASP5
Per non intasare la tua casella di posta abbiamo riservato una pagina con accesso riservato per scaricare i file contenenti le lezioni. Accedi da qui:


Puoi scaricare la lezione del corso di Asp utilizzando i pulsanti in basso.

Scarica la lezione Indice del corso Contatta la redazione

Copyright EPPYNET.COM® 2000 All right reserved
Home | Privacy e Policy | Faq | Contatti

 
IL NOSTRO PARTNER

DevSpy.com : è un portale IT indipendente dedicato ai programmatori che sviluppano applicativi, componenti e servizi per i sistemi Microsoft Windows.

Ricevi questa newsletter perche' ti sei volontariamente iscritto ai servizi gratuiti di EPPYNET.COM.
I tuoi dati sono strettamente confidenziali e non verranno ceduti a terzi.
Per consultare il testo completo sulla privacy puoi visitare la sezione dedicata disponibile in home page.
Per modificare, cancellare i tuoi dati o iscriverti ad altre newsletter usa il pannello di controllo che trovi in Home Page.
Per accedere usa la tua email: subemail e la tua password: subpasscode
Se invece desideri cancellarti da questa lista clicca unsubscribelink