Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1

    [VB.NET] inserire Xml in un datageidview?

    Salve a tutti, questo è il mio primo post, spero di aver postato nella parte giusta del forum.

    Il mio problema è questo:
    Io devo leggere un Xml e inserirlo in un datagridview; prima di postarlo mi sono giustamente documentato, vi posto anche il link http://msdn.microsoft.com/it-it/libr...3f(VS.80).aspx(VS.80).aspx

    in pratica riassumendo il link ho utilizzato questa operazione per inserire l'xml nel datageidview:
    ho inserito in una windows form un oggetto DataSet chiamato AuthorsDataSet e ho scritto il seguente codice

    codice:
     Dim filePath As String = "c:\programmi\file.xml"
    
        AuthorsDataSet.ReadXml(filePath)
    
        DataGridView1.DataSource = AuthorsDataSet
        DataGridView1.DataMember = "authors"
    Il problema è che quel metodo funziona solo per alcuni file Xml, mentre per quelli come questo:

    codice:
    <?xml version="1.0" standalone="yes"?>
    <Connections xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
      <Connection>
        <Nome>prova</Nome>
        <ConnectionString>
          <NOMEAPP>prova1</NOMEAPP>
          <PROVIDER>SQLOLEDB.1</PROVIDER>
          <DATASOURCE>nomeserver</DATASOURCE>
          <CATALOG>nomedatabase</CATALOG>
          <USERID>user</USERID>
          <PASSWORD>password <PASSWORD />
          <LANGUAGE>ITALIAN</LANGUAGE>
        </ConnectionString>
      </Connection>
      <Tabelle />
    </Connections>
    non li legge o meglio visualizza solo il campo Tabelle.
    Da quello che ho capito non riesce a visualizzare il tag Connection perchè non contiente un "valore" ma contiene a sua volta altri tag.
    Voi sapreste indicarmi un metodo per visualizzare in una datagridview anche i tag che contengono altri tag?

    Il codice che ho scritto è uguale identico a quello del link, con l'unica differenza che ho sostituito l'XML authors con il mio.

    Spero di essere stato chiaro, spero che qualcuno mi aiuti e grazie in anticipo per aiutarmi a risolvere questo problema

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320

    Re: [VB] inserire Xml in un datageidview?

    Originariamente inviato da alleprimearmi
    Salve a tutti, questo è il mio primo post, spero di aver postato nella parte giusta del forum.
    No: Visual Basic viene trattato nel forum chiamato "Visual Basic e .NET Framework".
    Inoltre, per quanto riguarda VB va sempre specificata la versione, anche nel titolo.
    Quando si posta del codice, si devono utilizzare gli appositi tag CODE.

    Tutto questo c'è scritto nel regolamento interno di queste sezioni.

    Correggo dove possibile e sposto.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Come non detto ho sbagliato da tutte le parti
    Chideo scusa a tutti, ho messo a posto il titolo.

    Se qualkuno ha ankora voglia di rispondermi sono tutt'orecchi

  4. #4
    Niente da fare, ho provato in tutti i modi ma non ce l'ho fatta; quindi ho deciso di cambiare strategia e visualizzare uno ad uno i vari tag in diverse text box grazie alla proprietà databindings.

    Ora però mi è sorto un nuovo problema: ho incontrato un altro file xml con una formattazione particolare:

    codice:
    <?xml version="1.0" encoding="utf-8" ?> 
    - <Connections>
    - <Connection>
      <Nome>Conn1</Nome> 
    - <ConnectionString>
      <NOMEAPP>App1</NOMEAPP> 
      <PROVIDER>SQLOLEDB.1</PROVIDER> 
      <DATASOURCE>server1</DATASOURCE> 
      <CATALOG>databas1</CATALOG> 
      <USERID>user1</USERID> 
      <PASSWORD /> 
      <LANGUAGE>ITALIAN</LANGUAGE> 
      </ConnectionString>
      <PathSQL>c:\Programmi\SQL</PathSQL> 
      <Tabelle /> 
      </Connection>
    - <Connection>
      <Nome>Conn2</Nome> 
    - <ConnectionString>
      <NOMEAPP>App2</NOMEAPP> 
      <PROVIDER>server2</PROVIDER> 
      <DATASOURCE>database2</DATASOURCE> 
      <CATALOG /> 
      <USERID>user2</USERID> 
      <PASSWORD>password</PASSWORD> 
      <LANGUAGE>ITALIAN</LANGUAGE> 
      </ConnectionString>
      <PathSQL>C:\SQL</PathSQL> 
    - <Tabelle>
    -  
      <Tabella NomeLogico="nomelogico1">nomefisico1</Tabella> 
      <Tabella NomeLogico="nomelogico2">nomefisico2</Tabella> 
      <Tabella NomeLogico="nomelogico3">nomefisico3</Tabella> 
      -  
      <Tabella NomeLogico="nomelogico4">nomefisico4</Tabella> 
      <Tabella NomeLogico="nomelogico5">nomefisico5</Tabella> 
      </Tabelle>
      </Connection>
      </Connections>

    Su questo xml ho dovuto visualizzare i tag di connection(NomeConn e pathSQL) e connectionstring(PROVIDER,NOMEAPP,LANGUAGE,ecc..) in alcune textbox e me la sono cavata con questo codice inserendo i seguenti elementi nel mio windows form:

    Connection1:Oggetto DataSet tipizzato
    Gli altri si capiscono credo

    codice:
    Private Sub Pvisualizza_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Pvisualizza.Click
            liberarisorsetxt()
            Connections1.Clear()
            Connections1.ReadXml(TPercorso.Text)
            ComboBox1.Enabled = True
    
        End Sub
    
        Private Sub Psalva_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Psalva.Click
            Connections1.WriteXml(TPercorso.Text)
        End Sub
    
        Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
            TPercorso.Text = "C:/file.xml"
            ComboBox1.DataSource = Connections1.Connection
            ComboBox1.DisplayMember = Connections1.Connection.NomeColumn.ToString
            ComboBox1.ValueMember = Connections1.Connection.Connection_IdColumn.ToString
            ComboBox1.Enabled = False
                  
    
    
        End Sub
    
               Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged
            
    If (Pvisualizza.Focused = True) Then
                Exit Sub
            End If
    
            liberarisorsetxt()
    
    
            TNomeConn.DataBindings.Add("Text", Connections1.Connection.Rows(ComboBox1.SelectedIndex), "Nome")
            TProvider.DataBindings.Add("Text", Connections1.ConnectionString.Rows(ComboBox1.SelectedIndex), "PROVIDER")
            Tserver.DataBindings.Add("Text", Connections1.ConnectionString.Rows(ComboBox1.SelectedIndex), "DATASOURCE")
            TDatabase.DataBindings.Add("Text", Connections1.ConnectionString.Rows(ComboBox1.SelectedIndex), "CATALOG")
            TUtente.DataBindings.Add("Text", Connections1.ConnectionString.Rows(ComboBox1.SelectedIndex), "USERID")
            Tpassword.DataBindings.Add("Text", Connections1.ConnectionString.Rows(ComboBox1.SelectedIndex), "PASSWORD")
            Tlanguage.DataBindings.Add("Text", Connections1.ConnectionString.Rows(ComboBox1.SelectedIndex), "LANGUAGE")
            TPathSQL.DataBindings.Add("Text", Connections1.Connection.Rows(ComboBox1.SelectedIndex), "PathSQL")
            DataGridView1.DataSource = Connections1.Tabella
    DataGridView1.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.AllCells)
                End Sub
    
        Public Sub liberarisorsetxt()
            TNomeConn.DataBindings.Clear()
            TProvider.DataBindings.Clear()
            Tserver.DataBindings.Clear()
            TDatabase.DataBindings.Clear()
            TUtente.DataBindings.Clear()
            Tpassword.DataBindings.Clear()
            Tlanguage.DataBindings.Clear()
            TPathSQL.DataBindings.Clear()
            DataGridView1.DataBindings.Clear()
           
            TNomeConn.Clear()
            TProvider.Clear()
            Tserver.Clear()
            TDatabase.Clear()
            TUtente.Clear()
            Tpassword.Clear()
            Tlanguage.Clear()
            TPathSQL.Clear()
        End Sub
    
    
    End Class
    In pratica quando premo visualizza nella combobox si caricano i nomi dei vari tag <connection>(in questo caso si caricano Conn1 e Conn2) e, selezionando uno di questi nomi delle connessioni dalla combobox nelle varie textbox compaiono i vari tag relativi a QUELLA connessione.
    Fino a qui tutto corretto, il problema risiede nel datageidview:
    Infatti esso mi mostra tutte le tabelle non quelle della SINGOLA connessione selezionata.
    Ho provato di tutto, ma non riesco a selezionare i singoli tag<tabelle> delle singole connessioni da dare in "pasto" al datasource del datagridview.

    Inoltre mi piacerebbe creare un bottone per poter inserire una nuova connection completa di tutti i tag (compreso ConnectionString che a sua volta contiene altri tag ) ma purtroppo riesco a creare solo dei file xml NON indentati(cioè ConnectionString non è all'interno del Tag Connection, dove dovrebbe essere );inoltre dovrei utilizzare la connection1 per aggiungere un nuova connection e quindi utilizzare il dataset per scrivere nel file Xml

    Se potete aiutarmi ve ne sarei molto grato e vi ringrazio in anticipo per il vostro tempo.

  5. #5
    Utente di HTML.it L'avatar di albgen
    Registrato dal
    Jun 2005
    Messaggi
    3,249

    Re: [VB.NET] inserire Xml in un datageidview?

    Originariamente inviato da alleprimearmi
    ...
    codice:
    <?xml version="1.0" standalone="yes"?>
    <Connections xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
      <Connection>
        <Nome>prova</Nome>
        <ConnectionString>
          <NOMEAPP>prova1</NOMEAPP>
          <PROVIDER>SQLOLEDB.1</PROVIDER>
          <DATASOURCE>nomeserver</DATASOURCE>
          <CATALOG>nomedatabase</CATALOG>
          <USERID>user</USERID>
          <PASSWORD>password <PASSWORD />
          <LANGUAGE>ITALIAN</LANGUAGE>
        </ConnectionString>
      </Connection>
      <Tabelle />
    </Connections>
    ...
    il tag di chiusura di password dovrebbe essere </PASSWORD> e non <PASSWORD />
    I got the remedy

  6. #6
    si hai ragione, ho sbagliato a scriverlo;

    Correggendolo però non riesco lo stesso, hai qualke consiglio?

  7. #7
    Utente di HTML.it L'avatar di albgen
    Registrato dal
    Jun 2005
    Messaggi
    3,249
    Originariamente inviato da alleprimearmi
    si hai ragione, ho sbagliato a scriverlo;

    Correggendolo però non riesco lo stesso, hai qualke consiglio?
    il consiglio che ti posso dare è questo.
    Crea un dataset tipizzato con le tabelle e i campi che vuoi.
    Utilizzi la funzione WriteXml del dataset e vai a vederti l'xml prodotto...

    più semplice di cosi'
    I got the remedy

  8. #8
    Scusami ma sono un pò confuso:
    Utilizzi la funzione WriteXml del dataset e vai a vederti l'xml prodotto
    come mi consigli di usarla questa funzione per scrivere una nuova connessione? con il writexml se non sbaglio andrei a sostituire i valori nelle textbox con quelli appena impostati e così modificherei le voci già esistenti dell'xml, ma creare una nuova connessione(che non è ancora presente nell'xml)è una cosa diversa ;infatti se noti nel mio codice, sotto il pulsante salva uso priprio quella funzione, ma per creare una nuova connessione non ho proprio idea di come fare(avrò fatto decine di tentativi )

  9. #9
    Utente di HTML.it L'avatar di albgen
    Registrato dal
    Jun 2005
    Messaggi
    3,249
    Originariamente inviato da alleprimearmi
    Scusami ma sono un pò confuso:


    come mi consigli di usarla questa funzione per scrivere una nuova connessione? con il writexml se non sbaglio andrei a sostituire i valori nelle textbox con quelli appena impostati e così modificherei le voci già esistenti dell'xml, ma creare una nuova connessione(che non è ancora presente nell'xml)è una cosa diversa ;infatti se noti nel mio codice, sotto il pulsante salva uso priprio quella funzione, ma per creare una nuova connessione non ho proprio idea di come fare(avrò fatto decine di tentativi )
    tu hai un dataset collegato a una griglia e questo dataset e la rappresentazione del xml, giusto?
    I got the remedy

  10. #10
    si esatto(almeno credo)
    ho un dataset tipizzato su cui ho eseguito il metodo readxml, quindi credo che contenga la rappresentazione del file xml; a proposito come lo si reinizializza per poterlo leggere di nuovo? Perchè ho visto che una delle fonti di errori è che quando rieseguo il metodo readxml non reinizializzo l'xml e guardandoci dentro ho visto che accoda i vari file xml che ha letto invece di sostituire il file appena letto con quello precedente

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.