Romeo Pruno

maggio 2005 - Posts

Asp.Net: Visualizzare dati XML in una web page

Operazione banale questa ed ormai consueta in moltissime applicazioni web..... scrivo qui una piccola demo per tutti!!!

NB: l'esempio si riferisce alla tabella "Authors" nel DB pubs di MSSql Server 2000, quindi il foglio di stile associato è creato ad hoc per questo esempio, è introdotto anche un XmlControl all'interno della pagina con il nome di XmlDisplay:

 

version='1.0'
   
xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>
   match="/">
   <
style>
      
.header{font-weight:bold;color:white;background-color:black;}
      .value{font-family:arial;font-size:.7em;background-color:silver}
   
</style>
   <
table border="1" cellspacing="0" cellpadding="1"
      
bordercolor="black">
      <
tr class="header">
         <
th>Author ID</th>
         <
th>Last Name</th>
         <
th>First Name</th>
         <
th>Phone</th>
         <
th>Address</th>
         <
th>City</th>
         <
th>State</th>
         <
th>Zip</th>
         <
th>Contract</th>
      <
/tr>
   select='Schema1/authors'>
      <
tr>
         <
td nowrap="true" class="value">
            <
b>
               select='@au_id' />
            <
/b>
         <
/td>
         <
td nowrap="true" class="value">
            select='@au_lname' />

         <
/td>
         <
td nowrap="true" class="value">
            select='@au_fname' />
         <
/td>
         <
td nowrap="true" class="value">
            select='@phone' />
         <
/td>
         <
td nowrap="true" class="value">
            select='@address' />
         <
/td>
         <
td nowrap="true" class="value">
            select='@city' />
         <
/td>
         <
td nowrap="true" class="value">
            select='@state' />
         <
/td>

         <
td nowrap="true" class="value">
            select='@zip' />
         <
/td>
         <
td nowrap="true" class="value">
            select='@contract' />
         <
/td>
      <
/tr>
   <
/xsl:for-each>
   <
/table>
   <
/xsl:template>
<
/xsl:stylesheet>

 

Dim strCon As String
strCon = "data source=(local)\VSdotNET; " & _
   "database=pubs;integrated security=true"

Dim sqlConn As New SqlConnection(ConnStr)
sqlConn.
Open()

Try
   Dim 
strSql As String
   
strSql = "SELECT * FROM authors FOR XML AUTO, XMLDATA"
   
   
Dim cmd As New SqlCommand(strSql, sqlConn)
   
Dim ds As New DataSet()

   
'riempio il dataset e passo il controllo XML con il metodo GetXML()
   
ds.ReadXml(cmd.ExecuteXmlReader(), _
                XmlReadMode.Fragment)
   XmlDisplay.DocumentContent = ds.GetXml()

Finally
   
sqlConn.Close()
End Try

 

powered by IMHO 1.2

Training Visual Studio 2005
Vi informo che sono disponibili qui i video e le slides della conferenza
Research: Define ontology for Intelligent Document

Sono molto contento che hanno accettato la mia pubblicazione   alla EGOV2005 International Conference .... un pò di sana umiltà!

Ed adesso oltre che prepararmi per la sua presentazione dal 22 al 26 agosto a Copenhagen mi sono dedicato alla scrittura di un altro lavoro dal titolo: Define ontology for Intelligent Document il quale essendo parte integrante del lavoro teorico descritto nell'articolo sopra  è senzadubbio una delle prime implementazioni reali di una possibile ontologia il cui scopo e strutturare qualsiasi documento per la pubblica amministazione "e-Gov".

Riflessione:

Molti non immaginano neanche quante multinazionali partecipano ogni anno a questi avvenimenti per cercare di imporre sin dall'inizio i propri standard nel campo di nuovi linguaggi e/o tecniche implementative,  tra gli ultimi che ho seguito:

Jim Melton Oracle Coorporation jim.melton@acm.org
Andrew Eisenmberg IBM andrew.eisenberg@us.ibm.com

Riguardo a nuove funzioni aggiuntive per il nuovo standard SQL/XML (uscita fine 2005)

 

powered by IMHO 1.2 

Posted: mag 26 2005, 08.49 by romeo | with 1 comment(s)
Filed under:
Sharepoint: Microsoft Outlook 2003 and Sharepoint Technologies

Segnalo questo interessante HowTo sull'interoperabilità tra Outlook 2003 e WSS 2003 e/o SPS 2003, in particolare per quanto concerne la creazione automatica di workspaces direttamente dal calendario di Outlook

powered by IMHO 1.2

Posted: mag 26 2005, 08.49 by romeo
Filed under:
Asp.Net: Possibile problema con i ....validator

Mi è accaduto prorpio oggi mentre stavo facendo girare su di un server delle applicazioni che sulle macchine di test funzionavano benissimo.... In particolare la pagina aspx interessata conteneva dei controlli "requestFieldValidator" i quali una volta attivati impedivano alla pagina di fare il postback. Mi spiego meglio il problema era che una volta che avevo riempito tutti i campi obbligatori della mia form, spingendo sul submit button non accadeva nulla proprio come se qualcosa impedisse alla pagina di scatenare il postback!

Guardando sulla documentazione mi sono reso conto che sul server erà installata una versione vecchia dei files js che implementano le funzioni di validazione lato client ed in particolare la cartella: "aspnet_client/system_web/1_1_4322"

La soluzione al problema sta nel far eseguire il comando:

"aspnet_regiis -c" il quale si preoccupa di installare la nuova versione dei WEebUIValidation...

Ecco fatto tutto funziona correttamente.... consiglio comunque di creare una copia di backup prima dell'installazione della nuova versione dei files js

 

powered by IMHO 1.2

Smart Document: Creare un file di configurazione

Senzadubbio ormai è di gran dmoda e forse anche utile crearsi dei file di configurazione like (machine.config) dove tener traccia dele impostazioni del programma ed editarle senza andare a toccare il codice sorgente.... Bene personalmente quando programmo l'interfaccia ISmartDocument (da come dice Luka non per molto ancora, speriamo!) sono abituato a creare file di configurazioned ell'applicazione dove memorizzare, stringhe di connesione al DB, utenti, ecc.... Nell'esempio riporto un esempio di creazione e gestione di un modello di file di configurazione.

In questa demo mi trovo nella necessità di creare un file di configurazione degli utenti della mia applicazione, poichè sono nell'impossibilità (o non desidero) accedere all'Active Directory aziendale per gestire gli utenti...

Passo 1 - Creazione del file di configurazione:

version="1.0" encoding="utf-8" ?>


    nome="Romeo Pruno" user="romeo.pruno" pwd="mozzarella" level="1" />
    nome="Carlo Pinasco" user="carlo.pinasco" pwd="caciocavallo" level="1" />
    nome="Gabriele Castellani" user="gabriele.castellani" pwd="provolone" level="2" />
<
/items>

Passo 2 - Lettura dei valori da codice:

Dim doc As XPathDocument = New XPathDocument("config.xml")
Dim nav As XPathNavigator = doc.CreateNavigator()
Dim expr As XPathExpression

 
Try
    
    
expr = nav.Compile("//utente[@nome]")

    
Dim iterator As XPathNodeIterator = nav.Select(expr)
        
        
While (iterator.MoveNext())

        
Dim nav2 As XPathNavigator = iterator.Current.Clone()
            nav2.MoveToFirstAttribute()

           
'scrivo qualcosa es: scrivo i valori in una messagebox
           
Messagebox.Show("Utente = " + nav2.Value)
           
'aggiorno i controlli nel taskpane per possibile meorizzazione dei valori
           
docWord.SmartDocument.RefreshPane()
                        
         
End While
         
 Finally
 
 
'libero le risorse

 
Catch ex As Exception
     
     
'istruzioni per  gestione Exception
     
  
End Try

Il vantaggio do questa configurazione sta nella gestione esterna di tute le risorse... immaginaiamoci di dover aggiungere un nuovo utente direttamente dal file di configurazione, editandolo a mano o andando a creare direttamente nel Task Pane una sezione personalizzata per la gestione dell'applicazione!

powered by IMHO 1.2

Smart Document: Agiungere un controllo ActiveX

Ha ragione davvero Luka quando dice che IsmartDocument fa a botte con questo tipo di controllo... un esempio su tutti è il classico oggetto Calendar....

Vediamo come sia possibile aggiungere un calendario al nostro taskpane ed allo stesso tempo essere soddisfatti di noi stessi:

Passo 1: Aggiungere una constante nel  XSD schema 

Const cACTIVEX As String = cNAMESPACE & "#activex"

a questo punto incrementiamo di un controllo la nostra avriabile cTYPES che tiene conto del totale dei controlli all'interno dello Smart Document...

Passo 2:  SmartDocumentXMLTypeName

Select Case (ControlID)

   SmartDocXmlTypeName = cACTIVEX
            
End Select

Passo 3: SmartDocumentXMLTypeCaption

Select Case (ControlID)

    SmartDocXmlTypeCaption = _
    "Il mio primo calendario....speriamo che funzioni!"
    
End Select

Passo 4: ControlCount

'ritorna il numero di controlli di questo namespace
Case cACTIVEX
    
    ControlCount = 1
    

Passo 5: ControlID

'impostiamo il range numerico del controllo
Case cACTIVEX
            
      ControlID = ControlIndex + 900
      

Passo 6: ControlTypeFromID

'questo è bellissimo.... dobbiamo inserire l'identificatore (GUI) del controllo
Select Case (ControlID)
            ControlCaptionFromID = _
                "{8E27C92B-1264-101C-8A2F-040224009C02}"
End Select

Passo 7: PopulateActiveXProps

'scriviamo sottoforma di "valori" le dimensioni del calendario :-) 
Select Case ControlID

        
Case (ControlID)
            Props.
Write Key:="W", value:="250"
            Props.
Write Key:="H", value:="200"
            
    
End Select

Passo 8: ControlNameFromID

Select Case ControlID
       
       
Case (ControlID)
               ControlNameFromID = "Calendar"
            
Case Else
               
ControlNameFromID = cNAMESPACE & ControlID
End Select

Abiamo esaurito le API dedicate all'inizializzazione del controllo... ora dobbiamo permettere il suo funzionamento:

Dichiariamo ora delle variabili, precisamente una per la restituzione dell'iggetto Calendar e l'altra per l'identificazione della Word Application corrente

Private WithEvents objCal As MSACAL.Calendar
Private objApp As Microsoft.Office.Interop.Word.Application

Non ci resta altro che accedere alle proprietà del controllo attraverso l'utilizzo delle seguenti variabili globali:

Dim objDoc As Microsoft.Office.Interop.Word.Document
Dim objCalendar As Microsoft.Office.Interop.Word.SmartTagAction
Dim objSel As Microsoft.Office.Interop.Word.Selection

       objDoc = Document
       objSel = objDoc.ActiveWindow.Selection
 

        
If objSel.XMLParentNode.BaseName = "activex" Then
            
objCalendar = objSel.XMLParentNode.SmartTag.SmartTagActions("Calendar")
            
If objCalendar.PresentInPane Then
                
objCal = objCalendar.ActiveXControl
            
End If
        End If

Funziona???? Ve lo chiedo poichè alcuni sviluppatori sono antipatici a questo controllo e potrebbe non funzionare... ahahaha!

powered by IMHO 1.2

Sharepoint: Workspace and Releases

Segnalo a quanti ancora non la conoscessero (i miei due stagisti...) la webpart dedicata all'host di controlli .ascx utile per chi vuole sviluppare usercontrols senza dover rinunciare all'ambiente grafico di VisualStudio

UgiSharepoint

powered by IMHO 1.2

Posted: mag 24 2005, 09.11 by romeo
Filed under:
MSSQLServer2000: SP4 - leggete prima di installare

Riporto qui il post di Carlo Pinasco dove è possibile venire a conoscenza delle possibili problematiche per l'installazione della SP4 per Sql Server 2000! Per fortuna non è stato il caso mio :-)

http://blogs.ugidotnet.org/carlop/archive/2005/05/13/16185.aspx

 

Sharepoint: Come far condividere directory virtuali "custom"

Penso che molti hanno il problema di condividere più applicazioni server sulla stessa web application, come ade sempio PHP,ASP.NET,JSP ecc.... Allo stesso modo quando estendiamo il nostro virtual server con il servizio Sharepoint non sempre ci viene resa la vita facile! Vi rimando a questo articolo interessante dove potete trovare la soluzione ideale alle varie personalizzazioni che possono essere fatte su IIS6

http://support.microsoft.com/?id=828810

powered by IMHO 1.2

Posted: mag 18 2005, 03.29 by romeo | with 3 comment(s)
Filed under:
Sharepoint: UgiSharePoint finalmente OnLine

Segnalo con molto piaciere grazie a Marco Bellinaso che anche in italia è OnLine il portale di sviluppo della comunità SP al seguente url http://www.ugisharepoint.it/

powered by IMHO 1.2

Posted: mag 09 2005, 12.03 by romeo | with 1 comment(s)
Filed under:
Sharepoint: Migrare siti dalle macchine di sviluppo alla produzione

In questi giorni mi trovavo nella necessità di spostare alcuni siti SP dalla macchina di sviluppo al server che doveva gestirli, ho guardato un po quà e un po là ed ho riscoperto le funzionalità di Smigrate.exe, infatti questo piccolo tool non è utilizzato soltanto per l'aggiornamento di versioni di SP ma in questo caso mi è stato utilissimo per questo tipo di operazioni. Di seguito vi illustro cosa dovete fare per "migrare" i vostri siti SP da una macchina all'altra:

a) Backup del sito/siti sulla macchina di sviluppo

  1. eseguire "smigrate.exe"  al seguente path \\servername\localdrive\Program Files\Common Files\Microsoft Shared\web server extensions\60\BIN
  2. eseguire il seguente comando: smigrate -w http://server[/site] -f filename.fwp -u domain\id -pw *
  3. vi verrà chiesta la password ed attendete per qualche istante (a seconda di quanto è pesante il vostro sito)
  4. verifictae la presenza del file *.fwp al path da voi specificato

b) Ripristinare sito/siti su macchina di produzione

  1. Creare un nuovo sito attraverso l'estensione di una nuova application server o semplicemente creando un nuovo sito dal portale
  2. fermarsi e chiudere il browser al momento di scegliere il template
  3. eseguire il seguente comando ricordando di metere come "siteurl" il vostro nuovo sito che avete creato: smigrate -r -w siteurl -f filename.fwp -u domain\id -pw *
  4. vi verrà chiesta la password ed attendete per qualche istante (a seconda di quanto è pesante il vostro sito)

il gioco è fatto, controllate ora che tutto il contenuto sia a suo posto!

*Nota

il comando "smigrate" non riconosce le impostazioni di security sulla amcchina di destinazione (es: account) e funziona sia per siti principali e/o sotto siti

Buon lavoro!

UPDATE:

Da questo post ho scritto un articolo su www.ugisharepoint.it , al seguente url:

http://www.ugisharepoint.it/ShowContent.aspx?Type=knowledge,slide&ID=b14c0d62-70a2-4e44-b5ae-31f597087b97&Page=1&#RET

Buona lettura!

powered by IMHO 1.2

Posted: mag 08 2005, 11.58 by romeo | with 1 comment(s)
Filed under: